diff --git a/.hgtags-top-repo b/.hgtags-top-repo
index 08fd371176c..75fcb5f4de4 100644
--- a/.hgtags-top-repo
+++ b/.hgtags-top-repo
@@ -361,3 +361,4 @@ f900d5afd9c83a0df8f36161c27c5e4c86a66f4c jdk-9+111
6743a8e0cab7b5f6f4a0575f6664892f0ab740af jdk-9+116
e882bcdbdac436523f3d5681611d3118a3804ea7 jdk-9+117
047f95de8f918d8ff5e8cd2636a2abb5c3c8adb8 jdk-9+118
+3463a3f14f0f0e8a68f29ac6405454f2fa2f598a jdk-9+119
diff --git a/common/autoconf/basics.m4 b/common/autoconf/basics.m4
index f295a46d3c4..6a64c47b964 100644
--- a/common/autoconf/basics.m4
+++ b/common/autoconf/basics.m4
@@ -484,6 +484,8 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
BASIC_REQUIRE_PROGS(FILE, file)
BASIC_REQUIRE_PROGS(FIND, find)
BASIC_REQUIRE_PROGS(HEAD, head)
+ BASIC_REQUIRE_PROGS(GUNZIP, gunzip)
+ BASIC_REQUIRE_PROGS(GZIP, pigz gzip)
BASIC_REQUIRE_PROGS(LN, ln)
BASIC_REQUIRE_PROGS(LS, ls)
BASIC_REQUIRE_PROGS(MKDIR, mkdir)
@@ -496,7 +498,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
BASIC_REQUIRE_PROGS(SH, sh)
BASIC_REQUIRE_PROGS(SORT, sort)
BASIC_REQUIRE_PROGS(TAIL, tail)
- BASIC_REQUIRE_PROGS(TAR, tar)
+ BASIC_REQUIRE_PROGS(TAR, gtar tar)
BASIC_REQUIRE_PROGS(TEE, tee)
BASIC_REQUIRE_PROGS(TOUCH, touch)
BASIC_REQUIRE_PROGS(TR, tr)
@@ -839,8 +841,6 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
# The spec.gmk file contains all variables for the make system.
AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in])
- # The hotspot-spec.gmk file contains legacy variables for the hotspot make system.
- AC_CONFIG_FILES([$OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in])
# The bootcycle-spec.gmk file contains support for boot cycle builds.
AC_CONFIG_FILES([$OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in])
# The buildjdk-spec.gmk file contains support for building a buildjdk when cross compiling.
@@ -1009,11 +1009,36 @@ AC_DEFUN([BASIC_CHECK_FIND_DELETE],
AC_SUBST(FIND_DELETE)
])
+AC_DEFUN([BASIC_CHECK_TAR],
+[
+ # Test which kind of tar was found
+ if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
+ TAR_TYPE="gnu"
+ elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
+ TAR_TYPE="solaris"
+ fi
+ AC_MSG_CHECKING([what type of tar was found])
+ AC_MSG_RESULT([$TAR_TYPE])
+
+ if test "x$TAR_TYPE" = "xgnu"; then
+ TAR_INCLUDE_PARAM="T"
+ TAR_SUPPORTS_TRANSFORM="true"
+ else
+ TAR_INCLUDE_PARAM="I"
+ TAR_SUPPORTS_TRANSFORM="false"
+ fi
+ AC_SUBST(TAR_INCLUDE_PARAM)
+ AC_SUBST(TAR_SUPPORTS_TRANSFORM)
+])
+
AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
[
BASIC_CHECK_GNU_MAKE
BASIC_CHECK_FIND_DELETE
+ BASIC_CHECK_TAR
# These tools might not be installed by default,
# need hint on how to install them.
diff --git a/common/autoconf/buildjdk-spec.gmk.in b/common/autoconf/buildjdk-spec.gmk.in
index 818f21eed95..c4b7d9051cc 100644
--- a/common/autoconf/buildjdk-spec.gmk.in
+++ b/common/autoconf/buildjdk-spec.gmk.in
@@ -134,8 +134,9 @@ ifeq ($(JVM_INTERPRETER), cpp)
endif
HOTSPOT_MAKE_ARGS := product docs export_product
-# Control wether Hotspot runs Queens test after building
-TEST_IN_BUILD := false
+
+# Control wether Hotspot builds gtest tests
+BUILD_GTEST := false
USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
diff --git a/common/autoconf/compare.sh.in b/common/autoconf/compare.sh.in
index 67a69ff73bd..f7e2003ca32 100644
--- a/common/autoconf/compare.sh.in
+++ b/common/autoconf/compare.sh.in
@@ -48,6 +48,7 @@ export EXPR="@EXPR@"
export FILE="@FILE@"
export FIND="@FIND@"
export GREP="@GREP@"
+export GUNZIP="@GUNZIP@"
export LDD="@LDD@"
export LN="@LN@"
export MKDIR="@MKDIR@"
@@ -63,10 +64,11 @@ export SED="@SED@"
export SORT="@SORT@"
export STAT="@STAT@"
export STRIP="@STRIP@ @STRIPFLAGS@"
+export TAR="@TAR@"
export TEE="@TEE@"
export UNIQ="@UNIQ@"
export UNPACK200="@FIXPATH@ @BOOT_JDK@/bin/unpack200"
-export UNARCHIVE="@UNZIP@ -q"
+export UNARCHIVE="@UNZIP@ -q -o"
export SRC_ROOT="@TOPDIR@"
export OUTPUT_ROOT="@OUTPUT_ROOT@"
diff --git a/common/autoconf/configure.ac b/common/autoconf/configure.ac
index 291851f8d10..0079a944dac 100644
--- a/common/autoconf/configure.ac
+++ b/common/autoconf/configure.ac
@@ -207,6 +207,7 @@ JDKOPT_SETUP_CODE_COVERAGE
# Need toolchain to setup dtrace
HOTSPOT_SETUP_DTRACE
HOTSPOT_SETUP_JVM_FEATURES
+HOTSPOT_ENABLE_DISABLE_GTEST
###############################################################################
#
@@ -226,7 +227,6 @@ LIB_SETUP_LIBRARIES
#
###############################################################################
-HOTSPOT_SETUP_LEGACY_BUILD
JDKOPT_DETECT_INTREE_EC
JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER
diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh
index f40198f8da3..ef4a2674e9f 100644
--- a/common/autoconf/generated-configure.sh
+++ b/common/autoconf/generated-configure.sh
@@ -652,21 +652,7 @@ MEMORY_SIZE
NUM_CORES
BUILD_FAILURE_HANDLER
ENABLE_INTREE_EC
-JVM_VARIANT_CORE
-JVM_VARIANT_ZEROSHARK
-JVM_VARIANT_ZERO
-JVM_VARIANT_HOTSPOT
-JVM_VARIANT_MINIMAL1
-JVM_VARIANT_CLIENT
-JVM_VARIANT_SERVER
-JVM_VARIANTS_COMMA
-TEST_IN_BUILD
-HOTSPOT_MAKE_ARGS
-MACOSX_UNIVERSAL
-DEBUG_CLASSFILES
-FASTDEBUG
-VARIANT
-USE_NEW_HOTSPOT_BUILD
+STLPORT_LIB
LIBZIP_CAN_USE_MMAP
LIBDL
LIBM
@@ -702,6 +688,7 @@ LIBCXX
STATIC_CXX_SETTING
FIXPATH_DETACH_FLAG
FIXPATH
+BUILD_GTEST
VALID_JVM_FEATURES
JVM_FEATURES_custom
JVM_FEATURES_zeroshark
@@ -963,6 +950,8 @@ OTOOL
LDD
ZIP
UNZIP
+TAR_SUPPORTS_TRANSFORM
+TAR_INCLUDE_PARAM
FIND_DELETE
OUTPUT_SYNC
OUTPUT_SYNC_SUPPORTED
@@ -995,6 +984,9 @@ HOTSPOT_BUILD_CPU_ARCH
HOTSPOT_BUILD_CPU
HOTSPOT_BUILD_OS_TYPE
HOTSPOT_BUILD_OS
+OPENJDK_BUILD_BUNDLE_PLATFORM
+OPENJDK_BUILD_CPU_BUNDLE
+OPENJDK_BUILD_OS_BUNDLE
OPENJDK_BUILD_OS_EXPORT_DIR
OPENJDK_BUILD_CPU_JLI_CFLAGS
OPENJDK_BUILD_CPU_OSARCH
@@ -1009,6 +1001,9 @@ HOTSPOT_TARGET_OS_TYPE
HOTSPOT_TARGET_OS
DEFINE_CROSS_COMPILE_ARCH
LP64
+OPENJDK_TARGET_BUNDLE_PLATFORM
+OPENJDK_TARGET_CPU_BUNDLE
+OPENJDK_TARGET_OS_BUNDLE
OPENJDK_TARGET_OS_EXPORT_DIR
OPENJDK_TARGET_CPU_JLI_CFLAGS
OPENJDK_TARGET_CPU_OSARCH
@@ -1078,6 +1073,8 @@ MKTEMP
MKDIR
LS
LN
+GZIP
+GUNZIP
HEAD
FIND
FILE
@@ -1202,6 +1199,7 @@ enable_native_coverage
enable_dtrace
with_jvm_features
with_jvm_interpreter
+enable_hotspot_gtest
with_stdc__lib
with_msvcr_dll
with_msvcp_dll
@@ -1227,8 +1225,6 @@ with_lcms
with_dxsdk
with_dxsdk_lib
with_dxsdk_include
-enable_new_hotspot_build
-enable_hotspot_test_in_build
enable_jtreg_failure_handler
with_num_cores
with_memory_size
@@ -1262,6 +1258,8 @@ EXPR
FILE
FIND
HEAD
+GUNZIP
+GZIP
LN
LS
MKDIR
@@ -1996,15 +1994,11 @@ Optional Features:
--enable-dtrace[=yes/no/auto]
enable dtrace. Default is auto, where dtrace is
enabled if all dependencies are present.
+ --disable-hotspot-gtest Disables building of the Hotspot unit tests
--disable-freetype-bundling
disable bundling of the freetype library with the
build result [enabled on Windows or when using
--with-freetype, disabled otherwise]
- --disable-new-hotspot-build
- disable the new hotspot build system (use the old)
- [enabled]
- --enable-hotspot-test-in-build
- run the Queens test after Hotspot build [disabled]
--enable-jtreg-failure-handler
forces build of the jtreg failure handler to be
enabled, missing dependencies become fatal errors.
@@ -2205,6 +2199,8 @@ Some influential environment variables:
FILE Override default value for FILE
FIND Override default value for FIND
HEAD Override default value for HEAD
+ GUNZIP Override default value for GUNZIP
+ GZIP Override default value for GZIP
LN Override default value for LN
LS Override default value for LS
MKDIR Override default value for MKDIR
@@ -3707,6 +3703,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
# Check if build directory is on local disk. If not possible to determine,
# we prefer to claim it's local.
# Argument 1: directory to test
@@ -4303,9 +4301,8 @@ VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
#
-###############################################################################
-# Support for old hotspot build. Remove once new hotspot build has proven
-# to work satisfactory.
+################################################################################
+# Check if gtest should be built
#
@@ -4732,6 +4729,13 @@ VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
################################################################################
+################################################################################
+# libstlport.so.1 is needed for running gtest on Solaris. Find it to
+# redistribute it in the test image.
+################################################################################
+
+
+
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -5076,7 +5080,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1462970869
+DATE_WHEN_GENERATED=1463732692
###############################################################################
#
@@ -8401,6 +8405,414 @@ $as_echo "$tool_specified" >&6; }
+ # Publish this variable in the help.
+
+
+ if [ -z "${GUNZIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gunzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GUNZIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GUNZIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GUNZIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGUNZIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gunzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GUNZIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GUNZIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GUNZIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GUNZIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
+$as_echo_n "checking for GUNZIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GUNZIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GUNZIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GUNZIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GUNZIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GUNZIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GUNZIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
+$as_echo_n "checking for GUNZIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GUNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$GUNZIP" = x; then
+ as_fn_error $? "Could not find required tool for GUNZIP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${GZIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in pigz gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GZIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GZIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GZIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGZIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in pigz gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GZIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GZIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GZIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GZIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
+$as_echo_n "checking for GZIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GZIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GZIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GZIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GZIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GZIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GZIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
+$as_echo_n "checking for GZIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$GZIP" = x; then
+ as_fn_error $? "Could not find required tool for GZIP" "$LINENO" 5
+ fi
+
+
+
+
+
# Publish this variable in the help.
@@ -10854,7 +11266,7 @@ $as_echo "$tool_specified" >&6; }
if [ -z "${TAR+x}" ]; then
# The variable is not set by user, try to locate tool using the code snippet
- for ac_prog in tar
+ for ac_prog in gtar tar
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -10912,7 +11324,7 @@ done
$as_echo "$as_me: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&2;}
fi
# Try to locate tool using the code snippet
- for ac_prog in tar
+ for ac_prog in gtar tar
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -15428,6 +15840,23 @@ $as_echo "$COMPILE_TYPE" >&6; }
fi
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_OS_BUNDLE="osx"
+ else
+ OPENJDK_TARGET_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_TARGET_CPU_BUNDLE="x64"
+ else
+ OPENJDK_TARGET_CPU_BUNDLE="$OPENJDK_TARGET_CPU"
+ fi
+ OPENJDK_TARGET_BUNDLE_PLATFORM="${OPENJDK_TARGET_OS_BUNDLE}-${OPENJDK_TARGET_CPU_BUNDLE}"
+
+
+
+
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
A_LP64="LP64:="
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
@@ -15584,6 +16013,23 @@ $as_echo "$COMPILE_TYPE" >&6; }
fi
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_OS_BUNDLE="osx"
+ else
+ OPENJDK_BUILD_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_BUNDLE="x64"
+ else
+ OPENJDK_BUILD_CPU_BUNDLE="$OPENJDK_BUILD_CPU"
+ fi
+ OPENJDK_BUILD_BUNDLE_PLATFORM="${OPENJDK_BUILD_OS_BUNDLE}-${OPENJDK_BUILD_CPU_BUNDLE}"
+
+
+
+
if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
A_LP64="LP64:="
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
@@ -16297,7 +16743,10 @@ $as_echo "$JVM_VARIANTS" >&6; }
# Check that the selected variants are valid
# grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
- INVALID_VARIANTS=`$GREP -Fvx "${VALID_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ # Notice that the original variant failes on SLES 10 and 11
+ NEEDLE=${VALID_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_VARIANTS" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: Unknown variant(s) specified: $INVALID_VARIANTS" >&5
$as_echo "$as_me: Unknown variant(s) specified: $INVALID_VARIANTS" >&6;}
@@ -16306,7 +16755,9 @@ $as_echo "$as_me: Unknown variant(s) specified: $INVALID_VARIANTS" >&6;}
# All "special" variants share the same output directory ("server")
VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
- INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ NEEDLE=${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
as_fn_error $? "You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS." "$LINENO" 5
fi
@@ -17016,9 +17467,6 @@ $as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is inval
# The spec.gmk file contains all variables for the make system.
ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in"
- # The hotspot-spec.gmk file contains legacy variables for the hotspot make system.
- ac_config_files="$ac_config_files $OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in"
-
# The bootcycle-spec.gmk file contains support for boot cycle builds.
ac_config_files="$ac_config_files $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in"
@@ -20699,6 +21147,30 @@ $as_echo "yes" >&6; }
+ # Test which kind of tar was found
+ if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
+ TAR_TYPE="gnu"
+ elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
+ TAR_TYPE="solaris"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what type of tar was found" >&5
+$as_echo_n "checking what type of tar was found... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR_TYPE" >&5
+$as_echo "$TAR_TYPE" >&6; }
+
+ if test "x$TAR_TYPE" = "xgnu"; then
+ TAR_INCLUDE_PARAM="T"
+ TAR_SUPPORTS_TRANSFORM="true"
+ else
+ TAR_INCLUDE_PARAM="I"
+ TAR_SUPPORTS_TRANSFORM="false"
+ fi
+
+
+
+
# These tools might not be installed by default,
# need hint on how to install them.
@@ -23790,9 +24262,6 @@ fi
if test "x$OPENJDK_TARGET_OS" = xaix ; then
INCLUDE_SA=false
fi
- if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
- INCLUDE_SA=false
- fi
# Compress jars
@@ -52948,6 +53417,49 @@ fi
+ # Check whether --enable-hotspot-gtest was given.
+if test "${enable_hotspot_gtest+set}" = set; then :
+ enableval=$enable_hotspot_gtest;
+fi
+
+
+ if test -e "$HOTSPOT_TOPDIR/test/native"; then
+ GTEST_DIR_EXISTS="true"
+ else
+ GTEST_DIR_EXISTS="false"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Hotspot gtest unit tests should be built" >&5
+$as_echo_n "checking if Hotspot gtest unit tests should be built... " >&6; }
+ if test "x$enable_hotspot_gtest" = "xyes"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ BUILD_GTEST="true"
+ else
+ as_fn_error $? "Cannot build gtest without the test source" "$LINENO" 5
+ fi
+ elif test "x$enable_hotspot_gtest" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ BUILD_GTEST="false"
+ elif test "x$enable_hotspot_gtest" = "x"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ BUILD_GTEST="true"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ BUILD_GTEST="false"
+ fi
+ else
+ as_fn_error $? "--enable-gtest must be either yes or no" "$LINENO" 5
+ fi
+
+
+
+
###############################################################################
#
# Check dependencies for external and internal libraries.
@@ -64076,6 +64588,157 @@ fi
+ if test "$OPENJDK_TARGET_OS" = "solaris"; then
+ # Find the root of the Solaris Studio installation from the compiler path
+ SOLARIS_STUDIO_DIR="$(dirname $CC)/.."
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4$OPENJDK_TARGET_CPU_ISADIR/libstlport.so.1"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libstlport.so.1" >&5
+$as_echo_n "checking for libstlport.so.1... " >&6; }
+ if test -f "$STLPORT_LIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, $STLPORT_LIB" >&5
+$as_echo "yes, $STLPORT_LIB" >&6; }
+
+ # Only process if variable expands to non-empty
+
+ if test "x$STLPORT_LIB" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$STLPORT_LIB"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of STLPORT_LIB" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ STLPORT_LIB="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STLPORT_LIB to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting STLPORT_LIB to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$STLPORT_LIB"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ STLPORT_LIB="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STLPORT_LIB to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting STLPORT_LIB to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$STLPORT_LIB"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of STLPORT_LIB, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ STLPORT_LIB="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ STLPORT_LIB="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, not found at $STLPORT_LIB" >&5
+$as_echo "no, not found at $STLPORT_LIB" >&6; }
+ as_fn_error $? "Failed to find libstlport.so.1, cannot build Hotspot gtests" "$LINENO" 5
+ fi
+
+ fi
+
+
+
@@ -64094,144 +64757,6 @@ fi
###############################################################################
- # Check whether --enable-new-hotspot-build was given.
-if test "${enable_new_hotspot_build+set}" = set; then :
- enableval=$enable_new_hotspot_build;
-fi
-
-
- if test "x$enable_new_hotspot_build" = "x" || test "x$enable_new_hotspot_build" = "xyes"; then
- USE_NEW_HOTSPOT_BUILD=true
- else
- USE_NEW_HOTSPOT_BUILD=false
- fi
-
-
- case $HOTSPOT_DEBUG_LEVEL in
- product )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- ;;
- fastdebug )
- VARIANT="DBG"
- FASTDEBUG="true"
- DEBUG_CLASSFILES="true"
- ;;
- debug )
- VARIANT="DBG"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="true"
- ;;
- optimized )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- ;;
- esac
-
-
-
-
- if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
- MACOSX_UNIVERSAL="true"
- fi
-
-
-
- # Make sure JVM_VARIANTS_COMMA use minimal1 for backwards compatibility
- JVM_VARIANTS_COMMA=`$ECHO ,$JVM_VARIANTS_OPT, | $SED -e 's/,minimal,/,minimal1,/'`
-
- JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
- JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
- JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,minimal1\?,/!s/.*/false/g' -e '/,minimal1\?,/s/.*/true/g'`
- JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
- JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
- JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
- JVM_VARIANT_CUSTOM=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,custom,/!s/.*/false/g' -e '/,custom,/s/.*/true/g'`
-
- #####
- # Generate the legacy makefile targets for hotspot.
- HOTSPOT_TARGET=""
-
- if test "x$JVM_VARIANT_SERVER" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL} "
- fi
-
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}1 "
- fi
-
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}minimal1 "
- fi
-
- if test "x$JVM_VARIANT_ZERO" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}zero "
- fi
-
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark "
- fi
-
- if test "x$JVM_VARIANT_CORE" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core "
- fi
-
- HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_DEBUG_LEVEL"
-
- # On Macosx universal binaries are produced, but they only contain
- # 64 bit intel. This invalidates control of which jvms are built
- # from configure, but only server is valid anyway. Fix this
- # when hotspot makefiles are rewritten.
- if test "x$MACOSX_UNIVERSAL" = xtrue; then
- HOTSPOT_TARGET=universal_${HOTSPOT_DEBUG_LEVEL}
- fi
-
- HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
-
-
- # Control wether Hotspot runs Queens test after build.
- # Check whether --enable-hotspot-test-in-build was given.
-if test "${enable_hotspot_test_in_build+set}" = set; then :
- enableval=$enable_hotspot_test_in_build;
-else
- enable_hotspot_test_in_build=no
-fi
-
- if test "x$enable_hotspot_test_in_build" = "xyes"; then
- TEST_IN_BUILD=true
- else
- TEST_IN_BUILD=false
- fi
-
-
- if test "x$USE_NEW_HOTSPOT_BUILD" = xfalse; then
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- as_fn_error $? "You cannot build a client JVM for a 64-bit machine." "$LINENO" 5
- fi
- fi
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- as_fn_error $? "You cannot build a minimal JVM for a 64-bit machine." "$LINENO" 5
- fi
- fi
- if test "x$JVM_VARIANT_CUSTOM" = xtrue; then
- as_fn_error $? "You cannot build a custom JVM using the old hotspot build system." "$LINENO" 5
- fi
- fi
-
-
-
-
-
-
-
-
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
$as_echo_n "checking if elliptic curve crypto implementation is present... " >&6; }
@@ -65977,7 +66502,9 @@ $as_echo_n "checking JVM features for JVM variant '$variant'... " >&6; }
JVM_FEATURES_TO_TEST=${!features_var_name}
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_FEATURES_TO_TEST" >&5
$as_echo "$JVM_FEATURES_TO_TEST" >&6; }
- INVALID_FEATURES=`$GREP -Fvx "${VALID_JVM_FEATURES// /$'\n'}" <<< "${JVM_FEATURES_TO_TEST// /$'\n'}"`
+ NEEDLE=${VALID_JVM_FEATURES// /$'\n'}
+ STACK=${JVM_FEATURES_TO_TEST// /$'\n'}
+ INVALID_FEATURES=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_FEATURES" != x; then
as_fn_error $? "Invalid JVM feature(s): $INVALID_FEATURES" "$LINENO" 5
fi
@@ -66697,7 +67224,6 @@ for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"$OUTPUT_ROOT/spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in" ;;
- "$OUTPUT_ROOT/hotspot-spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in" ;;
"$OUTPUT_ROOT/bootcycle-spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in" ;;
"$OUTPUT_ROOT/buildjdk-spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-spec.gmk.in" ;;
"$OUTPUT_ROOT/compare.sh") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.sh.in" ;;
diff --git a/common/autoconf/hotspot-spec.gmk.in b/common/autoconf/hotspot-spec.gmk.in
deleted file mode 100644
index 50d790876a6..00000000000
--- a/common/autoconf/hotspot-spec.gmk.in
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# Chaining of spec files
-HOTSPOT_SPEC:=$(dir $(SPEC))hotspot-spec.gmk
-override SPEC=$(HOTSPOT_SPEC)
-# Now include the base spec.gmk file
-include $(BASE_SPEC)
-
-# Additional legacy variables defined for Hotspot
-
-@SET_OPENJDK@
-@HOTSPOT_SET_WARNINGS_AS_ERRORS@
-
-# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
-@BUILD_HEADLESS@
-
-JVM_VARIANTS:=@JVM_VARIANTS_COMMA@
-
-JVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
-JVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
-JVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
-JVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
-JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
-JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
-JVM_VARIANT_CUSTOM:=@JVM_VARIANT_HOTSPOT@
-
-# Legacy setting: OPT or DBG
-VARIANT:=@VARIANT@
-# Legacy setting: true or false
-FASTDEBUG:=@FASTDEBUG@
-# Legacy setting: debugging the class files?
-DEBUG_CLASSFILES:=@DEBUG_CLASSFILES@
-
-ALT_CUPS_HEADERS_PATH:=$(patsubst -I%,%,$(filter -I%,@CUPS_CFLAGS@))
-
-# The HOSTCC/HOSTCXX is Hotspot terminology for the BUILD_CC/BUILD_CXX, i.e. the
-# compiler that produces code that can be run on the build platform.
-HOSTCC:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CC@ $(BUILD_SYSROOT_CFLAGS)
-HOSTCXX:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CXX@ $(BUILD_SYSROOT_CFLAGS)
-
-####################################################
-#
-# Legacy Hotspot support
-
-# If cross compiling, then define CROSS_COMPILE_ARCH:=cpu_name here.
-@DEFINE_CROSS_COMPILE_ARCH@
-
-# Old name for OPENJDK_TARGET_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc)
-PLATFORM=$(OPENJDK_TARGET_OS)
-# 32 or 64 bit
-ARCH_DATA_MODEL=$(OPENJDK_TARGET_CPU_BITS)
-
-ALT_BOOTDIR=$(BOOT_JDK)
-# Can be /sparcv9 or /amd64 on Solaris
-ISA_DIR=$(OPENJDK_TARGET_CPU_ISADIR)
-# Yet another name for arch used for an extra subdir below the jvm lib.
-# Uses i386 and amd64, instead of x86 and x86_64.
-LIBARCH=$(OPENJDK_TARGET_CPU_LEGACY_LIB)
-# Set the cpu architecture
-ARCH=$(OPENJDK_TARGET_CPU_ARCH)
-# Legacy setting for building for a 64 bit machine.
-# 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)
-
-ifeq ($(HOTSPOT_TARGET_CPU), zero)
- CC_INTERP=true
-endif
-
-HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@ @STATIC_CXX_SETTING@
-# Control wether Hotspot runs Queens test after building
-TEST_IN_BUILD=@TEST_IN_BUILD@
-
-USE_CLANG := @USE_CLANG@
-
-# For hotspot, override compiler/tools definition to not include FIXPATH prefix.
-# Hotspot has its own handling on the Windows path situation.
-CXX:=@CCACHE@ @ICECC@ @HOTSPOT_CXX@
-LD:=@HOTSPOT_LD@
-MT:=@HOTSPOT_MT@
-RC:=@HOTSPOT_RC@
-
-EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(CFLAGS_CCACHE) $(NO_NULL_POINTER_CHECK_FLAG) \
- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
-EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@ $(CFLAGS_CCACHE)
-EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
-
-USE_PRECOMPILED_HEADER=@USE_PRECOMPILED_HEADER@
-
-# Hotspot expects the variable FULL_DEBUG_SYMBOLS=1/0 to control debug symbols
-# creation.
-ifeq ($(COPY_DEBUG_SYMBOLS), true)
- FULL_DEBUG_SYMBOLS=1
- # Ensure hotspot uses the objcopy that configure located
- ALT_OBJCOPY:=$(OBJCOPY)
-else
- FULL_DEBUG_SYMBOLS=0
-endif
-
-# Hotspot expects the variable ZIP_DEBUGINFO_FILES=1/0 and not true/false.
-ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
- ZIP_DEBUGINFO_FILES:=1
-else
- ZIP_DEBUGINFO_FILES:=0
-endif
-
-DEBUG_BINARIES := @DEBUG_BINARIES@
-STRIP_POLICY := @STRIP_POLICY@
-
-ifeq ($(OPENJDK_TARGET_OS), windows)
- # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
- # environment variables (in Windows path style).
- export INCLUDE:=@VS_INCLUDE@
- export LIB:=@VS_LIB@
-endif
-
-# Sneak this in via the spec.gmk file, since we don't want to mess around too much with the Hotspot make files.
-# This is needed to get the LOG setting to work properly.
-include $(SRC_ROOT)/make/common/MakeBase.gmk
diff --git a/common/autoconf/hotspot.m4 b/common/autoconf/hotspot.m4
index 4fffa86983d..18b6ec0aa21 100644
--- a/common/autoconf/hotspot.m4
+++ b/common/autoconf/hotspot.m4
@@ -93,7 +93,10 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS],
# Check that the selected variants are valid
# grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
- INVALID_VARIANTS=`$GREP -Fvx "${VALID_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ # Notice that the original variant failes on SLES 10 and 11
+ NEEDLE=${VALID_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_VARIANTS" != x; then
AC_MSG_NOTICE([Unknown variant(s) specified: $INVALID_VARIANTS])
AC_MSG_ERROR([The available JVM variants are: $VALID_JVM_VARIANTS])
@@ -101,7 +104,9 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS],
# All "special" variants share the same output directory ("server")
VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
- INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ NEEDLE=${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
AC_MSG_ERROR([You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS.])
fi
@@ -293,146 +298,51 @@ AC_DEFUN_ONCE([HOTSPOT_VALIDATE_JVM_FEATURES],
features_var_name=JVM_FEATURES_$variant
JVM_FEATURES_TO_TEST=${!features_var_name}
AC_MSG_RESULT([$JVM_FEATURES_TO_TEST])
- INVALID_FEATURES=`$GREP -Fvx "${VALID_JVM_FEATURES// /$'\n'}" <<< "${JVM_FEATURES_TO_TEST// /$'\n'}"`
+ NEEDLE=${VALID_JVM_FEATURES// /$'\n'}
+ STACK=${JVM_FEATURES_TO_TEST// /$'\n'}
+ INVALID_FEATURES=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
if test "x$INVALID_FEATURES" != x; then
AC_MSG_ERROR([Invalid JVM feature(s): $INVALID_FEATURES])
fi
done
])
-###############################################################################
-# Support for old hotspot build. Remove once new hotspot build has proven
-# to work satisfactory.
+################################################################################
+# Check if gtest should be built
#
-AC_DEFUN_ONCE([HOTSPOT_SETUP_LEGACY_BUILD],
+AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_GTEST],
[
- AC_ARG_ENABLE(new-hotspot-build, [AS_HELP_STRING([--disable-new-hotspot-build],
- [disable the new hotspot build system (use the old) @<:@enabled@:>@])])
+ AC_ARG_ENABLE([hotspot-gtest], [AS_HELP_STRING([--disable-hotspot-gtest],
+ [Disables building of the Hotspot unit tests])])
- if test "x$enable_new_hotspot_build" = "x" || test "x$enable_new_hotspot_build" = "xyes"; then
- USE_NEW_HOTSPOT_BUILD=true
- else
- USE_NEW_HOTSPOT_BUILD=false
- fi
- AC_SUBST(USE_NEW_HOTSPOT_BUILD)
-
- case $HOTSPOT_DEBUG_LEVEL in
- product )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- ;;
- fastdebug )
- VARIANT="DBG"
- FASTDEBUG="true"
- DEBUG_CLASSFILES="true"
- ;;
- debug )
- VARIANT="DBG"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="true"
- ;;
- optimized )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- ;;
- esac
- AC_SUBST(VARIANT)
- AC_SUBST(FASTDEBUG)
- AC_SUBST(DEBUG_CLASSFILES)
-
- if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
- MACOSX_UNIVERSAL="true"
- fi
-
- AC_SUBST(MACOSX_UNIVERSAL)
-
- # Make sure JVM_VARIANTS_COMMA use minimal1 for backwards compatibility
- JVM_VARIANTS_COMMA=`$ECHO ,$JVM_VARIANTS_OPT, | $SED -e 's/,minimal,/,minimal1,/'`
-
- JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
- JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
- JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,minimal1\?,/!s/.*/false/g' -e '/,minimal1\?,/s/.*/true/g'`
- JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
- JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
- JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
- JVM_VARIANT_CUSTOM=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,custom,/!s/.*/false/g' -e '/,custom,/s/.*/true/g'`
-
- #####
- # Generate the legacy makefile targets for hotspot.
- HOTSPOT_TARGET=""
-
- if test "x$JVM_VARIANT_SERVER" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL} "
- fi
-
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}1 "
- fi
-
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}minimal1 "
- fi
-
- if test "x$JVM_VARIANT_ZERO" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}zero "
- fi
-
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark "
- fi
-
- if test "x$JVM_VARIANT_CORE" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core "
- fi
-
- HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_DEBUG_LEVEL"
-
- # On Macosx universal binaries are produced, but they only contain
- # 64 bit intel. This invalidates control of which jvms are built
- # from configure, but only server is valid anyway. Fix this
- # when hotspot makefiles are rewritten.
- if test "x$MACOSX_UNIVERSAL" = xtrue; then
- HOTSPOT_TARGET=universal_${HOTSPOT_DEBUG_LEVEL}
- fi
-
- HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
- AC_SUBST(HOTSPOT_MAKE_ARGS)
-
- # Control wether Hotspot runs Queens test after build.
- AC_ARG_ENABLE([hotspot-test-in-build], [AS_HELP_STRING([--enable-hotspot-test-in-build],
- [run the Queens test after Hotspot build @<:@disabled@:>@])],,
- [enable_hotspot_test_in_build=no])
- if test "x$enable_hotspot_test_in_build" = "xyes"; then
- TEST_IN_BUILD=true
+ if test -e "$HOTSPOT_TOPDIR/test/native"; then
+ GTEST_DIR_EXISTS="true"
else
- TEST_IN_BUILD=false
- fi
- AC_SUBST(TEST_IN_BUILD)
-
- if test "x$USE_NEW_HOTSPOT_BUILD" = xfalse; then
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- AC_MSG_ERROR([You cannot build a client JVM for a 64-bit machine.])
- fi
- fi
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- AC_MSG_ERROR([You cannot build a minimal JVM for a 64-bit machine.])
- fi
- fi
- if test "x$JVM_VARIANT_CUSTOM" = xtrue; then
- AC_MSG_ERROR([You cannot build a custom JVM using the old hotspot build system.])
- fi
+ GTEST_DIR_EXISTS="false"
fi
- AC_SUBST(JVM_VARIANTS_COMMA)
- AC_SUBST(JVM_VARIANT_SERVER)
- AC_SUBST(JVM_VARIANT_CLIENT)
- AC_SUBST(JVM_VARIANT_MINIMAL1)
- AC_SUBST(JVM_VARIANT_HOTSPOT)
- AC_SUBST(JVM_VARIANT_ZERO)
- AC_SUBST(JVM_VARIANT_ZEROSHARK)
- AC_SUBST(JVM_VARIANT_CORE)
+ AC_MSG_CHECKING([if Hotspot gtest unit tests should be built])
+ if test "x$enable_hotspot_gtest" = "xyes"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ AC_MSG_RESULT([yes, forced])
+ BUILD_GTEST="true"
+ else
+ AC_MSG_ERROR([Cannot build gtest without the test source])
+ fi
+ elif test "x$enable_hotspot_gtest" = "xno"; then
+ AC_MSG_RESULT([no, forced])
+ BUILD_GTEST="false"
+ elif test "x$enable_hotspot_gtest" = "x"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ AC_MSG_RESULT([yes])
+ BUILD_GTEST="true"
+ else
+ AC_MSG_RESULT([no])
+ BUILD_GTEST="false"
+ fi
+ else
+ AC_MSG_ERROR([--enable-gtest must be either yes or no])
+ fi
+
+ AC_SUBST(BUILD_GTEST)
])
diff --git a/common/autoconf/jdk-options.m4 b/common/autoconf/jdk-options.m4
index e34e4d927dd..076b6cfaa09 100644
--- a/common/autoconf/jdk-options.m4
+++ b/common/autoconf/jdk-options.m4
@@ -209,9 +209,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
if test "x$OPENJDK_TARGET_OS" = xaix ; then
INCLUDE_SA=false
fi
- if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
- INCLUDE_SA=false
- fi
AC_SUBST(INCLUDE_SA)
# Compress jars
diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4
index e1e91d678d6..4238a17fe82 100644
--- a/common/autoconf/libraries.m4
+++ b/common/autoconf/libraries.m4
@@ -95,6 +95,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
LIB_SETUP_LLVM
LIB_SETUP_BUNDLED_LIBS
LIB_SETUP_MISC_LIBS
+ LIB_SETUP_SOLARIS_STLPORT
])
################################################################################
@@ -189,3 +190,26 @@ AC_DEFUN_ONCE([LIB_SETUP_MISC_LIBS],
LIBZIP_CAN_USE_MMAP=true
AC_SUBST(LIBZIP_CAN_USE_MMAP)
])
+
+################################################################################
+# libstlport.so.1 is needed for running gtest on Solaris. Find it to
+# redistribute it in the test image.
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_SOLARIS_STLPORT],
+[
+ if test "$OPENJDK_TARGET_OS" = "solaris"; then
+ # Find the root of the Solaris Studio installation from the compiler path
+ SOLARIS_STUDIO_DIR="$(dirname $CC)/.."
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4$OPENJDK_TARGET_CPU_ISADIR/libstlport.so.1"
+ AC_MSG_CHECKING([for libstlport.so.1])
+ if test -f "$STLPORT_LIB"; then
+ AC_MSG_RESULT([yes, $STLPORT_LIB])
+ BASIC_FIXUP_PATH([STLPORT_LIB])
+ else
+ AC_MSG_RESULT([no, not found at $STLPORT_LIB])
+ AC_MSG_ERROR([Failed to find libstlport.so.1, cannot build Hotspot gtests])
+ fi
+ AC_SUBST(STLPORT_LIB)
+ fi
+])
+
diff --git a/common/autoconf/platform.m4 b/common/autoconf/platform.m4
index 2e99c452694..2fbac1d0dd3 100644
--- a/common/autoconf/platform.m4
+++ b/common/autoconf/platform.m4
@@ -366,6 +366,23 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
fi
AC_SUBST(OPENJDK_$1_OS_EXPORT_DIR)
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_OS_BUNDLE="osx"
+ else
+ OPENJDK_$1_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_BUNDLE="x64"
+ else
+ OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
+ fi
+ OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
+ AC_SUBST(OPENJDK_$1_OS_BUNDLE)
+ AC_SUBST(OPENJDK_$1_CPU_BUNDLE)
+ AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
+
if test "x$OPENJDK_$1_CPU_BITS" = x64; then
A_LP64="LP64:="
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in
index 467cc304b20..cace1439818 100644
--- a/common/autoconf/spec.gmk.in
+++ b/common/autoconf/spec.gmk.in
@@ -89,6 +89,10 @@ HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
+OPENJDK_TARGET_CPU_BUNDLE:=@OPENJDK_TARGET_CPU_BUNDLE@
+OPENJDK_TARGET_OS_BUNDLE:=@OPENJDK_TARGET_OS_BUNDLE@
+OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
+
# We are building on this build system.
# When not cross-compiling, it is the same as the target.
OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
@@ -232,6 +236,9 @@ JVM_FEATURES_custom := @JVM_FEATURES_custom@
VALID_JVM_FEATURES := @VALID_JVM_FEATURES@
VALID_JVM_VARIANTS := @VALID_JVM_VARIANTS@
+# Control wether Hotspot builds gtest tests
+BUILD_GTEST := @BUILD_GTEST@
+
# Control use of precompiled header in hotspot libjvm build
USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
@@ -265,6 +272,7 @@ BUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
+BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles
TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
# This does not get overridden in a bootcycle build
@@ -629,6 +637,7 @@ ECHO:=@ECHO@
EGREP:=@EGREP@
FGREP:=@FGREP@
GREP:=@GREP@
+GZIP:=@GZIP@
HEAD:=@HEAD@
LS:=@LS@
LN:=@LN@
@@ -676,6 +685,9 @@ XCODEBUILD=@XCODEBUILD@
DTRACE := @DTRACE@
FIXPATH:=@FIXPATH@
+TAR_INCLUDE_PARAM:=@TAR_INCLUDE_PARAM@
+TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@
+
# Build setup
ENABLE_JFR=@ENABLE_JFR@
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
@@ -685,6 +697,7 @@ USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
MSVCR_DLL:=@MSVCR_DLL@
MSVCP_DLL:=@MSVCP_DLL@
+STLPORT_LIB:=@STLPORT_LIB@
####################################################
#
@@ -781,11 +794,46 @@ SYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
# Interim image
INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
+# Docs image
+DOCS_IMAGE_SUBDIR := docs
+DOCS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
+
# Macosx bundles directory definitions
-JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents
-JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents
+JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
+JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle
JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
+JDK_MACOSX_CONTENTS_SUBDIR=jdk-$(VERSION_NUMBER).jdk/Contents
+JRE_MACOSX_CONTENTS_SUBDIR=jre-$(VERSION_NUMBER).jre/Contents
+JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
+JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
+
+# Bundle names
+BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
+ifeq ($(DEBUG_LEVEL), fastdebug)
+ DEBUG_PART := -debug
+else ifneq ($(DEBUG_LEVEL), release)
+ DEBUG_PART := -$(DEBUG_LEVEL)
+endif
+JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
+JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
+JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
+JRE_SYMBOLS_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).zip
+else
+ DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).tar.gz
+endif
+TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
+DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
+
+JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
+JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
+JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME)
+JRE_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_SYMBOLS_BUNDLE_NAME)
+DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DEMOS_BUNDLE_NAME)
+TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
+DOCS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME)
# This macro is called to allow inclusion of closed source counterparts.
# Unless overridden in closed sources, it expands to nothing.
diff --git a/common/bin/compare.sh b/common/bin/compare.sh
index db73426481d..0126b9c23ce 100644
--- a/common/bin/compare.sh
+++ b/common/bin/compare.sh
@@ -274,14 +274,19 @@ compare_file_types() {
$MKDIR -p $WORK_DIR
+ FILE_TYPES_FILTER="$SED \
+ -e 's/BuildID[^,]*//' \
+ -e 's/last modified: .*//' \
+ "
+
echo -n File types...
found=""
for f in `cd $OTHER_DIR && $FIND . ! -type d`
do
if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
- OF=`cd ${OTHER_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'`
- TF=`cd ${THIS_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'`
+ OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
+ TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
if [ "$OF" != "$TF" ]
then
if [ "`echo $OF | $GREP -c 'Zip archive data'`" -gt 0 ] \
@@ -320,7 +325,7 @@ compare_general_files() {
! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \
! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \
! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \
- ! -name "finish_installation" ! -name "Sparkle" \
+ ! -name "finish_installation" ! -name "Sparkle" ! -name "*.tar.gz" \
| $GREP -v "./bin/" | $SORT | $FILTER)
echo Other files with binary differences...
@@ -423,6 +428,10 @@ compare_zip_file() {
then
(cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
(cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
+ elif [ "$TYPE" = "gz" ]
+ then
+ (cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -)
+ (cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -)
else
(cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP)
(cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP)
@@ -526,10 +535,11 @@ compare_all_zip_files() {
OTHER_DIR=$2
WORK_DIR=$3
- ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" | $SORT | $FILTER )
+ ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" -o -name "*.tar.gz" \
+ | $SORT | $FILTER )
if [ -n "$ZIPS" ]; then
- echo Zip files...
+ echo Zip/tar.gz files...
return_value=0
for f in $ZIPS; do
@@ -913,7 +923,7 @@ compare_bin_file() {
FULLDUMP_MSG=" "
DIFF_FULLDUMP=
if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then
- FULLDUMP_MSG=" ! "
+ FULLDUMP_MSG=" ! "
fi
fi
fi
diff --git a/common/bin/idea.sh b/common/bin/idea.sh
index 911d309c070..2cd6f92bbb9 100644
--- a/common/bin/idea.sh
+++ b/common/bin/idea.sh
@@ -155,6 +155,14 @@ addBuildDir() {
printf "%s\n" "$mn" >> $IDEA_ANT
}
+JTREG_HOME=" "
+
+addJtregHome() {
+ DIR=`dirname $SPEC`
+ mn="`echo "$JTREG_HOME" | sed -e s@"\(.*\)####\(.*\)"@"\1$JT_HOME\2"@`"
+ printf "%s\n" "$mn" >> $IDEA_ANT
+}
+
### Generate ant.xml
rm -f $IDEA_ANT
@@ -162,6 +170,8 @@ while IFS= read -r line
do
if echo "$line" | egrep "^ .* /dev/null ; then
addModuleName
+ elif echo "$line" | egrep "^ .* /dev/null ; then
+ addJtregHome
elif echo "$line" | egrep "^ .* /dev/null ; then
addBuildDir
else
diff --git a/common/conf/jib-profiles.js b/common/conf/jib-profiles.js
index 2b7164741b1..2d752fd1074 100644
--- a/common/conf/jib-profiles.js
+++ b/common/conf/jib-profiles.js
@@ -215,11 +215,11 @@ var getJibProfilesCommon = function (input) {
var common = {};
common.dependencies = ["boot_jdk", "gnumake", "jtreg"],
- common.default_make_targets = ["product-images", "test-image"],
+ common.default_make_targets = ["product-bundles", "test-bundles"],
common.default_make_targets_debug = common.default_make_targets;
common.default_make_targets_slowdebug = common.default_make_targets;
common.configure_args = ["--enable-jtreg-failure-handler"],
- common.configure_args_32bit = ["--with-target-bits=32", "--with-jvm-variants=client,server"],
+ common.configure_args_32bit = ["--with-target-bits=32"],
common.configure_args_debug = ["--enable-debug"],
common.configure_args_slowdebug = ["--with-debug-level=slowdebug"],
common.organization = "jpg.infra.builddeps"
@@ -245,7 +245,7 @@ var getJibProfilesProfiles = function (input, common) {
target_cpu: "x64",
dependencies: concat(common.dependencies, "devkit"),
configure_args: concat(common.configure_args, "--with-zlib=system"),
- default_make_targets: concat(common.default_make_targets, "docs-image")
+ default_make_targets: concat(common.default_make_targets, "docs-bundles")
},
"linux-x86": {
@@ -254,7 +254,7 @@ var getJibProfilesProfiles = function (input, common) {
build_cpu: "x64",
dependencies: concat(common.dependencies, "devkit"),
configure_args: concat(common.configure_args, common.configure_args_32bit,
- "--with-zlib=system"),
+ "--with-jvm-variants=minimal,client,server", "--with-zlib=system"),
default_make_targets: common.default_make_targets
},
@@ -295,7 +295,8 @@ var getJibProfilesProfiles = function (input, common) {
target_cpu: "x86",
build_cpu: "x64",
dependencies: concat(common.dependencies, "devkit", "freetype"),
- configure_args: concat(common.configure_args, common.configure_args_32bit),
+ configure_args: concat(common.configure_args,
+ "--with-jvm-variants=client,server", common.configure_args_32bit),
default_make_targets: common.default_make_targets
}
};
diff --git a/corba/.hgtags b/corba/.hgtags
index feea5f070eb..db59b1cf556 100644
--- a/corba/.hgtags
+++ b/corba/.hgtags
@@ -361,3 +361,4 @@ cc30faa2da498c478e89ab062ff160653ca1b170 jdk-9+113
7dfa7377a5e601b8f740741a9a80e04c72dd04d6 jdk-9+116
7a1b36bf2fe55a9a7732489ccdd326c910329a7e jdk-9+117
8c2c2d17f7ce92a31c9ccb44a122ec62f5a85ace jdk-9+118
+daf533920b1266603b5cbdab31908d2a931c5361 jdk-9+119
diff --git a/hotspot/.hgtags b/hotspot/.hgtags
index c2bf9fb792d..754ebb60e4b 100644
--- a/hotspot/.hgtags
+++ b/hotspot/.hgtags
@@ -521,3 +521,4 @@ b64432bae5271735fd53300b2005b713e98ef411 jdk-9+114
61a214186dae6811dd989e9165e42f7dbf02acde jdk-9+116
88170d3642905b9e6cac03e8efcc976885a7e6da jdk-9+117
9b1075cac08dc836ec32e7b368415cbe3aceaf8c jdk-9+118
+15f3fe264872766bcb205696198f0c1502420e17 jdk-9+119
diff --git a/hotspot/.mx.jvmci/suite.py b/hotspot/.mx.jvmci/suite.py
index 514994c5190..3da6124dbca 100644
--- a/hotspot/.mx.jvmci/suite.py
+++ b/hotspot/.mx.jvmci/suite.py
@@ -83,6 +83,21 @@ suite = {
"workingSets" : "API,JVMCI",
},
+ "jdk.vm.ci.code.test" : {
+ "subDir" : "test/compiler/jvmci",
+ "sourceDirs" : ["src"],
+ "dependencies" : [
+ "mx:JUNIT",
+ "jdk.vm.ci.amd64",
+ "jdk.vm.ci.sparc",
+ "jdk.vm.ci.code",
+ "jdk.vm.ci.hotspot",
+ ],
+ "checkstyle" : "jdk.vm.ci.services",
+ "javaCompliance" : "1.8",
+ "workingSets" : "API,JVMCI",
+ },
+
"jdk.vm.ci.runtime" : {
"subDir" : "src/jdk.vm.ci/share/classes",
"sourceDirs" : ["src"],
@@ -164,7 +179,7 @@ suite = {
"subDir" : "test/compiler/jvmci",
"sourceDirs" : ["src"],
"dependencies" : [
- "mx:TESTNG",
+ "TESTNG",
"jdk.vm.ci.hotspot",
],
"checkstyle" : "jdk.vm.ci.services",
diff --git a/hotspot/makefiles/BuildHotspot.gmk b/hotspot/make/BuildHotspot.gmk
similarity index 100%
rename from hotspot/makefiles/BuildHotspot.gmk
rename to hotspot/make/BuildHotspot.gmk
diff --git a/hotspot/makefiles/Dist.gmk b/hotspot/make/Dist.gmk
similarity index 100%
rename from hotspot/makefiles/Dist.gmk
rename to hotspot/make/Dist.gmk
diff --git a/hotspot/makefiles/HotspotCommon.gmk b/hotspot/make/HotspotCommon.gmk
similarity index 100%
rename from hotspot/makefiles/HotspotCommon.gmk
rename to hotspot/make/HotspotCommon.gmk
diff --git a/hotspot/make/Makefile b/hotspot/make/Makefile
deleted file mode 100644
index db2b96e25e0..00000000000
--- a/hotspot/make/Makefile
+++ /dev/null
@@ -1,895 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Top level gnumake file for hotspot builds
-#
-# Default is to build the both product images and construct an export dir.
-# The default export directory name is `pwd`/export-$(PLATFORM).
-#
-# Use: 'gnumake help' for more information.
-#
-# This makefile uses the default settings for where to find compilers and
-# tools, and obeys the ALT_* variable settings used by the other JDK
-# workspaces.
-#
-
-# Expected/optional make variables defined on make command line:
-# LP64=1 or ARCH_DATA_MODEL=64 for 64bit build
-#
-# Expected/optional make variables or environment variables:
-# ALT_SLASH_JAVA Location of /java or J:
-# ALT_BOOTDIR Previous JDK home directory for javac compiler
-# ALT_OUTPUTDIR Output directory to use for hotspot build
-# ALT_EXPORT_PATH Directory to export hotspot build to
-# ALT_JDK_IMPORT_PATH Current JDK build (only for create_jdk rules)
-# ALT_JDK_TARGET_IMPORT_PATH Current JDK build when cross-compiling
-#
-# Version strings and numbers:
-# VERSION_SHORT Current JDK version (e.g. 9.0.0)
-# JDK_PREVIOUS_VERSION Previous (bootdir) JDK version (e.g. 1.5.0) (Only needed
-# to facilitate standalone build.)
-# VERSION_STRING Full version string to use (e.g. "9.0.0-ea-b42")
-# VERSION_MAJOR Major number for version (e.g. 9)
-# VERSION_MINOR Minor number for version (e.g. 0)
-# VERSION_SECURITY Security number for version (e.g. 0)
-# VERSION_PATCH Patch number for version (e.g. 0)
-#
-
-# Default is build both product fastdebug and create export area
-
-# Allow to build HotSpot in local directory from sources specified by GAMMADIR.
-# After make/defs.make GAMMADIR is defined.
-ifdef GAMMADIR
- ifndef ALT_OUTPUTDIR
- ALT_OUTPUTDIR := $(shell pwd)
- endif
- include $(GAMMADIR)/make/defs.make
-else
- include defs.make
-endif
-
-include $(GAMMADIR)/make/altsrc.make
-
--include $(HS_ALT_MAKE)/Makefile.make
-
-ifneq ($(ALT_OUTPUTDIR),)
- ALT_OUT=ALT_OUTPUTDIR=$(ALT_OUTPUTDIR)
-else
- ALT_OUT=
-endif
-
-# Typical C1/C2 targets made available with this Makefile
-C1_VM_TARGETS=product1 fastdebug1 optimized1 debug1
-C2_VM_TARGETS=product fastdebug optimized debug
-CORE_VM_TARGETS=productcore fastdebugcore optimizedcore debugcore
-ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero debugzero
-SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark debugshark
-MINIMAL1_VM_TARGETS=productminimal1 fastdebugminimal1 debugminimal1
-
-COMMON_VM_PRODUCT_TARGETS=product product1 docs export_product
-COMMON_VM_FASTDEBUG_TARGETS=fastdebug fastdebug1 docs export_fastdebug
-COMMON_VM_DEBUG_TARGETS=debug debug1 docs export_debug
-COMMON_VM_OPTIMIZED_TARGETS=optimized optimized1 docs export_optimized
-
-# JDK directory list
-JDK_DIRS=bin include lib demo
-
-all: all_product all_fastdebug
-
-ifeq ($(JVM_VARIANT_MINIMAL1),true)
-all_product: productminimal1
-all_fastdebug: fastdebugminimal1
-all_debug: debugminimal1
-endif
-
-ifdef BUILD_CLIENT_ONLY
-all_product: product1 docs export_product
-all_fastdebug: fastdebug1 docs export_fastdebug
-all_debug: debug1 docs export_debug
-all_optimized: optimized1 docs export_optimized
-else
-ifeq ($(MACOSX_UNIVERSAL),true)
-all_product: universal_product
-all_fastdebug: universal_fastdebug
-all_debug: universal_debug
-all_optimized: universal_optimized
-else
-all_product: $(COMMON_VM_PRODUCT_TARGETS)
-all_fastdebug: $(COMMON_VM_FASTDEBUG_TARGETS)
-all_debug: $(COMMON_VM_DEBUG_TARGETS)
-all_optimized: $(COMMON_VM_OPTIMIZED_TARGETS)
-endif
-endif
-
-allzero: all_productzero all_fastdebugzero
-all_productzero: productzero docs export_product
-all_fastdebugzero: fastdebugzero docs export_fastdebug
-all_debugzero: debugzero docs export_debug
-all_optimizedzero: optimizedzero docs export_optimized
-
-allshark: all_productshark all_fastdebugshark
-all_productshark: productshark docs export_product
-all_fastdebugshark: fastdebugshark docs export_fastdebug
-all_debugshark: debugshark docs export_debug
-all_optimizedshark: optimizedshark docs export_optimized
-
-allcore: all_productcore all_fastdebugcore
-all_productcore: productcore docs export_product
-all_fastdebugcore: fastdebugcore docs export_fastdebug
-all_debugcore: debugcore docs export_debug
-all_optimizedcore: optimizedcore docs export_optimized
-
-# Do everything
-world: all create_jdk
-
-# Build or export docs
-docs:
-ifeq ($(OSNAME),windows)
- @$(ECHO) "No docs ($(VM_TARGET)) for windows"
-else
-# We specify 'BUILD_FLAVOR=product' so that the proper
-# ENABLE_FULL_DEBUG_SYMBOLS value is used.
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) BUILD_FLAVOR=product docs
-endif
-
-# Output directories
-C1_DIR =$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
-C2_DIR =$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
-CORE_DIR =$(OUTPUTDIR)/$(VM_PLATFORM)_core
-MINIMAL1_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_minimal1
-ZERO_DIR =$(OUTPUTDIR)/$(VM_PLATFORM)_zero
-SHARK_DIR =$(OUTPUTDIR)/$(VM_PLATFORM)_shark
-
-# Build variation of hotspot
-$(C1_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(C1_DIR) BUILD_FLAVOR=$(@:%1=%) VM_TARGET=$@ generic_build1 $(ALT_OUT)
-
-$(C2_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(C2_DIR) BUILD_FLAVOR=$@ VM_TARGET=$@ generic_build2 $(ALT_OUT)
-
-$(CORE_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(CORE_DIR) BUILD_FLAVOR=$(@:%core=%) VM_TARGET=$@ generic_buildcore $(ALT_OUT)
-
-$(ZERO_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(ZERO_DIR) BUILD_FLAVOR=$(@:%zero=%) VM_TARGET=$@ generic_buildzero $(ALT_OUT)
-
-$(SHARK_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(SHARK_DIR) BUILD_FLAVOR=$(@:%shark=%) VM_TARGET=$@ generic_buildshark $(ALT_OUT)
-
-$(MINIMAL1_VM_TARGETS):
- $(CD) $(GAMMADIR)/make; \
- $(MAKE) BUILD_DIR=$(MINIMAL1_DIR) BUILD_FLAVOR=$(@:%minimal1=%) VM_TARGET=$@ generic_buildminimal1 $(ALT_OUT)
-
-# Install hotspot script in build directory
-HOTSPOT_SCRIPT=$(BUILD_DIR)/$(BUILD_FLAVOR)/hotspot
-$(HOTSPOT_SCRIPT): $(GAMMADIR)/make/hotspot.script
- $(QUIETLY) $(MKDIR) -p $(BUILD_DIR)/$(BUILD_FLAVOR)
- $(QUIETLY) cat $< | sed -e 's|@@LIBARCH@@|$(LIBARCH)|g' | sed -e 's|@@JDK_IMPORT_PATH@@|$(JDK_IMPORT_PATH)|g' > $@
- $(QUIETLY) chmod +x $@
-
-# Build compiler1 (client) rule, different for platforms
-generic_build1: $(HOTSPOT_SCRIPT)
- $(MKDIR) -p $(OUTPUTDIR)
-ifeq ($(OSNAME),windows)
- ifeq ($(ARCH_DATA_MODEL), 32)
- $(CD) $(OUTPUTDIR); \
- $(NMAKE) -f $(ABS_OS_MAKEFILE) \
- Variant=compiler1 \
- WorkSpace=$(ABS_GAMMADIR) \
- BootStrapDir=$(ABS_BOOTDIR) \
- BuildUser=$(USERNAME) \
- $(MAKE_ARGS) $(VM_TARGET:%1=%)
- else
- @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
- endif
-else
- ifeq ($(ARCH_DATA_MODEL), 32)
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) $(VM_TARGET)
- else
- @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
- endif
-endif
-
-# Build compiler2 (server) rule, different for platforms
-generic_build2: $(HOTSPOT_SCRIPT)
- $(MKDIR) -p $(OUTPUTDIR)
-ifeq ($(OSNAME),windows)
- $(CD) $(OUTPUTDIR); \
- $(NMAKE) -f $(ABS_OS_MAKEFILE) \
- Variant=compiler2 \
- WorkSpace=$(ABS_GAMMADIR) \
- BootStrapDir=$(ABS_BOOTDIR) \
- BuildUser=$(USERNAME) \
- $(MAKE_ARGS) $(VM_TARGET)
-else
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) $(VM_TARGET)
-endif
-
-# NOTE: Changes in this file was just to facilitate comparison when
-# developing the new build, and should not be integrated.
-generic_buildcore: $(HOTSPOT_SCRIPT)
-#ifeq ($(HS_ARCH),ppc)
-# ifeq ($(ARCH_DATA_MODEL),64)
- $(MKDIR) -p $(OUTPUTDIR)
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) $(VM_TARGET)
-# else
-# @$(ECHO) "No ($(VM_TARGET)) for ppc ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
-# endif
-#else
-# @$(ECHO) "No ($(VM_TARGET)) for $(HS_ARCH)"
-#endif
-
-generic_buildzero: $(HOTSPOT_SCRIPT)
- $(MKDIR) -p $(OUTPUTDIR)
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) $(VM_TARGET)
-
-generic_buildshark: $(HOTSPOT_SCRIPT)
- $(MKDIR) -p $(OUTPUTDIR)
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) \
- $(MAKE_ARGS) $(VM_TARGET)
-
-generic_buildminimal1: $(HOTSPOT_SCRIPT)
-ifeq ($(JVM_VARIANT_MINIMAL1),true)
- $(MKDIR) -p $(OUTPUTDIR)
- ifeq ($(ARCH_DATA_MODEL), 32)
- ifeq ($(OSNAME),windows)
- $(ECHO) "No ($(VM_TARGET)) for $(OSNAME) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)" ;
- else
- ifeq ($(OSNAME),solaris)
- $(ECHO) "No ($(VM_TARGET)) for $(OSNAME) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)" ;
- else
- $(CD) $(OUTPUTDIR); \
- $(MAKE) -f $(ABS_OS_MAKEFILE) $(MAKE_ARGS) $(VM_TARGET) ;
- endif
- endif
- else
- @$(ECHO) "No ($(VM_TARGET)) for $(OSNAME) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
- endif
-else
- @$(ECHO) "Error: trying to build a minimal target but JVM_VARIANT_MINIMAL1 is not true."
-endif
-
-remove_old_debuginfo:
-ifeq ($(JVM_VARIANT_CLIENT), true)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- ifeq ($(OSNAME), windows)
- $(RM) -f $(EXPORT_CLIENT_DIR)/jvm.map $(EXPORT_CLIENT_DIR)/jvm.pdb
- else
- $(RM) -f $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
- endif
- else
- $(RM) -f $(EXPORT_CLIENT_DIR)/libjvm.diz
- endif
-endif
-ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- ifeq ($(OSNAME), windows)
- $(RM) -f $(EXPORT_SERVER_DIR)/jvm.map $(EXPORT_SERVER_DIR)/jvm.pdb
- else
- ifeq ($(OS_VENDOR), Darwin)
- $(RM) -rf $(EXPORT_SERVER_DIR)/libjvm.dylib.dSYM
- else
- $(RM) -f $(EXPORT_SERVER_DIR)/libjvm.debuginfo
- endif
- endif
- else
- $(RM) -f $(EXPORT_SERVER_DIR)/libjvm.diz
- endif
-endif
-ifeq ($(JVM_VARIANT_MINIMAL1),true)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(RM) -f $(EXPORT_MINIMAL_DIR)/libjvm.debuginfo
- else
- $(RM) -f $(EXPORT_MINIMAL_DIR)/libjvm.diz
- endif
-endif
-
-# Export file rule
-generic_export: $(EXPORT_LIST) remove_old_debuginfo
-
-export_product:
- $(MAKE) BUILD_FLAVOR=$(@:export_%=%) generic_export
-export_fastdebug:
- $(MAKE) BUILD_FLAVOR=$(@:export_%=%) EXPORT_SUBDIR=/$(@:export_%=%) generic_export
-export_debug:
- $(MAKE) BUILD_FLAVOR=$(@:export_%=%) EXPORT_SUBDIR=/$(@:export_%=%) generic_export
-export_optimized:
- $(MAKE) BUILD_FLAVOR=$(@:export_%=%) EXPORT_SUBDIR=/$(@:export_%=%) generic_export
-
-export_product_jdk::
- $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) generic_export
-export_optimized_jdk::
- $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/$(@:export_%_jdk=%) generic_export
-export_fastdebug_jdk::
- $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/$(@:export_%_jdk=%) generic_export
-export_debug_jdk::
- $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/$(@:export_%_jdk=%) generic_export
-
-# Export file copy rules
-XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt
-DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs
-C1_BUILD_DIR =$(C1_DIR)/$(BUILD_FLAVOR)
-C2_BUILD_DIR =$(C2_DIR)/$(BUILD_FLAVOR)
-CORE_BUILD_DIR =$(CORE_DIR)/$(BUILD_FLAVOR)
-MINIMAL1_BUILD_DIR=$(MINIMAL1_DIR)/$(BUILD_FLAVOR)
-ZERO_BUILD_DIR =$(ZERO_DIR)/$(BUILD_FLAVOR)
-SHARK_BUILD_DIR =$(SHARK_DIR)/$(BUILD_FLAVOR)
-
-# Server (C2)
-ifeq ($(JVM_VARIANT_SERVER), true)
-# Common
-$(EXPORT_SERVER_DIR)/%.diz: $(C2_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_LIB_DIR)/%.jar: $(C2_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(C2_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Windows
-$(EXPORT_SERVER_DIR)/%.dll: $(C2_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.pdb: $(C2_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.map: $(C2_BUILD_DIR)/%.map
- $(install-file)
-$(EXPORT_LIB_DIR)/%.lib: $(C2_BUILD_DIR)/%.lib
- $(install-file)
-$(EXPORT_BIN_DIR)/%.diz: $(C2_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_BIN_DIR)/%.dll: $(C2_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_BIN_DIR)/%.pdb: $(C2_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_BIN_DIR)/%.map: $(C2_BUILD_DIR)/%.map
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(C2_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(C2_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_SERVER_DIR)/64/%.$(LIBRARY_SUFFIX): $(C2_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo: $(C2_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.debuginfo: $(C2_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_SERVER_DIR)/64/%.debuginfo: $(C2_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(C2_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_SERVER_DIR)/64/%.diz: $(C2_BUILD_DIR)/%.diz
- $(install-file)
-# MacOS X
-$(EXPORT_LIB_ARCH_DIR)/%.dSYM: $(C2_BUILD_DIR)/%.dSYM
- $(install-dir)
-$(EXPORT_SERVER_DIR)/%.dSYM: $(C2_BUILD_DIR)/%.dSYM
- $(install-dir)
-$(EXPORT_SERVER_DIR)/%.symbols: $(C2_BUILD_DIR)/%.symbols
- $(install-file)
-endif
-
-# Client (C1)
-ifeq ($(JVM_VARIANT_CLIENT), true)
-# Common
-$(EXPORT_CLIENT_DIR)/%.diz: $(C1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_LIB_DIR)/%.jar: $(C1_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(C1_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Windows
-$(EXPORT_CLIENT_DIR)/%.dll: $(C1_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_CLIENT_DIR)/%.pdb: $(C1_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_CLIENT_DIR)/%.map: $(C1_BUILD_DIR)/%.map
- $(install-file)
-$(EXPORT_LIB_DIR)/%.lib: $(C1_BUILD_DIR)/%.lib
- $(install-file)
-$(EXPORT_BIN_DIR)/%.diz: $(C1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_BIN_DIR)/%.dll: $(C1_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_BIN_DIR)/%.pdb: $(C1_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_BIN_DIR)/%.map: $(C1_BUILD_DIR)/%.map
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(C1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_CLIENT_DIR)/%.$(LIBRARY_SUFFIX): $(C1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_CLIENT_DIR)/64/%.$(LIBRARY_SUFFIX): $(C1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo: $(C1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_CLIENT_DIR)/%.debuginfo: $(C1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_CLIENT_DIR)/64/%.debuginfo: $(C1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(C1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_CLIENT_DIR)/64/%.diz: $(C1_BUILD_DIR)/%.diz
- $(install-file)
-# MacOS X
-$(EXPORT_LIB_ARCH_DIR)/%.dSYM: $(C1_BUILD_DIR)/%.dSYM
- $(install-dir)
-$(EXPORT_CLIENT_DIR)/%.dSYM: $(C1_BUILD_DIR)/%.dSYM
- $(install-dir)
-endif
-
-# Minimal1
-ifeq ($(JVM_VARIANT_MINIMAL1), true)
-# Common
-$(EXPORT_MINIMAL_DIR)/%.diz: $(MINIMAL1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_LIB_DIR)/%.jar: $(MINIMAL1_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(MINIMAL1_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Windows
-$(EXPORT_MINIMAL_DIR)/%.dll: $(MINIMAL1_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/%.pdb: $(MINIMAL1_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/%.map: $(MINIMAL1_BUILD_DIR)/%.map
- $(install-file)
-$(EXPORT_LIB_DIR)/%.lib: $(MINIMAL1_BUILD_DIR)/%.lib
- $(install-file)
-$(EXPORT_BIN_DIR)/%.diz: $(MINIMAL1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_BIN_DIR)/%.dll: $(MINIMAL1_BUILD_DIR)/%.dll
- $(install-file)
-$(EXPORT_BIN_DIR)/%.pdb: $(MINIMAL1_BUILD_DIR)/%.pdb
- $(install-file)
-$(EXPORT_BIN_DIR)/%.map: $(MINIMAL1_BUILD_DIR)/%.map
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(MINIMAL1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/%.$(LIBRARY_SUFFIX): $(MINIMAL1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/64/%.$(LIBRARY_SUFFIX): $(MINIMAL1_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo: $(MINIMAL1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/%.debuginfo: $(MINIMAL1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/64/%.debuginfo: $(MINIMAL1_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(MINIMAL1_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_MINIMAL_DIR)/64/%.diz: $(MINIMAL1_BUILD_DIR)/%.diz
- $(install-file)
-# MacOS X does not support Minimal1 config
-endif
-
-# Zero
-ifeq ($(JVM_VARIANT_ZERO), true)
-# Common
-$(EXPORT_LIB_DIR)/%.jar: $(ZERO_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(ZERO_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(ZERO_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo: $(ZERO_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(ZERO_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(ZERO_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.debuginfo: $(ZERO_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.diz: $(ZERO_BUILD_DIR)/%.diz
- $(install-file)
-# MacOS X
-$(EXPORT_LIB_ARCH_DIR)/%.dSYM: $(ZERO_BUILD_DIR)/%.dSYM
- $(install-dir)
-$(EXPORT_SERVER_DIR)/%.dSYM: $(ZERO_BUILD_DIR)/%.dSYM
- $(install-dir)
-endif
-
-# Core
-ifeq ($(JVM_VARIANT_CORE), true)
-# Common
-$(EXPORT_LIB_DIR)/%.jar: $(CORE_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(CORE_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(CORE_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo: $(CORE_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(CORE_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(CORE_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.debuginfo: $(CORE_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.diz: $(CORE_BUILD_DIR)/%.diz
- $(install-file)
-endif
-
-# Shark
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
-# Common
-$(EXPORT_LIB_DIR)/%.jar: $(SHARK_BUILD_DIR)/../generated/%.jar
- $(install-file)
-$(EXPORT_INCLUDE_DIR)/%: $(SHARK_BUILD_DIR)/../generated/jvmtifiles/%
- $(install-file)
-# Unix
-$(EXPORT_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(SHARK_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.debuginfo): $(SHARK_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_LIB_ARCH_DIR)/%.diz: $(SHARK_BUILD_DIR)/%.diz
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(SHARK_BUILD_DIR)/%.$(LIBRARY_SUFFIX)
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.debuginfo: $(SHARK_BUILD_DIR)/%.debuginfo
- $(install-file)
-$(EXPORT_SERVER_DIR)/%.diz: $(SHARK_BUILD_DIR)/%.diz
- $(install-file)
-# MacOS X
-$(EXPORT_LIB_ARCH_DIR)/%.dSYM: $(SHARK_BUILD_DIR)/%.dSYM
- $(install-dir)
-$(EXPORT_SERVER_DIR)/%.dSYM: $(SHARK_BUILD_DIR)/%.dSYM
- $(install-dir)
-endif
-
-$(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/%
- $(install-file)
-
-$(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/%
- $(install-file)
-
-HS_JNI_ARCH_SRC=$(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h)
-$(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_JNI_ARCH_SRC)
- $(install-file)
-
-$(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/%
- $(install-file)
-
-JFR_EXISTS=$(shell if [ -d $(HS_ALT_SRC) ]; then echo 1; else echo 0; fi)
-# export jfr.h
-ifeq ($JFR_EXISTS,1)
-$(EXPORT_INCLUDE_DIR)/%: $(HS_ALT_SRC)/share/vm/jfr/%
- $(install-file)
-else
-$(EXPORT_INCLUDE_DIR)/jfr.h:
-endif
-
-# Doc files (jvmti.html)
-$(EXPORT_DOCS_DIR)/platform/jvmti/%: $(DOCS_DIR)/%
- $(install-file)
-
-# Xusage file
-$(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_MINIMAL_DIR)/Xusage.txt: $(XUSAGE)
- $(prep-target)
- $(RM) $@.temp
- $(SED) 's/\(separated by \)[;:]/\1$(PATH_SEP)/g' $< > $@.temp
- $(MV) $@.temp $@
-
-#
-# Clean rules
-#
-clobber clean: clean_build clean_export clean_jdk
-clean_build:
- $(RM) -r $(C1_DIR)
- $(RM) -r $(C2_DIR)
- $(RM) -r $(CORE_DIR)
- $(RM) -r $(ZERO_DIR)
- $(RM) -r $(SHARK_DIR)
- $(RM) -r $(MINIMAL1_DIR)
-clean_export:
- $(RM) -r $(EXPORT_PATH)
-clean_jdk:
- $(RM) -r $(JDK_IMAGE_DIR)
-
-#
-# Create JDK and place this build into it
-#
-create_jdk: copy_jdk update_jdk
-
-update_jdk: export_product_jdk export_fastdebug_jdk test_jdk
-
-copy_jdk: $(JDK_IMAGE_DIR)/bin/java
-
-$(JDK_IMAGE_DIR)/bin/java:
- $(RM) -r $(JDK_IMAGE_DIR)
- $(MKDIR) -p $(JDK_IMAGE_DIR)
- ($(CD) $(JDK_IMPORT_PATH) && \
- $(TAR) -cf - *) | \
- ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
-
-
-# Testing the built JVM
-RUN_JVM=JAVA_HOME=$(JDK_IMPORT_PATH) $(JDK_IMPORT_PATH)/bin/java -d$(ARCH_DATA_MODEL) -XXaltjvm=$(ALTJVM_DIR) -Dsun.java.launcher.is_altjvm=true
-generic_test:
- @$(ECHO) "Running with: $(ALTJVM_DIR)"
- @$(RUN_JVM) -Xinternalversion
- @$(RUN_JVM) -showversion -help
-
-# C2 test targets
-test_product test_optimized test_fastdebug test_debug:
- @$(MAKE) generic_test ALTJVM_DIR="$(C2_DIR)/$(@:test_%=%)"
-
-# C1 test targets
-test_product1 test_optimized1 test_fastdebug1 test_debug1:
- ifeq ($(ARCH_DATA_MODEL), 32)
- @$(MAKE) generic_test ALTJVM_DIR="$(C1_DIR)/$(@:test_%1=%)"
- else
- @$(ECHO) "No compiler1 ($(@:test_%=%)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
- endif
-
-# Zero test targets
-test_productzero test_optimizedzero test_fastdebugzero test_debugzero:
- @$(MAKE) generic_test ALTJVM_DIR="$(ZERO_DIR)/$(@:test_%zero=%)"
-
-# Shark test targets
-test_productshark test_optimizedshark test_fastdebugshark test_debugshark:
- @$(MAKE) generic_test ALTJVM_DIR="$(SHARK_DIR)/$(@:test_%shark=%)"
-
-# Minimal1 test targets
-test_productminimal1 test_optimizedminimal1 test_fastdebugminimal1 test_debugminimal1:
- @$(MAKE) generic_test ALTJVM_DIR="$(MINIMAL1_DIR)/$(@:test_%minimal1=%)"
-
-
-test_jdk:
- ifeq ($(JVM_VARIANT_CLIENT), true)
- $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -client -Xinternalversion
- $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -client -version
- endif
- ifeq ($(findstring true, $(JVM_VARIANT_SERVER)\
- $(JVM_VARIANT_ZERO)$(JVM_VARIANT_ZEROSHARK)), true)
- $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -server -Xinternalversion
- $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -server -version
- endif
-
-copy_product_jdk::
- $(RM) -r $(JDK_IMAGE_DIR)
- $(MKDIR) -p $(JDK_IMAGE_DIR)
- ($(CD) $(JDK_IMPORT_PATH) && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
-
-copy_fastdebug_jdk::
- $(RM) -r $(JDK_IMAGE_DIR)/fastdebug
- $(MKDIR) -p $(JDK_IMAGE_DIR)/fastdebug
- if [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
- ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
- else \
- ($(CD) $(JDK_IMPORT_PATH) && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
- fi
-
-copy_debug_jdk::
- $(RM) -r $(JDK_IMAGE_DIR)/debug
- $(MKDIR) -p $(JDK_IMAGE_DIR)/debug
- if [ -d $(JDK_IMPORT_PATH)/debug ] ; then \
- ($(CD) $(JDK_IMPORT_PATH)/debug && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
- elif [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
- ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
- else \
- ($(CD) $(JDK_IMPORT_PATH) && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
- fi
-
-copy_optimized_jdk::
- $(RM) -r $(JDK_IMAGE_DIR)/optimized
- $(MKDIR) -p $(JDK_IMAGE_DIR)/optimized
- if [ -d $(JDK_IMPORT_PATH)/optimized ] ; then \
- ($(CD) $(JDK_IMPORT_PATH)/optimized && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/optimized && $(TAR) -xf -) ; \
- else \
- ($(CD) $(JDK_IMPORT_PATH) && \
- $(TAR) -cf - $(JDK_DIRS)) | \
- ($(CD) $(JDK_IMAGE_DIR)/optimized && $(TAR) -xf -) ; \
- fi
-
-#
-# Check target
-#
-check: variable_check
-
-#
-# Help target
-#
-help: intro_help target_help variable_help notes_help examples_help
-
-# Intro help message
-intro_help:
- @$(ECHO) \
-"Makefile for the Hotspot workspace."
- @$(ECHO) \
-"Default behavior is to build and create an export area for the j2se builds."
-
-# Target help
-target_help:
- @$(ECHO) "help: This help message"
- @$(ECHO) "all: Same as: all_product all_fastdebug"
- @$(ECHO) "world: Same as: all create_jdk"
- @$(ECHO) "all_product: Same as: product product1 export_product"
- @$(ECHO) "all_fastdebug: Same as: fastdebug fastdebug1 export_fastdebug"
- @$(ECHO) "all_debug: Same as: debug debug1 export_debug"
- @$(ECHO) "all_optimized: Same as: optimized optimized1 export_optimized"
- @$(ECHO) "clean: Clean all areas"
- @$(ECHO) "export_product: Export product files to EXPORT_PATH"
- @$(ECHO) "export_fastdebug: Export fastdebug files to EXPORT_PATH"
- @$(ECHO) "export_debug: Export debug files to EXPORT_PATH"
- @$(ECHO) "export_optimized: Export optimized files to EXPORT_PATH"
- @$(ECHO) "create_jdk: Create JDK image, export all files into it"
- @$(ECHO) "update_jdk: Update JDK image with fresh exported files"
- @$(ECHO) " "
- @$(ECHO) "Other targets are:"
- @$(ECHO) " $(C1_VM_TARGETS)"
- @$(ECHO) " $(C2_VM_TARGETS)"
- @$(ECHO) " $(MINIMAL1_VM_TARGETS)"
-
-# Variable help (only common ones used by this workspace)
-variable_help: variable_help_intro variable_list variable_help_end
-variable_help_intro:
- @$(ECHO) "--- Common Variables ---"
-variable_help_end:
- @$(ECHO) " "
- @$(ECHO) "--- Make Arguments ---"
- @$(ECHO) "MAKE_ARGS=$(MAKE_ARGS)"
-
-# One line descriptions for the variables
-SLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
-OUTPUTDIR.desc = Output directory, default is build/
-BOOTDIR.desc = JDK used to compile agent java source and test with
-JDK_IMPORT_PATH.desc = Promoted JDK to copy for 'create_jdk'
-JDK_IMAGE_DIR.desc = Directory to place JDK to copy
-EXPORT_PATH.desc = Directory to place files to export for JDK build
-
-# Make variables to print out (description and value)
-VARIABLE_PRINTVAL_LIST += \
- SLASH_JAVA \
- OUTPUTDIR \
- BOOTDIR \
- JDK_IMPORT_PATH \
- JDK_IMAGE_DIR \
- EXPORT_PATH
-
-# Make variables that should refer to directories that exist
-VARIABLE_CHECKDIR_LIST += \
- SLASH_JAVA \
- BOOTDIR \
- JDK_IMPORT_PATH
-
-# For pattern rules below, so all are treated the same
-DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
-DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
-
-# Complete variable check
-variable_check: $(DO_CHECKDIR_LIST)
-variable_list: $(DO_PRINTVAL_LIST) variable_check
-
-# Pattern rule for printing out a variable
-%.printval:
- @$(ECHO) " ALT_$* - $($*.desc)"
- @$(ECHO) " $*=$($*)"
-
-# Pattern rule for checking to see if a variable with a directory exists
-%.checkdir:
- @if [ ! -d $($*) ] ; then \
- $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
- fi
-
-# Pattern rule for checking to see if a variable with a file exists
-%.checkfil:
- @if [ ! -f $($*) ] ; then \
- $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
- fi
-
-# Misc notes on help
-notes_help:
- @$(ECHO) \
-"--- Notes --- "
- @$(ECHO) \
-"- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted"
- @$(ECHO) \
-" builds or previous release JDK builds will work."
- @$(ECHO) \
-"- The fastest builds have been when the workspace and the BOOTDIR are on"
- @$(ECHO) \
-" local disk."
-
-examples_help:
- @$(ECHO) \
-"--- Examples --- "
- @$(ECHO) \
-" $(MAKE) all"
- @$(ECHO) \
-" $(MAKE) world"
- @$(ECHO) \
-" $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(JDK_PREVIOUS_VERSION)"
- @$(ECHO) \
-" $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(VERSION_STRING)"
-
-# Universal build support
-ifeq ($(OS_VENDOR), Darwin)
-ifeq ($(MACOSX_UNIVERSAL),true)
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/universal.gmk
-endif
-endif
-
-# Compatibility for transition to new naming
-warn_jvmg_deprecated:
- echo "Warning: The jvmg target has been replaced with debug"
- echo "Warning: Please update your usage"
-
-jvmg: warn_jvmg_deprecated debug
-
-jvmg1: warn_jvmg_deprecated debug1
-
-jvmgminimal1: warn_jvmg_deprecated debugminimal1
-
-jvmgcore: warn_jvmg_deprecated debugcore
-
-jvmgzero: warn_jvmg_deprecated debugzero
-
-jvmgshark: warn_jvmg_deprecated debugshark
-
-# JPRT rule to build this workspace
-include $(GAMMADIR)/make/jprt.gmk
-
-.PHONY: all world clobber clean help $(C1_VM_TARGETS) $(C2_VM_TARGETS) \
- $(MINIMAL1_VM_TARGETS) \
- generic_build1 generic_build2 generic_buildminimal1 generic_export \
- export_product export_fastdebug export_debug export_optimized \
- export_jdk_product export_jdk_fastdebug export_jdk_debug \
- create_jdk copy_jdk update_jdk test_jdk \
- copy_product_jdk copy_fastdebug_jdk copy_debug_jdk \
- $(HS_ALT_MAKE)/Makefile.make remove_old_debuginfo
-
-.NOTPARALLEL:
diff --git a/hotspot/make/aix/Makefile b/hotspot/make/aix/Makefile
deleted file mode 100644
index 951a98502fa..00000000000
--- a/hotspot/make/aix/Makefile
+++ /dev/null
@@ -1,369 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2015 SAP SE. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile creates a build tree and lights off a build.
-# You can go back into the build tree and perform rebuilds or
-# incremental builds as desired. Be sure to reestablish
-# environment variable settings for LD_LIBRARY_PATH and JAVA_HOME.
-
-# The make process now relies on java and javac. These can be
-# specified either implicitly on the PATH, by setting the
-# (JDK-inherited) ALT_BOOTDIR environment variable to full path to a
-# JDK in which bin/java and bin/javac are present and working (e.g.,
-# /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited)
-# default BOOTDIR path value. Note that one of ALT_BOOTDIR
-# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
-# from the PATH.
-#
-# One can set ALT_BOOTDIR or BOOTDIR to point to a jdk that runs on
-# an architecture that differs from the target architecture, as long
-# as the bootstrap jdk runs under the same flavor of OS as the target
-# (i.e., if the target is linux, point to a jdk that runs on a linux
-# box). In order to use such a bootstrap jdk, set the make variable
-# REMOTE to the desired remote command mechanism, e.g.,
-#
-# make REMOTE="rsh -l me myotherlinuxbox"
-
-# No tests on Aix.
-TEST_IN_BUILD=false
-
-ifeq ($(GAMMADIR),)
-include ../../make/defs.make
-else
-include $(GAMMADIR)/make/defs.make
-endif
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
-
-ifndef CC_INTERP
- ifndef FORCE_TIERED
- FORCE_TIERED=1
- endif
-endif
-
-ifdef LP64
- ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- _JUNK_ := $(shell echo >&2 \
- $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!")
- @exit 1
- endif
-endif
-
-# we need to set up LP64 correctly to satisfy sanity checks in adlc
-ifneq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- MFLAGS += " LP64=1 "
-endif
-
-# pass USE_SUNCC further, through MFLAGS
-ifdef USE_SUNCC
- MFLAGS += " USE_SUNCC=1 "
-endif
-
-# The following renders pathnames in generated Makefiles valid on
-# machines other than the machine containing the build tree.
-#
-# For example, let's say my build tree lives on /files12 on
-# exact.east.sun.com. This logic will cause GAMMADIR to begin with
-# /net/exact/files12/...
-#
-# We only do this on SunOS variants, for a couple of reasons:
-# * It is extremely rare that source trees exist on other systems
-# * It has been claimed that the Linux automounter is flakey, so
-# changing GAMMADIR in a way that exercises the automounter could
-# prove to be a source of unreliability in the build process.
-# Obviously, this Makefile is only relevant on SunOS boxes to begin
-# with, but the SunOS conditionalization will make it easier to
-# combine Makefiles in the future (assuming we ever do that).
-
-ifeq ($(OSNAME),solaris)
-
- # prepend current directory to relative pathnames.
- NEW_GAMMADIR := \
- $(shell echo $(GAMMADIR) | \
- sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \
- )
- unexport NEW_GAMMADIR
-
- # If NEW_GAMMADIR doesn't already start with "/net/":
- ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),)
- # prepend /net/$(HOST)
- # remove /net/$(HOST) if name already began with /home/
- # remove /net/$(HOST) if name already began with /java/
- # remove /net/$(HOST) if name already began with /lab/
- NEW_GAMMADIR := \
- $(shell echo $(NEW_GAMMADIR) | \
- sed -e "s=^\(.*\)=/net/$(HOST)\1=" \
- -e "s=^/net/$(HOST)/home/=/home/=" \
- -e "s=^/net/$(HOST)/java/=/java/=" \
- -e "s=^/net/$(HOST)/lab/=/lab/=" \
- )
- # Don't use the new value for GAMMADIR unless a file with the new
- # name actually exists.
- ifneq ($(wildcard $(NEW_GAMMADIR)),)
- GAMMADIR := $(NEW_GAMMADIR)
- endif
- endif
-
-endif
-
-# BUILDARCH is set to "zero" for Zero builds. VARIANTARCH
-# is used to give the build directories meaningful names.
-VARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH))
-
-# There is a (semi-) regular correspondence between make targets and actions:
-#
-# Target Tree Type Build Dir
-#
-# debug compiler2 __compiler2/debug
-# fastdebug compiler2 __compiler2/fastdebug
-# optimized compiler2 __compiler2/optimized
-# product compiler2 __compiler2/product
-#
-# debug1 compiler1 __compiler1/debug
-# fastdebug1 compiler1 __compiler1/fastdebug
-# optimized1 compiler1 __compiler1/optimized
-# product1 compiler1 __compiler1/product
-#
-# debugcore core __core/debug
-# fastdebugcore core __core/fastdebug
-# optimizedcore core __core/optimized
-# productcore core __core/product
-#
-# debugzero zero __zero/debug
-# fastdebugzero zero __zero/fastdebug
-# optimizedzero zero __zero/optimized
-# productzero zero __zero/product
-#
-# debugshark shark __shark/debug
-# fastdebugshark shark __shark/fastdebug
-# optimizedshark shark __shark/optimized
-# productshark shark __shark/product
-#
-# fastdebugminimal1 minimal1 __minimal1/fastdebug
-# productminimal1 minimal1 __minimal1/product
-#
-# What you get with each target:
-#
-# debug* - debug compile with asserts enabled
-# fastdebug* - optimized compile, but with asserts enabled
-# optimized* - optimized compile, no asserts
-# product* - the shippable thing: optimized compile, no asserts, -DPRODUCT
-
-# This target list needs to be coordinated with the usage message
-# in the build.sh script:
-TARGETS = debug fastdebug optimized product
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- SUBDIR_DOCS = $(OSNAME)_$(VARIANTARCH)_docs
-else
- SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs
-endif
-SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
-SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
-SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
-SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
-SUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
-SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS))
-SUBDIRS_MINIMAL1 = $(addprefix $(OSNAME)_$(BUILDARCH)_minimal1/,$(TARGETS))
-
-TARGETS_C2 = $(TARGETS)
-TARGETS_C1 = $(addsuffix 1,$(TARGETS))
-TARGETS_TIERED = $(addsuffix tiered,$(TARGETS))
-TARGETS_CORE = $(addsuffix core,$(TARGETS))
-TARGETS_ZERO = $(addsuffix zero,$(TARGETS))
-TARGETS_SHARK = $(addsuffix shark,$(TARGETS))
-TARGETS_MINIMAL1 = $(addsuffix minimal1,$(TARGETS))
-
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-BUILDTREE_VARS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
-
-BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
-
-#-------------------------------------------------------------------------------
-
-# Could make everything by default, but that would take a while.
-all:
- @echo "Try '$(MAKE) ...' where is one or more of"
- @echo " $(TARGETS_C2)"
- @echo " $(TARGETS_C1)"
- @echo " $(TARGETS_CORE)"
- @echo " $(TARGETS_ZERO)"
- @echo " $(TARGETS_SHARK)"
- @echo " $(TARGETS_MINIMAL1)"
-
-checks: check_os_version check_j2se_version
-
-# We do not want people accidentally building on old systems (e.g. Linux 2.2.x,
-# Solaris 2.5.1, 2.6).
-# Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok.
-
-SUPPORTED_OS_VERSION = AIX
-OS_VERSION := $(shell uname -a)
-EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
-
-check_os_version:
-ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
- $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
-endif
-
-# jvmti.make requires XSLT (J2SE 1.4.x or newer):
-XSLT_CHECK = $(REMOTE) $(RUN.JAVAP) javax.xml.transform.TransformerFactory
-# If not found then fail fast.
-check_j2se_version:
- $(QUIETLY) if ! $(XSLT_CHECK) > /dev/null 2>&1; then \
- $(REMOTE) $(RUN.JAVA) -version; \
- echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \
- "to bootstrap this build" 1>&2; \
- exit 1; \
- fi
-
-$(SUBDIRS_TIERED): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered
-
-$(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifeq ($(FORCE_TIERED),1)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
-else
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler2
-endif
-
-$(SUBDIRS_C1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler1
-
-$(SUBDIRS_CORE): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=core
-
-$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_MINIMAL1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=minimal1
-
-
-platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
- $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
-
-# Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
-
-$(TARGETS_C2): $(SUBDIRS_C2)
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_TIERED): $(SUBDIRS_TIERED)
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_C1): $(SUBDIRS_C1)
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_CORE): $(SUBDIRS_CORE)
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_ZERO): $(SUBDIRS_ZERO)
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_SHARK): $(SUBDIRS_SHARK)
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_MINIMAL1): $(SUBDIRS_MINIMAL1)
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-# Just build the tree, and nothing else:
-tree: $(SUBDIRS_C2)
-tree1: $(SUBDIRS_C1)
-treecore: $(SUBDIRS_CORE)
-treezero: $(SUBDIRS_ZERO)
-treeshark: $(SUBDIRS_SHARK)
-treeminimal1: $(SUBDIRS_MINIMAL1)
-
-# Doc target. This is the same for all build options.
-# Hence create a docs directory beside ...$(ARCH)_[...]
-# We specify 'BUILD_FLAVOR=product' so that the proper
-# ENABLE_FULL_DEBUG_SYMBOLS value is used.
-docs: checks
- $(QUIETLY) mkdir -p $(SUBDIR_DOCS)
- $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
-
-# Synonyms for win32-like targets.
-compiler2: debug product
-
-compiler1: debug1 product1
-
-core: debugcore productcore
-
-zero: debugzero productzero
-
-shark: debugshark productshark
-
-clean_docs:
- rm -rf $(SUBDIR_DOCS)
-
-clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark clean_minimal1:
- rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
-
-clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_minimal1 clean_docs
-
-include $(GAMMADIR)/make/cscope.make
-
-#-------------------------------------------------------------------------------
-
-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK) $(TARGETS_MINIMAL1)
-.PHONY: tree tree1 treecore treezero treeshark
-.PHONY: all compiler1 compiler2 core zero shark
-.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs
-.PHONY: checks check_os_version check_j2se_version
-
-.NOTPARALLEL:
diff --git a/hotspot/make/aix/adlc_updater b/hotspot/make/aix/adlc_updater
deleted file mode 100644
index 99e04e333f2..00000000000
--- a/hotspot/make/aix/adlc_updater
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /bin/sh
-#
-# This file is used by adlc.make to selectively update generated
-# adlc files. Because source and target diretories are relative
-# paths, this file is copied to the target build directory before
-# use.
-#
-# adlc-updater
-#
-fix_lines() {
- # repair bare #line directives in $1 to refer to $2
- # and add an override of __FILE__ with just the basename on the
- # first line of the file.
- awk < $1 > $1+ -v F2=$2 '
- BEGIN { print "#line 1 \"" F2 "\""; }
- /^#line 999999$/ {print "#line " (NR+1) " \"" F2 "\""; next}
- {print}
- '
- mv $1+ $1
-}
-fix_lines $2/$1 $1
-[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
-( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
diff --git a/hotspot/make/aix/makefiles/adjust-mflags.sh b/hotspot/make/aix/makefiles/adjust-mflags.sh
deleted file mode 100644
index 6c06819fb74..00000000000
--- a/hotspot/make/aix/makefiles/adjust-mflags.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#! /bin/sh
-#
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This script is used only from top.make.
-# The macro $(MFLAGS-adjusted) calls this script to
-# adjust the "-j" arguments to take into account
-# the HOTSPOT_BUILD_JOBS variable. The default
-# handling of the "-j" argument by gnumake does
-# not meet our needs, so we must adjust it ourselves.
-
-# This argument adjustment applies to two recursive
-# calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make.
-# One invokes adlc.make, and the other invokes vm.make.
-# The adjustment propagates the desired concurrency
-# level down to the sub-make (of the adlc or vm).
-# The default behavior of gnumake is to run all
-# sub-makes without concurrency ("-j1").
-
-# Also, we use a make variable rather than an explicit
-# "-j" argument to control this setting, so that
-# the concurrency setting (which must be tuned separately
-# for each MP system) can be set via an environment variable.
-# The recommended setting is 1.5x to 2x the number of available
-# CPUs on the MP system, which is large enough to keep the CPUs
-# busy (even though some jobs may be I/O bound) but not too large,
-# we may presume, to overflow the system's swap space.
-
-set -eu
-
-default_build_jobs=4
-
-case $# in
-[12]) true;;
-*) >&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;;
-esac
-
-MFLAGS=$1
-HOTSPOT_BUILD_JOBS=${2-}
-
-# Normalize any -jN argument to the form " -j${HBJ}"
-MFLAGS=`
- echo "$MFLAGS" \
- | sed '
- s/^-/ -/
- s/ -\([^ I][^ I]*\)j/ -\1 -j/
- s/ -j[0-9][0-9]*/ -j/
- s/ -j\([^ ]\)/ -j -\1/
- s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
- ' `
-
-case ${HOTSPOT_BUILD_JOBS} in \
-
-'') case ${MFLAGS} in
- *\ -j*)
- >&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile."
- >&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment."
- esac;;
-
-?*) case ${MFLAGS} in
- *\ -j*) true;;
- *) MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";;
- esac;;
-esac
-
-echo "${MFLAGS}"
diff --git a/hotspot/make/aix/makefiles/adlc.make b/hotspot/make/aix/makefiles/adlc.make
deleted file mode 100644
index 63dc981410f..00000000000
--- a/hotspot/make/aix/makefiles/adlc.make
+++ /dev/null
@@ -1,225 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (adlc.make) is included from the adlc.make in the
-# build directories.
-# It knows how to compile, link, and run the adlc.
-
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
-
-# #########################################################################
-
-# OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make:
-GENERATED = ../generated
-OUTDIR = $(GENERATED)/adfiles
-
-ARCH = $(Platform_arch)
-OS = $(Platform_os_family)
-
-SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad
-
-ifeq ("${Platform_arch_model}", "${Platform_arch}")
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad)
-else
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad)
-endif
-
-EXEC = $(OUTDIR)/adlc
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor
-Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
-
-# set flags for adlc compilation
-CXXFLAGS = $(SYSDEFS) $(INCLUDES)
-
-# Force assertions on.
-CXXFLAGS += -DASSERT
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-# Suppress warnings (for now)
-CFLAGS_WARN = -w
-CFLAGS += $(CFLAGS_WARN)
-
-OBJECTNAMES = \
- adlparse.o \
- archDesc.o \
- arena.o \
- dfa.o \
- dict2.o \
- filebuff.o \
- forms.o \
- formsopt.o \
- formssel.o \
- main.o \
- adlc-opcodes.o \
- output_c.o \
- output_h.o \
-
-OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%)
-
-GENERATEDNAMES = \
- ad_$(Platform_arch_model).cpp \
- ad_$(Platform_arch_model).hpp \
- ad_$(Platform_arch_model)_clone.cpp \
- ad_$(Platform_arch_model)_expand.cpp \
- ad_$(Platform_arch_model)_format.cpp \
- ad_$(Platform_arch_model)_gen.cpp \
- ad_$(Platform_arch_model)_misc.cpp \
- ad_$(Platform_arch_model)_peephole.cpp \
- ad_$(Platform_arch_model)_pipeline.cpp \
- adGlobals_$(Platform_arch_model).hpp \
- dfa_$(Platform_arch_model).cpp \
-
-GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%)
-
-# #########################################################################
-
-all: $(EXEC)
-
-$(EXEC) : $(OBJECTS)
- @echo $(LOG_INFO) Making adlc
- $(QUIETLY) $(HOST.LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS)
-
-# Random dependencies:
-$(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
-
-# The source files refer to ostream.h, which sparcworks calls iostream.h
-$(OBJECTS): ostream.h
-
-ostream.h :
- @echo >$@ '#include '
-
-dump:
- : OUTDIR=$(OUTDIR)
- : OBJECTS=$(OBJECTS)
- : products = $(GENERATEDFILES)
-
-all: $(GENERATEDFILES)
-
-$(GENERATEDFILES): refresh_adfiles
-
-# Get a unique temporary directory name, so multiple makes can run in parallel.
-# Note that product files are updated via "mv", which is atomic.
-TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
-
-# Debuggable by default
-CFLAGS += -g
-
-# Pass -D flags into ADLC.
-ADLCFLAGS += $(SYSDEFS)
-
-# Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO.
-ADLCFLAGS += -q -T
-
-ADLCFLAGS += -g
-
-ifdef LP64
-ADLCFLAGS += -D_LP64
-else
-ADLCFLAGS += -U_LP64
-endif
-
-#
-# adlc_updater is a simple sh script, under sccs control. It is
-# used to selectively update generated adlc files. This should
-# provide a nice compilation speed improvement.
-#
-ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
-ADLC_UPDATER = adlc_updater
-$(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER)
- $(QUIETLY) cp $< $@; chmod +x $@
-
-# This action refreshes all generated adlc files simultaneously.
-# The way it works is this:
-# 1) create a scratch directory to work in.
-# 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
-# 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
-# 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
-# 5) If we actually updated any files, echo a notice.
-#
-refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER)
- @rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
- $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
- -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \
- || { rm -rf $(TEMPDIR); exit 1; }
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \
- || echo $(LOG_INFO) "Rescanned $(SOURCE.AD) but encountered no changes."
- $(QUIETLY) rm -rf $(TEMPDIR)
-
-
-# #########################################################################
-
-$(SOURCE.AD): $(SOURCES.AD)
- $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD)
-
-#PROCESS_AD_FILES = cat
-# Pass through #line directives, in case user enables -g option above:
-PROCESS_AD_FILES = awk '{ \
- if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \
- if (need_lineno && $$0 !~ /\/\//) \
- { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \
- print }'
-
-$(OUTDIR)/%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# Some object files are given a prefix, to disambiguate
-# them from objects of the same name built for the VM.
-$(OUTDIR)/adlc-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# #########################################################################
-
-clean:
- rm $(OBJECTS)
-
-cleanall:
- rm $(OBJECTS) $(EXEC)
-
-# #########################################################################
-
-.PHONY: all dump refresh_adfiles clean cleanall
diff --git a/hotspot/make/aix/makefiles/build_vm_def.sh b/hotspot/make/aix/makefiles/build_vm_def.sh
deleted file mode 100644
index 8d8e8fd2955..00000000000
--- a/hotspot/make/aix/makefiles/build_vm_def.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# If we're cross compiling use that path for nm
-if [ "$CROSS_COMPILE_ARCH" != "" ]; then
-NM=$ALT_COMPILER_PATH/nm
-else
-# On AIX we have to prevent that we pick up the 'nm' version from the GNU binutils
-# which may be installed under /opt/freeware/bin. So better use an absolute path here!
-NM=/usr/bin/nm
-fi
-
-$NM -X64 -B -C $* \
- | awk '{
- if (($2="d" || $2="D") && ($3 ~ /^__vft/ || $3 ~ /^gHotSpotVM/)) print "\t" $3 ";"
- if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";"
- if ($3 ~ /^SharedArchivePath__9Arguments$/) print "\t" $3 ";"
- }' \
- | sort -u
diff --git a/hotspot/make/aix/makefiles/buildtree.make b/hotspot/make/aix/makefiles/buildtree.make
deleted file mode 100644
index 94b71eb760f..00000000000
--- a/hotspot/make/aix/makefiles/buildtree.make
+++ /dev/null
@@ -1,351 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# Usage:
-#
-# $(MAKE) -f buildtree.make SRCARCH=srcarch BUILDARCH=buildarch LIBARCH=libarch
-# GAMMADIR=dir OS_FAMILY=os VARIANT=variant
-#
-# The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the
-# environment or on the command-line:
-#
-# ARCH - sparc, i486, ... HotSpot cpu and os_cpu source directory
-# BUILDARCH - build directory
-# LIBARCH - the corresponding directory in JDK/JRE
-# GAMMADIR - top of workspace
-# OS_FAMILY - operating system
-# VARIANT - core, compiler1, compiler2, or tiered
-# VERSION_STRING - the JDK version string as specified by JEP-223
-# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
-#
-# Builds the directory trees with makefiles plus some convenience files in
-# each directory:
-#
-# Makefile - for "make foo"
-# flags.make - with macro settings
-# vm.make - to support making "$(MAKE) -v vm.make" in makefiles
-# adlc.make -
-# trace.make - generate tracing event and type definitions
-# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
-#
-# The makefiles are split this way so that "make foo" will run faster by not
-# having to read the dependency files for the vm.
-
--include $(SPEC)
-include $(GAMMADIR)/make/scm.make
-include $(GAMMADIR)/make/defs.make
-include $(GAMMADIR)/make/altsrc.make
-
-
-# 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- PLATFORM_FILE = $(shell dirname $(shell dirname $(shell pwd)))/platform_zero
-else
- ifdef USE_SUNCC
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc
- else
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
- endif
-endif
-
-# Allow overriding of the arch part of the directory but default
-# to BUILDARCH if nothing is specified
-ifeq ($(VARIANTARCH),)
- VARIANTARCH=$(BUILDARCH)
-endif
-
-ifdef FORCE_TIERED
-ifeq ($(VARIANT),tiered)
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_compiler2
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-
-#
-# We do two levels of exclusion in the shared directory.
-# TOPLEVEL excludes are pruned, they are not recursively searched,
-# but lower level directories can be named without fear of collision.
-# ALWAYS excludes are excluded at any level in the directory tree.
-#
-
-ALWAYS_EXCLUDE_DIRS = $(SCM_DIRS)
-
-ifeq ($(VARIANT),tiered)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name agent
-else
-ifeq ($(VARIANT),compiler2)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name c1 -o -name agent
-else
-# compiler1 and core use the same exclude list
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name opto -o -name libadt -o -name agent
-endif
-endif
-
-# Get things from the platform file.
-COMPILER = $(shell sed -n 's/^compiler[ ]*=[ ]*//p' $(PLATFORM_FILE))
-
-SIMPLE_DIRS = \
- $(PLATFORM_DIR)/generated/dependencies \
- $(PLATFORM_DIR)/generated/adfiles \
- $(PLATFORM_DIR)/generated/jvmtifiles \
- $(PLATFORM_DIR)/generated/tracefiles
-
-TARGETS = debug fastdebug optimized product
-SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
-
-# For dependencies and recursive makes.
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
-
-BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make
-
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
- SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
-
-# Define variables to be set in flags.make.
-# Default values are set in make/defs.make.
-
-# Set BUILD_USER from system-dependent hints: $LOGNAME, $(whoami)
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
-endif
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell whoami)
-endif
-# Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
-# or make/hotspot_distro.
-ifndef HOTSPOT_VM_DISTRO
- ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- include $(GAMMADIR)/make/hotspot_distro
- else
- include $(GAMMADIR)/make/openjdk_distro
- endif
-endif
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-ifndef OPENJDK
- ifneq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- OPENJDK=true
- endif
-endif
-
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-
-BUILDTREE = \
- $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
-
-BUILDTREE_COMMENT = echo "\# Generated by $(BUILDTREE_MAKE)"
-
-all: $(SUBMAKE_DIRS)
-
-# Run make in each subdirectory recursively.
-$(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE
- $(QUIETLY) [ -d $@ ] || { mkdir -p $@; }
- +$(QUIETLY) cd $@ && $(BUILDTREE) TARGET=$(@F)
- $(QUIETLY) touch $@
-
-$(SIMPLE_DIRS):
- $(QUIETLY) mkdir -p $@
-
-# Convenience macro which takes a source relative path, applies $(1) to the
-# absolute path, and then replaces $(GAMMADIR) in the result with a
-# 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/ppc64 = 64
-
-DATA_MODE = $(DATA_MODE/$(BUILDARCH))
-
-flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "Platform_file = $(PLATFORM_FILE)" | sed 's|$(GAMMADIR)|$$(GAMMADIR)|'; \
- sed -n '/=/s/^ */Platform_/p' < $(PLATFORM_FILE); \
- echo; \
- echo "GAMMADIR = $(GAMMADIR)"; \
- echo "HS_ALT_MAKE = $(HS_ALT_MAKE)"; \
- echo "OSNAME = $(OSNAME)"; \
- echo "SYSDEFS = \$$(Platform_sysdefs)"; \
- echo "SRCARCH = $(SRCARCH)"; \
- echo "BUILDARCH = $(BUILDARCH)"; \
- echo "LIBARCH = $(LIBARCH)"; \
- echo "TARGET = $(TARGET)"; \
- echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
- echo "VERSION_STRING = $(VERSION_STRING)"; \
- 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)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
- echo "CFLAGS += \$$(TARGET_DEFINES)"; \
- echo; \
- echo "Src_Dirs_V = \\"; \
- sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- echo; \
- echo "Src_Dirs_I = \\"; \
- echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,altsrc,share/vm) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm) \\"; \
- echo "$(call gamma-path,altsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- [ -n "$(CFLAGS_BROWSE)" ] && \
- echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
- [ -n "$(ENABLE_FULL_DEBUG_SYMBOLS)" ] && \
- echo && echo "ENABLE_FULL_DEBUG_SYMBOLS = $(ENABLE_FULL_DEBUG_SYMBOLS)"; \
- [ -n "$(OBJCOPY)" ] && \
- echo && echo "OBJCOPY = $(OBJCOPY)"; \
- [ -n "$(STRIP_POLICY)" ] && \
- echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \
- [ -n "$(ZIP_DEBUGINFO_FILES)" ] && \
- echo && echo "ZIP_DEBUGINFO_FILES = $(ZIP_DEBUGINFO_FILES)"; \
- [ -n "$(ZIPEXE)" ] && \
- echo && echo "ZIPEXE = $(ZIPEXE)"; \
- [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
- echo && \
- echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
- echo "SYSDEFS += \$$(HOTSPOT_EXTRA_SYSDEFS)"; \
- [ -n "$(INCLUDE_TRACE)" ] && \
- echo && echo "INCLUDE_TRACE = $(INCLUDE_TRACE)"; \
- echo; \
- [ -n "$(SPEC)" ] && \
- echo "include $(SPEC)"; \
- echo "CP ?= cp"; \
- echo "MV ?= mv"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(VARIANT).make"; \
- echo "include \$$(GAMMADIR)/make/excludeSrc.make"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(COMPILER).make"; \
- ) > $@
-
-flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(TARGET).make"; \
- ) > $@
-
-../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
- @echo $(LOG_INFO) Creating directory list $@
- $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
- find $(HS_ALT_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
- fi;
- $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
-
-Makefile: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/top.make"; \
- ) > $@
-
-vm.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo include flags_vm.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-adlc.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-jvmti.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-trace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-FORCE:
-
-.PHONY: all FORCE
-
-.NOTPARALLEL:
diff --git a/hotspot/make/aix/makefiles/compiler2.make b/hotspot/make/aix/makefiles/compiler2.make
deleted file mode 100644
index 13986308edf..00000000000
--- a/hotspot/make/aix/makefiles/compiler2.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# Sets make macros for making server version of VM
-
-TYPE=COMPILER2
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/aix/makefiles/core.make b/hotspot/make/aix/makefiles/core.make
deleted file mode 100644
index 56d85c8fc16..00000000000
--- a/hotspot/make/aix/makefiles/core.make
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making core version of VM
-
-# Select which files to use (in top.make)
-TYPE=CORE
-
-# There is no "core" directory in JDK. Install core build in server directory.
-VM_SUBDIR = server
-
-# Note: macros.hpp defines CORE
diff --git a/hotspot/make/aix/makefiles/debug.make b/hotspot/make/aix/makefiles/debug.make
deleted file mode 100644
index 1a1c4ebbd7d..00000000000
--- a/hotspot/make/aix/makefiles/debug.make
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(DEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-CFLAGS += $(DEBUG_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/aix/makefiles/mapfile-vers-debug
-
-VERSION = debug
-SYSDEFS += -DASSERT -DDEBUG
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/aix/makefiles/defs.make b/hotspot/make/aix/makefiles/defs.make
deleted file mode 100644
index b9c54e36149..00000000000
--- a/hotspot/make/aix/makefiles/defs.make
+++ /dev/null
@@ -1,204 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# The common definitions for hotspot AIX builds.
-# Include the top level defs.make under make directory instead of this one.
-# This file is included into make/defs.make.
-
-SLASH_JAVA ?= /java
-
-define print_info
- ifneq ($$(LOG_LEVEL), warn)
- $$(shell echo >&2 "INFO: $1")
- endif
-endef
-
-# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
-#ARCH:=$(shell uname -m)
-PATH_SEP = :
-ifeq ($(LP64), 1)
- ARCH_DATA_MODEL ?= 64
-else
- ARCH_DATA_MODEL ?= 32
-endif
-
-ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH = ppc64
-else
- ARCH = ppc
-endif
-
-# PPC
-ifeq ($(ARCH), ppc)
- #ARCH_DATA_MODEL = 32
- PLATFORM = aix-ppc
- VM_PLATFORM = aix_ppc
- HS_ARCH = ppc
-endif
-
-# PPC64
-ifeq ($(ARCH), ppc64)
- #ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = aix-ppc64
- VM_PLATFORM = aix_ppc64
- HS_ARCH = ppc
-endif
-
-# On 32 bit aix we build server and client, on 64 bit just server.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ARCH_DATA_MODEL), 32)
- JVM_VARIANTS:=client,server
- JVM_VARIANT_CLIENT:=true
- JVM_VARIANT_SERVER:=true
- else
- JVM_VARIANTS:=server
- JVM_VARIANT_SERVER:=true
- endif
-endif
-
-# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-# builds is enabled with debug info files ZIP'ed to save space. For
-# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-# debug build without debug info isn't very useful.
-# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-#
-# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-# disabled for a BUILD_FLAVOR == product build.
-#
-# Note: Use of a different variable name for the FDS override option
-# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-# in options via environment variables, use of distinct variables
-# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-# product build, the FULL_DEBUG_SYMBOLS environment variable will be
-# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-# the same variable name is used, then different values can be picked
-# up by different parts of the build. Just to be clear, we only need
-# two variable names because the incoming option value can be
-# overridden in some situations, e.g., a BUILD_FLAVOR != product
-# build.
-
-# Due to the multiple sub-make processes that occur this logic gets
-# executed multiple times. We reduce the noise by at least checking that
-# BUILD_FLAVOR has been set.
-ifneq ($(BUILD_FLAVOR),)
- ifeq ($(BUILD_FLAVOR), product)
- FULL_DEBUG_SYMBOLS ?= 1
- ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
- else
- # debug variants always get Full Debug Symbols (if available)
- ENABLE_FULL_DEBUG_SYMBOLS = 1
- endif
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # Default OBJCOPY comes from GNU Binutils on Linux
- ifeq ($(CROSS_COMPILE_ARCH),)
- DEF_OBJCOPY=/usr/bin/objcopy
- else
- # Assume objcopy is part of the cross-compilation toolset
- ifneq ($(ALT_COMPILER_PATH),)
- DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
- endif
- endif
- OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
- ifneq ($(ALT_OBJCOPY),)
- $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
- OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
- endif
-
- ifeq ($(OBJCOPY),)
- $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
- ENABLE_FULL_DEBUG_SYMBOLS=0
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- else
- $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
-
- # Library stripping policies for .debuginfo configs:
- # all_strip - strips everything from the library
- # min_strip - strips most stuff from the library; leaves minimum symbols
- # no_strip - does not strip the library at all
- #
- # Oracle security policy requires "all_strip". A waiver was granted on
- # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
- #
- # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
- #
- STRIP_POLICY ?= min_strip
-
- $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
- ZIP_DEBUGINFO_FILES ?= 1
-
- $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
- endif
- endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-endif # BUILD_FLAVOR
-
-# unused JDK_INCLUDE_SUBDIR=aix
-
-# Library suffix
-LIBRARY_SUFFIX=so
-
-EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
-
-# client and server subdirectories have symbolic links to ../libjsig.so
-EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
-#ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-# ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.diz
-# else
-# EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.debuginfo
-# endif
-#endif
-EXPORT_SERVER_DIR = $(EXPORT_LIB_ARCH_DIR)/server
-EXPORT_CLIENT_DIR = $(EXPORT_LIB_ARCH_DIR)/client
-EXPORT_MINIMAL_DIR = $(EXPORT_LIB_ARCH_DIR)/minimal
-
-ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK) $(JVM_VARIANT_CORE)), true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
-# ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-# ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
-# else
-# EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
-# endif
-# endif
-endif
-
-ifeq ($(JVM_VARIANT_CLIENT),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
-# ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-# ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
-# else
-# EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
-# endif
-# endif
-endif
diff --git a/hotspot/make/aix/makefiles/dtrace.make b/hotspot/make/aix/makefiles/dtrace.make
deleted file mode 100644
index 749877d4aee..00000000000
--- a/hotspot/make/aix/makefiles/dtrace.make
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# 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
-# 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.
-#
-#
-
-# Linux does not build jvm_db
-LIBJVM_DB =
-
diff --git a/hotspot/make/aix/makefiles/fastdebug.make b/hotspot/make/aix/makefiles/fastdebug.make
deleted file mode 100644
index c0d50079d16..00000000000
--- a/hotspot/make/aix/makefiles/fastdebug.make
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-# Pare down optimization to -O2 if xlCV10.1 is in use.
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS) $(QV10_OPT_CONSERVATIVE)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-ifeq ($(BUILDARCH), ia64)
- # Bug in GCC, causes hang. -O1 will override the -O3 specified earlier
- OPT_CFLAGS/callGenerator.o += -O1
- OPT_CFLAGS/ciTypeFlow.o += -O1
- OPT_CFLAGS/compile.o += -O1
- OPT_CFLAGS/concurrentMarkSweepGeneration.o += -O1
- OPT_CFLAGS/doCall.o += -O1
- OPT_CFLAGS/generateOopMap.o += -O1
- OPT_CFLAGS/generateOptoStub.o += -O1
- OPT_CFLAGS/graphKit.o += -O1
- OPT_CFLAGS/instanceKlass.o += -O1
- OPT_CFLAGS/interpreterRT_ia64.o += -O1
- OPT_CFLAGS/output.o += -O1
- OPT_CFLAGS/parse1.o += -O1
- OPT_CFLAGS/runtime.o += -O1
- OPT_CFLAGS/synchronizer.o += -O1
-endif
-
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/aix/makefiles/mapfile-vers-debug
-
-# xlc 10.1 parameters for ipa linkage.
-# - remove ipa linkage altogether. Does not seem to benefit performance,
-# but increases code footprint.
-# - this is a debug build in the end. Extra effort for ipa linkage is thus
-# not justified.
-LFLAGS_QIPA=
-
-VERSION = optimized
-SYSDEFS += -DASSERT
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/aix/makefiles/jsig.make b/hotspot/make/aix/makefiles/jsig.make
deleted file mode 100644
index 86c4bea5ae1..00000000000
--- a/hotspot/make/aix/makefiles/jsig.make
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build signal interposition library, used by vm.make
-
-# libjsig.so: signal interposition library
-JSIG = jsig
-LIBJSIG = lib$(JSIG).so
-
-LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo
-LIBJSIG_DIZ = lib$(JSIG).diz
-
-JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-
-DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG)
-DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO)
-DEST_JSIG_DIZ = $(JDK_LIBDIR)/$(LIBJSIG_DIZ)
-
-LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
-
-# On Linux we really dont want a mapfile, as this library is small
-# and preloaded using LD_PRELOAD, making functions private will
-# cause problems with interposing. See CR: 6466665
-# LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-
-LFLAGS_JSIG += $(BIN_UTILS)
-
-# DEBUG_BINARIES overrides everything, use full -g debug information
-ifeq ($(DEBUG_BINARIES), true)
- JSIG_DEBUG_CFLAGS = -g
-endif
-
-$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
- @echo $(LOG_INFO) Making signal interposition lib...
- $(QUIETLY) $(CXX) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $@ $< -ldl
-
-#ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-# $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
-# $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
-# ifeq ($(STRIP_POLICY),all_strip)
-# $(QUIETLY) $(STRIP) $@
-# else
-# ifeq ($(STRIP_POLICY),min_strip)
-# $(QUIETLY) $(STRIP) -g $@
-# # implied else here is no stripping at all
-# endif
-# endif
-# ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
-# $(RM) $(LIBJSIG_DEBUGINFO)
-# endif
-#endif
-
-install_jsig: $(LIBJSIG)
- @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
- $(QUIETLY) test -f $(LIBJSIG_DEBUGINFO) && \
- $(CP) -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
- $(QUIETLY) test -f $(LIBJSIG_DIZ) && \
- $(CP) -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
-
-.PHONY: install_jsig
diff --git a/hotspot/make/aix/makefiles/jvmti.make b/hotspot/make/aix/makefiles/jvmti.make
deleted file mode 100644
index cff6a741da6..00000000000
--- a/hotspot/make/aix/makefiles/jvmti.make
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (jvmti.make) is included from the jvmti.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate jvmti.
-
-include $(GAMMADIR)/make/aix/makefiles/rules.make
-
-# #########################################################################
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-
-JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
-InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(JvmtiSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-JvmtiGeneratedNames = \
- jvmtiEnv.hpp \
- jvmtiEnter.cpp \
- jvmtiEnterTrace.cpp \
- jvmtiEnvRecommended.cpp \
- bytecodeInterpreterWithChecks.cpp \
- jvmti.h \
-
-JvmtiEnvFillSource = $(JvmtiSrcDir)/jvmtiEnvFill.java
-JvmtiEnvFillClass = $(JvmtiOutDir)/jvmtiEnvFill.class
-
-JvmtiGenSource = $(JvmtiSrcDir)/jvmtiGen.java
-JvmtiGenClass = $(JvmtiOutDir)/jvmtiGen.class
-
-JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
-
-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-.PHONY: all jvmtidocs clean cleanall
-
-# #########################################################################
-
-all: $(JvmtiGeneratedFiles)
-
-both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
-
-$(JvmtiGenClass): $(JvmtiGenSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
-
-$(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-
-$(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
-
-$(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
-
-$(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
-
-$(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
- $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
-
-$(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
-
-$(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
-
-jvmtidocs: $(JvmtiOutDir)/jvmti.html
-
-$(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
-
-# #########################################################################
-
-clean :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-cleanall :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-# #########################################################################
diff --git a/hotspot/make/aix/makefiles/mapfile-vers-debug b/hotspot/make/aix/makefiles/mapfile-vers-debug
deleted file mode 100644
index fb75f3dfcea..00000000000
--- a/hotspot/make/aix/makefiles/mapfile-vers-debug
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
- JVM_VMBreakPoint;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/aix/makefiles/mapfile-vers-jsig b/hotspot/make/aix/makefiles/mapfile-vers-jsig
deleted file mode 100644
index ddb46c050ec..00000000000
--- a/hotspot/make/aix/makefiles/mapfile-vers-jsig
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# 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
-# 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.
-#
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_begin_signal_setting;
- JVM_end_signal_setting;
- JVM_get_libjsig_version;
- JVM_get_signal_action;
- sigaction;
- signal;
- sigset;
- local:
- *;
-};
diff --git a/hotspot/make/aix/makefiles/mapfile-vers-product b/hotspot/make/aix/makefiles/mapfile-vers-product
deleted file mode 100644
index ec0f06d8f65..00000000000
--- a/hotspot/make/aix/makefiles/mapfile-vers-product
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/aix/makefiles/ppc64.make b/hotspot/make/aix/makefiles/ppc64.make
deleted file mode 100644
index d7ad9510e11..00000000000
--- a/hotspot/make/aix/makefiles/ppc64.make
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2015 SAP SE. 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.
-#
-#
-
-# Produce 64 bits object files.
-CFLAGS += -q64
-
-# Balanced tuning for recent versions of the POWER architecture (if supported by xlc).
-QTUNE=$(if $(CXX_SUPPORTS_BALANCED_TUNING),balanced,pwr5)
-
-# Try to speed up the interpreter: use ppc64 instructions and inline
-# glue code for external functions.
-OPT_CFLAGS += -qarch=ppc64 -qtune=$(QTUNE) -qinlglue
-
-# We need variable length arrays
-CFLAGS += -qlanglvl=c99vla
-# Just to check for unwanted macro redefinitions
-CFLAGS += -qlanglvl=noredefmac
-
-# Suppress those "implicit private" warnings xlc gives.
-# - The omitted keyword "private" is assumed for base class "...".
-CFLAGS += -qsuppress=1540-0198
-
-# Suppress the following numerous warning:
-# - 1540-1090 (I) The destructor of "..." might not be called.
-# - 1500-010: (W) WARNING in ...: Infinite loop. Program may not stop.
-# There are several infinite loops in the vm, suppress.
-# - 1540-1639 (I) The behavior of long type bit fields has changed ...
-# ... long type bit fields now default to long, not int.
-CFLAGS += -qsuppress=1540-1090 -qsuppress=1500-010 -qsuppress=1540-1639
-
-# Suppress
-# - 540-1088 (W) The exception specification is being ignored.
-# caused by throw() in declaration of new() in nmethod.hpp.
-CFLAGS += -qsuppress=1540-1088
-
-# Turn off floating-point optimizations that may alter program semantics
-OPT_CFLAGS += -qstrict
-
-# Disable aggressive optimizations for functions in sharedRuntimeTrig.cpp
-# and sharedRuntimeTrans.cpp on ppc64.
-# -qstrict turns off the following optimizations:
-# * Performing code motion and scheduling on computations such as loads
-# and floating-point computations that may trigger an exception.
-# * Relaxing conformance to IEEE rules.
-# * Reassociating floating-point expressions.
-# When using '-qstrict' there still remains one problem
-# in javasoft.sqe.tests.api.java.lang.Math.sin5Tests when run in compile-all
-# mode, so don't optimize sharedRuntimeTrig.cpp at all.
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-
-# Xlc 10.1 parameters for aggressive optimization:
-# - qhot=level=1: Most aggressive loop optimizations.
-# - qignerrno: Assume errno is not modified by system calls.
-# - qinline: Inline method calls. No suboptions for c++ compiles.
-# - qxflag=ASMMIDCOALFIX: Activate fix for -O3 problem in interpreter loop.
-# - qxflag=asmfastsync: Activate fix for performance problem with inline assembler with memory clobber.
-QV10_OPT=$(if $(CXX_IS_V10),-qxflag=ASMMIDCOALFIX -qxflag=asmfastsync)
-QV10_OPT_AGGRESSIVE=$(if $(CXX_IS_V10),-qhot=level=1 -qignerrno -qinline)
-QV10_OPT_CONSERVATIVE=$(if $(CXX_IS_V10),-qhot=level=1 -qignerrno -qinline)
-
-# Disallow inlining for synchronizer.cpp, but perform O3 optimizations.
-OPT_CFLAGS/synchronizer.o = $(OPT_CFLAGS) -qnoinline
-
-# Set all the xlC V10.1 options here.
-OPT_CFLAGS += $(QV10_OPT) $(QV10_OPT_AGGRESSIVE)
-
-export OBJECT_MODE=64
-
-# Also build launcher as 64 bit executable.
-LAUNCHERFLAGS += -q64
diff --git a/hotspot/make/aix/makefiles/product.make b/hotspot/make/aix/makefiles/product.make
deleted file mode 100644
index f36ef69b32e..00000000000
--- a/hotspot/make/aix/makefiles/product.make
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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.
-#
-#
-
-# Sets make macros for making optimized version of Gamma VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/aix/makefiles/mapfile-vers-product
-
-# Remove ipa linkage altogether. Does not seem to benfit performance, but increases code footprint.
-LFLAGS_QIPA=
-
-SYSDEFS += -DPRODUCT
-VERSION = optimized
-
-# use -g to strip library as -x will discard its symbol table; -x is fine for
-# executables.
-# Note: these macros are not used in .debuginfo configs
-STRIP_LIBJVM = $(STRIP) -g $@ || exit 1;
-STRIP_AOUT = $(STRIP) -x $@ || exit 1;
-
-# If we can create .debuginfo files, then the VM is stripped in vm.make
-# and this macro is not used.
-# LINK_LIB.CXX/POST_HOOK += $(STRIP_$(LINK_INTO))
diff --git a/hotspot/make/aix/makefiles/rules.make b/hotspot/make/aix/makefiles/rules.make
deleted file mode 100644
index effca45effa..00000000000
--- a/hotspot/make/aix/makefiles/rules.make
+++ /dev/null
@@ -1,208 +0,0 @@
-#
-# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# Common rules/macros for the vm, adlc.
-
-# Tell make that .cpp is important
-.SUFFIXES: .cpp $(SUFFIXES)
-
-DEMANGLER = c++filt
-DEMANGLE = $(DEMANGLER) < $@ > .$@ && $(MV) -f .$@ $@
-
-# $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++).
-CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
-CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
-AS.S = $(AS) $(ASFLAGS)
-
-COMPILE.CC = $(CC_COMPILE) -c
-GENASM.CC = $(CC_COMPILE) -S
-LINK.CC = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_LIB.CC = $(CC) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CC = $(CC_COMPILE) -E
-
-COMPILE.CXX = $(CXX_COMPILE) -c
-GENASM.CXX = $(CXX_COMPILE) -S
-LINK.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_NOPROF.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS)
-LINK_LIB.CXX = $(CXX) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CXX = $(CXX_COMPILE) -E
-
-# cross compiling the jvm with c2 requires host compilers to build
-# adlc tool
-
-HOST.CXX_COMPILE = $(HOSTCXX) $(CXXFLAGS) $(CFLAGS)
-HOST.COMPILE.CXX = $(HOST.CXX_COMPILE) -c
-HOST.LINK_NOPROF.CXX = $(HOSTCXX) $(LFLAGS) $(AOUT_FLAGS)
-
-
-# Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k".
-REMOVE_TARGET = rm -f $@
-
-# Note use of ALT_BOOTDIR to explicitly specify location of java and
-# javac; this is the same environment variable used in the J2SE build
-# process for overriding the default spec, which is BOOTDIR.
-# Note also that we fall back to using JAVA_HOME if neither of these is
-# specified.
-
-ifdef ALT_BOOTDIR
-
-RUN.JAVA = $(ALT_BOOTDIR)/bin/java
-RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap
-RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah
-RUN.JAR = $(ALT_BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac
-COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(ALT_BOOTDIR)
-
-else
-
-ifdef BOOTDIR
-
-RUN.JAVA = $(BOOTDIR)/bin/java
-RUN.JAVAP = $(BOOTDIR)/bin/javap
-RUN.JAVAH = $(BOOTDIR)/bin/javah
-RUN.JAR = $(BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(BOOTDIR)/bin/javac
-COMPILE.RMIC = $(BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(BOOTDIR)
-
-else
-
-ifdef JAVA_HOME
-
-RUN.JAVA = $(JAVA_HOME)/bin/java
-RUN.JAVAP = $(JAVA_HOME)/bin/javap
-RUN.JAVAH = $(JAVA_HOME)/bin/javah
-RUN.JAR = $(JAVA_HOME)/bin/jar
-COMPILE.JAVAC = $(JAVA_HOME)/bin/javac
-COMPILE.RMIC = $(JAVA_HOME)/bin/rmic
-BOOT_JAVA_HOME = $(JAVA_HOME)
-
-else
-
-# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
-
-RUN.JAVA = java
-RUN.JAVAP = javap
-RUN.JAVAH = javah
-RUN.JAR = jar
-COMPILE.JAVAC = javac
-COMPILE.RMIC = rmic
-
-endif
-endif
-endif
-
-COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-
-SUM = /usr/bin/sum
-
-# 'gmake MAKE_VERBOSE=y' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-RUN.JAR$(MAKE_VERBOSE) += >/dev/null
-
-# Settings for javac
-JAVAC_FLAGS = -g -encoding ascii
-
-# Prefer BOOT_JDK_SOURCETARGET if it's set (typically by the top build system)
-# Fall back to the values here if it's not set (hotspot only builds)
-ifeq ($(BOOT_JDK_SOURCETARGET),)
-BOOTSTRAP_SOURCETARGET := -source 8 -target 8
-else
-BOOTSTRAP_SOURCETARGET := $(BOOT_JDK_SOURCETARGET)
-endif
-
-BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) $(BOOTSTRAP_SOURCETARGET)
-
-# With parallel makes, print a message at the end of compilation.
-ifeq ($(findstring j,$(MFLAGS)),j)
-COMPILE_DONE = && { echo Done with $<; }
-endif
-
-# Include $(NONPIC_OBJ_FILES) definition
-ifndef LP64
-include $(GAMMADIR)/make/pic.make
-endif
-
-include $(GAMMADIR)/make/altsrc.make
-
-# The non-PIC object files are only generated for 32 bit platforms.
-ifdef LP64
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-else
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
- $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
- $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
-endif
-
-%.o: %.s
- @echo $(LOG_INFO) Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
-%.s: %.cpp
- @echo $(LOG_INFO) Generating assembly for $<
- $(QUIETLY) $(GENASM.CXX) -o $@ $<
- $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE)
-
-# Intermediate files (for debugging macros)
-%.i: %.cpp
- @echo $(LOG_INFO) Preprocessing $< to $@
- $(QUIETLY) $(PREPROCESS.CXX) $< > $@ $(COMPILE_DONE)
-
-# Override gnumake built-in rules which do sccs get operations badly.
-# (They put the checked out code in the current directory, not in the
-# directory of the original file.) Since this is a symptom of a teamware
-# failure, and since not all problems can be detected by gnumake due
-# to incomplete dependency checking... just complain and stop.
-%:: s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-%:: SCCS/s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-.PHONY: default
diff --git a/hotspot/make/aix/makefiles/tiered.make b/hotspot/make/aix/makefiles/tiered.make
deleted file mode 100644
index f04496bdb60..00000000000
--- a/hotspot/make/aix/makefiles/tiered.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2015 SAP SE. 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.
-#
-#
-
-# Sets make macros for making tiered version of VM
-
-TYPE=TIERED
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2 -DCOMPILER1
diff --git a/hotspot/make/aix/makefiles/top.make b/hotspot/make/aix/makefiles/top.make
deleted file mode 100644
index fa9107c039d..00000000000
--- a/hotspot/make/aix/makefiles/top.make
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# top.make is included in the Makefile in the build directories.
-# It DOES NOT include the vm dependency info in order to be faster.
-# Its main job is to implement the incremental form of make lists.
-# It also:
-# -builds and runs adlc via adlc.make
-# -generates JVMTI source and docs via jvmti.make (JSR-163)
-
-# It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
-
-# -- D. Ungar (5/97) from a file by Bill Bush
-
-# Don't override the built-in $(MAKE).
-# Instead, use "gmake" (or "gnumake") from the command line. --Rose
-#MAKE = gmake
-
-include $(GAMMADIR)/make/altsrc.make
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-VM = $(GAMMADIR)/src/share/vm
-Plat_File = $(Platform_file)
-CDG = cd $(GENERATED);
-
-ifneq ($(USE_PRECOMPILED_HEADER),0)
-UpdatePCH = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS)
-else
-UpdatePCH = \# precompiled header is not used
-endif
-
-Cached_plat = $(GENERATED)/platform.current
-
-AD_Dir = $(GENERATED)/adfiles
-ADLC = $(AD_Dir)/adlc
-AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
-AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
-AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
-AD_Files = $(AD_Names:%=$(AD_Dir)/%)
-
-# AD_Files_If_Required/COMPILER1 = ad_stuff
-AD_Files_If_Required/COMPILER2 = ad_stuff
-AD_Files_If_Required/TIERED = ad_stuff
-AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE))
-
-# Wierd argument adjustment for "gnumake -j..."
-adjust-mflags = $(GENERATED)/adjust-mflags
-# If SPEC is set, it's from configure and it's already controlling concurrency
-# for us. Skip setting -j with HOTSPOT_BUILD_JOBS.
-ifeq ($(SPEC), )
- MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
-else
- MFLAGS-adjusted = -r $(MFLAGS)
-endif
-
-
-# default target: update lists, make vm
-# done in stages to force sequential order with parallel make
-#
-
-default: vm_build_preliminaries the_vm
- @echo All done.
-
-# This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff
- @# We need a null action here, so implicit rules don't get consulted.
-
-$(Cached_plat): $(Plat_File)
- $(CDG) $(CP) $(Plat_File) $(Cached_plat)
-
-# make AD files as necessary
-ad_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f adlc.make $(MFLAGS-adjusted)
-
-# generate JVMTI files from the spec
-jvmti_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
-
-# generate trace files
-trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f trace.make $(MFLAGS-adjusted)
-
-# and the VM: must use other makefile with dependencies included
-
-# We have to go to great lengths to get control over the -jN argument
-# to the recursive invocation of vm.make. The problem is that gnumake
-# resets -jN to -j1 for recursive runs. (How helpful.)
-# Note that the user must specify the desired parallelism level via a
-# command-line or environment variable name HOTSPOT_BUILD_JOBS.
-$(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh
- @+rm -f $@ $@+
- @+cat $< > $@+
- @+chmod +x $@+
- @+mv $@+ $@
-
-the_vm: vm_build_preliminaries $(adjust-mflags)
- +@$(UpdatePCH)
- @$(MAKE) -f vm.make $(MFLAGS-adjusted)
-
-install gamma: the_vm
- @$(MAKE) -f vm.make $@
-
-# next rules support "make foo.[ois]"
-
-%.o %.i %.s:
- +$(UpdatePCH)
- $(MAKE) -f vm.make $(MFLAGS) $@
- #$(MAKE) -f vm.make $@
-
-# this should force everything to be rebuilt
-clean:
- rm -f $(GENERATED)/*.class
- $(MAKE) -f vm.make $(MFLAGS) clean
-
-# just in case it doesn't, this should do it
-realclean:
- $(MAKE) -f vm.make $(MFLAGS) clean
- rm -fr $(GENERATED)
-
-.PHONY: default vm_build_preliminaries
-.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
-.PHONY: checks check_os_version install
-
-.NOTPARALLEL:
diff --git a/hotspot/make/aix/makefiles/trace.make b/hotspot/make/aix/makefiles/trace.make
deleted file mode 100644
index f17e75e1f4f..00000000000
--- a/hotspot/make/aix/makefiles/trace.make
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (trace.make) is included from the trace.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate trace files.
-
-include $(GAMMADIR)/make/aix/makefiles/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-# #########################################################################
-
-HAS_ALT_SRC := false
-ifndef OPENJDK
- ifneq ($(wildcard $(HS_ALT_SRC)/share/vm/trace), )
- HAS_ALT_SRC := true
- endif
-endif
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-TraceOutDir = $(GENERATED)/tracefiles
-
-TraceAltSrcDir = $(HS_ALT_SRC)/share/vm/trace
-TraceSrcDir = $(HS_COMMON_SRC)/share/vm/trace
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(TraceSrcDir) $(TraceAltSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-TraceGeneratedNames = \
- traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
-
-ifeq ($(HAS_ALT_SRC), true)
-TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
-endif
-
-TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
-
-XSLT = $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-TraceXml = $(TraceSrcDir)/trace.xml
-ifeq ($(HAS_ALT_SRC), true)
- TraceXml = $(TraceAltSrcDir)/trace.xml
-endif
-
-XML_DEPS = $(TraceXml) $(TraceSrcDir)/tracetypes.xml \
- $(TraceSrcDir)/trace.dtd $(TraceSrcDir)/xinclude.mod \
- $(TraceSrcDir)/tracerelationdecls.xml $(TraceSrcDir)/traceevents.xml
-ifeq ($(HAS_ALT_SRC), true)
- XML_DEPS += $(TraceAltSrcDir)/traceeventscustom.xml \
- $(TraceAltSrcDir)/traceeventtypes.xml
-endif
-
-.PHONY: all clean cleanall
-
-# #########################################################################
-
-all: $(TraceGeneratedFiles)
-
-GENERATE_CODE= \
- $(QUIETLY) echo $(LOG_INFO) Generating $@; \
- $(XSLT) -IN $(word 1,$^) -XSL $(word 2,$^) -OUT $@
-
-$(TraceOutDir)/traceEventIds.hpp: $(TraceXml) $(TraceSrcDir)/traceEventIds.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceTypes.hpp: $(TraceXml) $(TraceSrcDir)/traceTypes.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-ifeq ($(HAS_ALT_SRC), false)
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-else
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceRequestables.hpp: $(TraceXml) $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceEventControl.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-endif
-
-# #########################################################################
-
-clean cleanall:
- rm $(TraceGeneratedFiles)
diff --git a/hotspot/make/aix/makefiles/vm.make b/hotspot/make/aix/makefiles/vm.make
deleted file mode 100644
index 808bb124892..00000000000
--- a/hotspot/make/aix/makefiles/vm.make
+++ /dev/null
@@ -1,370 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build JVM and related libraries, included from vm.make in the build
-# directory.
-
-# Common build rules.
-MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
-include $(MAKEFILES_DIR)/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-default: build
-
-#----------------------------------------------------------------------
-# Defs
-
-GENERATED = ../generated
-DEP_DIR = $(GENERATED)/dependencies
-
-# reads the generated files defining the set of .o's and the .o .h dependencies
--include $(DEP_DIR)/*.d
-
-# read machine-specific adjustments (%%% should do this via buildtree.make?)
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- include $(MAKEFILES_DIR)/zeroshark.make
-else
- include $(MAKEFILES_DIR)/$(BUILDARCH).make
-endif
-
-# set VPATH so make knows where to look for source files
-# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The adfiles directory contains ad_.[ch]pp.
-# The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor.
-Src_Dirs_I += $(GENERATED)
-# The order is important for the precompiled headers to work.
-INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
-
-# SYMFLAG is used by jsig.make
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # always build with debug info when we can create .debuginfo files
- SYMFLAG = -g
-else
- ifeq (${VERSION}, debug)
- SYMFLAG = -g
- else
- SYMFLAG =
- endif
-endif
-
-# The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
- -DVERSION_MINOR=$(VERSION_MINOR) \
- -DVERSION_SECURITY=$(VERSION_SECURITY) \
- -DVERSION_PATCH=$(VERSION_PATCH) \
- -DVERSION_BUILD=$(VERSION_BUILD)
-VM_VER_DEFS = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
- -DVERSION_STRING="\"$(VERSION_STRING)\"" \
- -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
- $(JDK_VER_DEFS)
-HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
-BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
-VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
-
-CXXFLAGS = \
- ${SYSDEFS} \
- ${INCLUDES} \
- ${BUILD_USER} \
- ${HS_LIB_ARCH} \
- ${VM_DISTRO}
-
-# This is VERY important! The version define must only be supplied to vm_version.o
-# If not, ccache will not re-use the cache at all, since the version string might contain
-# a time and date.
-CXXFLAGS/vm_version.o += ${VM_VER_DEFS}
-
-CXXFLAGS/BYFILE = $(CXXFLAGS/$@)
-
-# File specific flags
-CXXFLAGS += $(CXXFLAGS/BYFILE)
-
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-CFLAGS += $(CFLAGS_WARN/BYFILE)
-
-# Do not use C++ exception handling
-CFLAGS += $(CFLAGS/NOEX)
-
-# Extra flags from gnumake's invocation or environment
-CFLAGS += $(EXTRA_CFLAGS)
-LFLAGS += $(EXTRA_CFLAGS)
-
-# Don't set excutable bit on stack segment
-# the same could be done by separate execstack command
-#LFLAGS += -Xlinker -z -Xlinker noexecstack
-
-LIBS += -lm -ldl -lpthread
-
-# By default, link the *.o into the library, not the executable.
-LINK_INTO$(LINK_INTO) = LIBJVM
-
-JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
-
-#----------------------------------------------------------------------
-# jvm_db & dtrace
-include $(MAKEFILES_DIR)/dtrace.make
-
-#----------------------------------------------------------------------
-# JVM
-
-JVM = jvm
-LIBJVM = lib$(JVM).so
-
-LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
-LIBJVM_DIZ = lib$(JVM).diz
-
-SPECIAL_PATHS:=adlc c1 gc opto shark libadt
-
-SOURCE_PATHS=\
- $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
- \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(SRCARCH)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_family)_$(SRCARCH)/vm
-
-CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
-CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-
-ifneq ($(INCLUDE_TRACE), false)
-CORE_PATHS+=$(shell if [ -d $(HS_ALT_SRC)/share/vm/jfr ]; then \
- find $(HS_ALT_SRC)/share/vm/jfr -type d; \
- fi)
-endif
-
-COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
-COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
-
-COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
-COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
-COMPILER2_PATHS += $(GENERATED)/adfiles
-
-SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
-
-# Include dirs per type.
-Src_Dirs/CORE := $(CORE_PATHS)
-Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
-Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/ZERO := $(CORE_PATHS)
-Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
-Src_Dirs := $(Src_Dirs/$(TYPE))
-
-COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp c2_\* runtime_\*
-COMPILER1_SPECIFIC_FILES := c1_\*
-SHARK_SPECIFIC_FILES := shark
-ZERO_SPECIFIC_FILES := zero
-
-# Always exclude these.
-Src_Files_EXCLUDE += jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
-
-# Exclude per type.
-Src_Files_EXCLUDE/CORE := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/TIERED := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/ZERO := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/SHARK := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
-
-Src_Files_EXCLUDE += $(Src_Files_EXCLUDE/$(TYPE))
-
-# Disable ELF decoder on AIX (AIX uses XCOFF).
-Src_Files_EXCLUDE += decoder_elf.cpp elfFile.cpp elfStringTable.cpp elfSymbolTable.cpp elfFuncDescTable.cpp
-
-# Special handling of arch model.
-ifeq ($(Platform_arch_model), x86_32)
-Src_Files_EXCLUDE += \*x86_64\*
-endif
-ifeq ($(Platform_arch_model), x86_64)
-Src_Files_EXCLUDE += \*x86_32\*
-endif
-
-# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
-define findsrc
- $(notdir $(shell find $(1)/. ! -name . -prune \
- -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
- -a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
-endef
-
-Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
-
-Obj_Files = $(sort $(addsuffix .o,$(basename $(Src_Files))))
-
-JVM_OBJ_FILES = $(Obj_Files)
-
-vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
-
-MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers
-
-mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def
- rm -f $@
- awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
- { system ("cat ${MAPFILE_SHARE} vm.def"); } \
- else \
- { print $$0 } \
- }' > $@ < $(MAPFILE)
-
-mapfile_reorder : mapfile $(REORDERFILE)
- rm -f $@
- cat $^ > $@
-
-vm.def: $(Res_Files) $(Obj_Files)
- sh $(GAMMADIR)/make/aix/makefiles/build_vm_def.sh *.o > $@
-
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
- STATIC_CXX = false
-else
- ifeq ($(ZERO_LIBARCH), ppc64)
- STATIC_CXX = false
- else
- STATIC_CXX = true
- endif
-endif
-
-ifeq ($(LINK_INTO),AOUT)
- LIBJVM.o =
- LIBJVM_MAPFILE =
- LIBS_VM = $(LIBS)
-else
- LIBJVM.o = $(JVM_OBJ_FILES)
- LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
- LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
-# xlC_r ignores the -o= syntax
-# LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
-
- # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
- # get around library dependency and compatibility issues. Must use gcc not
- # g++ to link.
- LIBS_VM += $(STATIC_STDCXX) $(LIBS)
-endif
-
-LINK_VM = $(LINK_LIB.CXX)
-
-# create loadmap for libjvm.so by default. Helps in diagnosing some problems.
-LFLAGS_VM += -bloadmap:libjvm.loadmap
-
-# rule for building precompiled header
-$(PRECOMPILED_HEADER):
- $(QUIETLY) echo $(LOG_INFO) Generating precompiled header $@
- $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
-
-# making the library:
-
-ifneq ($(JVM_BASE_ADDR),)
-# By default shared library is linked at base address == 0. Modify the
-# linker script if JVM prefers a different base location. It can also be
-# implemented with 'prelink -r'. But 'prelink' is not (yet) available on
-# our build platform (AS-2.1).
-LD_SCRIPT = libjvm.so.lds
-$(LD_SCRIPT): $(LIBJVM_MAPFILE)
- $(QUIETLY) { \
- rm -rf $@; \
- $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
- sed -e '/^======/,/^======/!d' \
- -e '/^======/d' \
- -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
- > $@; \
- }
-LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
-endif
-
-# With more recent Redhat releases (or the cutting edge version Fedora), if
-# SELinux is configured to be enabled, the runtime linker will fail to apply
-# the text relocation to libjvm.so considering that it is built as a non-PIC
-# DSO. To workaround that, we run chcon to libjvm.so after it is built. See
-# details in bug 6538311.
-$(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
- $(QUIETLY) { \
- echo $(LOG_INFO) Linking vm...; \
- $(LINK_LIB.CXX/PRE_HOOK) \
- $(LINK_VM) $(LD_SCRIPT_FLAG) \
- $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
- $(LINK_LIB.CXX/POST_HOOK) \
- rm -f $@.1; ln -s $@ $@.1; \
- }
-# No security contexts on AIX
-# if [ \"$(CROSS_COMPILE_ARCH)\" = \"\" ] ; then \
-# if [ -x /usr/sbin/selinuxenabled ] ; then \
-# /usr/sbin/selinuxenabled; \
-# if [ $$? = 0 ] ; then \
-# /usr/bin/chcon -t textrel_shlib_t $@; \
-# if [ $$? != 0 ]; then \
-# echo "ERROR: Cannot chcon $@"; \
-# fi \
-# fi \
-# fi \
-# fi \
-# }
-
-#ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-# $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
-# $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
-# ifeq ($(STRIP_POLICY),all_strip)
-# $(QUIETLY) $(STRIP) $@
-# else
-# ifeq ($(STRIP_POLICY),min_strip)
-# $(QUIETLY) $(STRIP) -g $@
-# # implied else here is no stripping at all
-# endif
-# endif
-# ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
-# $(RM) $(LIBJVM_DEBUGINFO)
-# endif
-#endif
-
-DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR)
-DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
-DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO)
-DEST_JVM_DIZ = $(DEST_SUBDIR)/$(LIBJVM_DIZ)
-
-install_jvm: $(LIBJVM)
- @echo "Copying $(LIBJVM) to $(DEST_JVM)"
- $(QUIETLY) test -f $(LIBJVM_DEBUGINFO) && \
- $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
- $(QUIETLY) test -f $(LIBJVM_DIZ) && \
- $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
-
-#----------------------------------------------------------------------
-# Other files
-
-# Signal interposition library
-include $(MAKEFILES_DIR)/jsig.make
-
-#----------------------------------------------------------------------
-
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB)
-
-install: install_jvm install_jsig
-
-.PHONY: default build install install_jvm
diff --git a/hotspot/make/aix/makefiles/xlc.make b/hotspot/make/aix/makefiles/xlc.make
deleted file mode 100644
index c44d306359e..00000000000
--- a/hotspot/make/aix/makefiles/xlc.make
+++ /dev/null
@@ -1,172 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2015 SAP SE. 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.
-#
-#
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# Set compiler explicitly
-CXX = $(COMPILER_PATH)xlC_r
-CC = $(COMPILER_PATH)xlc_r
-HOSTCXX = $(CXX)
-HOSTCC = $(CC)
-
-AS = $(CC) -c
-
-# get xlc version which comes as VV.RR.MMMM.LLLL where 'VV' is the version,
-# 'RR' is the release, 'MMMM' is the modification and 'LLLL' is the level.
-# We only use 'VV.RR.LLLL' to avoid integer overflows in bash when comparing
-# the version numbers (some shells only support 32-bit integer compares!).
-CXX_VERSION := $(shell $(CXX) -qversion 2>&1 | \
- sed -n 's/.*Version: \([0-9]\{2\}\).\([0-9]\{2\}\).[0-9]\{4\}.\([0-9]\{4\}\)/\1\2\3/p')
-
-# xlc 08.00.0000.0023 and higher supports -qtune=balanced
-CXX_SUPPORTS_BALANCED_TUNING := $(shell if [ $(CXX_VERSION) -ge 08000023 ] ; then echo "true" ; fi)
-# xlc 10.01 is used with aggressive optimizations to boost performance
-CXX_IS_V10 := $(shell if [ $(CXX_VERSION) -ge 10010000 ] ; then echo "true" ; fi)
-
-# check for precompiled headers support
-
-# Switch off the precompiled header support. Neither xlC 8.0 nor xlC 10.0
-# support precompiled headers. Both "understand" the command line switches "-qusepcomp" and
-# "-qgenpcomp" but when we specify them the following message is printed:
-# "1506-755 (W) The -qusepcomp option is not supported in this release."
-USE_PRECOMPILED_HEADER = 0
-ifneq ($(USE_PRECOMPILED_HEADER),0)
-PRECOMPILED_HEADER_DIR=.
-PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
-endif
-
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -qpic=large
-
-VM_PICFLAG/LIBJVM = $(PICFLAG)
-VM_PICFLAG/AOUT =
-VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
-
-CFLAGS += $(VM_PICFLAG)
-CFLAGS += -qnortti
-CFLAGS += -qnoeh
-
-# for compiler-level tls
-CFLAGS += -qtls=default
-
-CFLAGS += -D_REENTRANT
-# no xlc counterpart for -fcheck-new
-# CFLAGS += -fcheck-new
-
-# We need to define this on the command line if we want to use the the
-# predefined format specifiers from "inttypes.h". Otherwise system headrs
-# can indirectly include inttypes.h before we define __STDC_FORMAT_MACROS
-# in globalDefinitions.hpp
-CFLAGS += -D__STDC_FORMAT_MACROS
-
-ARCHFLAG = -q64
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# Keep temporary files (.ii, .s)
-# no counterpart on xlc for -save-temps, -pipe
-
-# Compiler warnings are treated as errors
-# Do not treat warnings as errors
-# WARNINGS_ARE_ERRORS = -Werror
-# Except for a few acceptable ones
-# ACCEPTABLE_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare
-# CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ACCEPTABLE_WARNINGS)
-CFLAGS_WARN/COMMON =
-CFLAGS_WARN/DEFAULT = $(CFLAGS_WARN/COMMON) $(EXTRA_WARNINGS)
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-
-# The flags to use for an optimized build
-OPT_CFLAGS += -O3
-
-# Hotspot uses very unstrict aliasing turn this optimization off
-OPT_CFLAGS += -qalias=noansi
-
-OPT_CFLAGS/NOOPT=-qnoopt
-
-DEPFLAGS = -qmakedep=gcc -MF $(DEP_DIR)/$(@:%=%.d)
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# statically link libstdc++.so, work with gcc but ignored by g++
-STATIC_STDCXX = -Wl,-lC_r
-
-# Enable linker optimization
-# no counterpart on xlc for this
-# LFLAGS += -Xlinker -O1
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-# MAPFLAG = -Xlinker --version-script=FILENAME
-
-# Build shared library
-SHARED_FLAG = -q64 -b64 -bexpall -G -bnoentry -qmkshrobj -brtl -bnolibpath -bernotok
-
-#------------------------------------------------------------------------
-# Debug flags
-
-# Always compile with '-g' to get symbols in the stacktraces in the hs_err file
-DEBUG_CFLAGS += -g
-FASTDEBUG_CFLAGS += -g
-OPT_CFLAGS += -g
-
-# DEBUG_BINARIES overrides everything, use full -g debug information
-ifeq ($(DEBUG_BINARIES), true)
- DEBUG_CFLAGS = -g
- CFLAGS += $(DEBUG_CFLAGS)
-endif
-
-# If we are building HEADLESS, pass on to VM
-# so it can set the java.awt.headless property
-ifdef HEADLESS
-CFLAGS += -DHEADLESS
-endif
-
-# We are building Embedded for a small device
-# favor code space over speed
-ifdef MINIMIZE_RAM_USAGE
-CFLAGS += -DMINIMIZE_RAM_USAGE
-endif
-
-ifdef CROSS_COMPILE_ARCH
- STRIP = $(ALT_COMPILER_PATH)/strip
-else
- STRIP = strip
-endif
diff --git a/hotspot/make/aix/platform_ppc64 b/hotspot/make/aix/platform_ppc64
deleted file mode 100644
index 5a21fb9c031..00000000000
--- a/hotspot/make/aix/platform_ppc64
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = aix
-
-arch = ppc
-
-arch_model = ppc_64
-
-os_arch = aix_ppc
-
-os_arch_model = aix_ppc_64
-
-lib_arch = ppc64
-
-compiler = xlc
-
-gnu_dis_arch = ppc64
-
-sysdefs = -DAIX -DPPC64
diff --git a/hotspot/make/altsrc.make b/hotspot/make/altsrc.make
deleted file mode 100644
index 027dc35d966..00000000000
--- a/hotspot/make/altsrc.make
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# Copyright (c) 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.
-#
-#
-
-# This file defines variables and macros which are used in the makefiles to
-# allow distributions to augment or replace common hotspot code with
-# distribution-specific source files. This capability is disabled when
-# an OPENJDK build is requested, unless HS_ALT_SRC_REL has been set externally.
-
-# Requires: GAMMADIR
-# Provides:
-# variables: HS_COMMON_SRC, HS_ALT_SRC, HS_COMMON_SRC_REL, and HS_ALT_SRC_REL
-# functions: altsrc-equiv, if-has-altsrc, altsrc, altsrc-replace
-
-HS_COMMON_SRC_REL=src
-
-ifneq ($(OPENJDK),true)
- # This needs to be changed to a more generic location, but we keep it
- # as this for now for compatibility
- HS_ALT_SRC_REL=src/closed
-else
- HS_ALT_SRC_REL=NO_SUCH_PATH
-endif
-
-HS_COMMON_SRC=$(GAMMADIR)/$(HS_COMMON_SRC_REL)
-HS_ALT_SRC=$(GAMMADIR)/$(HS_ALT_SRC_REL)
-
-## altsrc-equiv
-#
-# Convert a common source path to an alternative source path
-#
-# Parameter: An absolute path into the common sources
-# Result: The matching path to the alternate-source location
-#
-altsrc-equiv=$(subst $(HS_COMMON_SRC)/,$(HS_ALT_SRC)/,$(1))
-
-
-## if-has-altsrc
-#
-# Conditional macro to test for the existence of an alternate source path
-#
-# Parameter: An absolute path into the common sources
-# Parameter: Result if the alternative-source location exists
-# Parameter: Result if the alternative-source location does not exist
-# Result: expands to parameter 2 or 3 depending on existence of alternate source
-#
-if-has-altsrc=$(if $(wildcard $(call altsrc-equiv,$(1))),$(2),$(3))
-
-
-## altsrc
-#
-# Converts common source path to alternate source path if the alternate
-# path exists, otherwise evaluates to nul (empty string)
-#
-# Parameter: An absolute path into the common sources
-# Result: The equivalent path to the alternate-source location, if such a
-# location exists on the filesystem. Otherwise it expands to empty.
-#
-altsrc=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1)))
-
-## commonsrc
-#
-# Returns parameter.
-#
-commonsrc=$(1)
-
-
-## altsrc-replace
-#
-# Converts a common source path to an alternate source path if the alternate
-# source path exists. Otherwise it evaluates to the input common source path.
-#
-# Parameter: An absolute path into the common sources
-# Result: A path to either the common or alternate sources
-#
-altsrc-replace=$(call if-has-altsrc,$(1),$(call altsrc-equiv,$(1)),$(1))
diff --git a/hotspot/make/bsd/Makefile b/hotspot/make/bsd/Makefile
deleted file mode 100644
index d3e977f152b..00000000000
--- a/hotspot/make/bsd/Makefile
+++ /dev/null
@@ -1,386 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile creates a build tree and lights off a build.
-# You can go back into the build tree and perform rebuilds or
-# incremental builds as desired. Be sure to reestablish
-# environment variable settings for LD_LIBRARY_PATH and JAVA_HOME.
-
-# The make process now relies on java and javac. These can be
-# specified either implicitly on the PATH, by setting the
-# (JDK-inherited) ALT_BOOTDIR environment variable to full path to a
-# JDK in which bin/java and bin/javac are present and working (e.g.,
-# /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited)
-# default BOOTDIR path value. Note that one of ALT_BOOTDIR
-# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
-# from the PATH.
-#
-# One can set ALT_BOOTDIR or BOOTDIR to point to a jdk that runs on
-# an architecture that differs from the target architecture, as long
-# as the bootstrap jdk runs under the same flavor of OS as the target
-# (i.e., if the target is linux, point to a jdk that runs on a linux
-# box). In order to use such a bootstrap jdk, set the make variable
-# REMOTE to the desired remote command mechanism, e.g.,
-#
-# make REMOTE="rsh -l me myotherlinuxbox"
-
-ifeq ($(GAMMADIR),)
-include ../../make/defs.make
-else
-include $(GAMMADIR)/make/defs.make
-endif
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
-
-ifndef CC_INTERP
- ifndef FORCE_TIERED
- FORCE_TIERED=1
- endif
-endif
-
-ifdef LP64
- ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- _JUNK_ := $(shell echo >&2 \
- $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!")
- @exit 1
- endif
-endif
-
-# we need to set up LP64 correctly to satisfy sanity checks in adlc
-ifneq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- MFLAGS += " LP64=1 "
-endif
-
-# pass USE_SUNCC further, through MFLAGS
-ifdef USE_SUNCC
- MFLAGS += " USE_SUNCC=1 "
-endif
-
-# The following renders pathnames in generated Makefiles valid on
-# machines other than the machine containing the build tree.
-#
-# For example, let's say my build tree lives on /files12 on
-# exact.east.sun.com. This logic will cause GAMMADIR to begin with
-# /net/exact/files12/...
-#
-# We only do this on SunOS variants, for a couple of reasons:
-# * It is extremely rare that source trees exist on other systems
-# * It has been claimed that the Linux automounter is flakey, so
-# changing GAMMADIR in a way that exercises the automounter could
-# prove to be a source of unreliability in the build process.
-# Obviously, this Makefile is only relevant on SunOS boxes to begin
-# with, but the SunOS conditionalization will make it easier to
-# combine Makefiles in the future (assuming we ever do that).
-
-ifeq ($(OSNAME),solaris)
-
- # prepend current directory to relative pathnames.
- NEW_GAMMADIR := \
- $(shell echo $(GAMMADIR) | \
- sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \
- )
- unexport NEW_GAMMADIR
-
- # If NEW_GAMMADIR doesn't already start with "/net/":
- ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),)
- # prepend /net/$(HOST)
- # remove /net/$(HOST) if name already began with /home/
- # remove /net/$(HOST) if name already began with /java/
- # remove /net/$(HOST) if name already began with /lab/
- NEW_GAMMADIR := \
- $(shell echo $(NEW_GAMMADIR) | \
- sed -e "s=^\(.*\)=/net/$(HOST)\1=" \
- -e "s=^/net/$(HOST)/home/=/home/=" \
- -e "s=^/net/$(HOST)/java/=/java/=" \
- -e "s=^/net/$(HOST)/lab/=/lab/=" \
- )
- # Don't use the new value for GAMMADIR unless a file with the new
- # name actually exists.
- ifneq ($(wildcard $(NEW_GAMMADIR)),)
- GAMMADIR := $(NEW_GAMMADIR)
- endif
- endif
-
-endif
-
-# BUILDARCH is set to "zero" for Zero builds. VARIANTARCH
-# is used to give the build directories meaningful names.
-VARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH))
-
-# There is a (semi-) regular correspondence between make targets and actions:
-#
-# Target Tree Type Build Dir
-#
-# debug compiler2 __compiler2/debug
-# fastdebug compiler2 __compiler2/fastdebug
-# optimized compiler2 __compiler2/optimized
-# product compiler2 __compiler2/product
-#
-# debug1 compiler1 __compiler1/debug
-# fastdebug1 compiler1 __compiler1/fastdebug
-# optimized1 compiler1 __compiler1/optimized
-# product1 compiler1 __compiler1/product
-#
-# debugcore core __core/debug
-# fastdebugcore core __core/fastdebug
-# optimizedcore core __core/optimized
-# productcore core __core/product
-#
-# debugzero zero __zero/debug
-# fastdebugzero zero __zero/fastdebug
-# optimizedzero zero __zero/optimized
-# productzero zero __zero/product
-#
-# debugshark shark __shark/debug
-# fastdebugshark shark __shark/fastdebug
-# optimizedshark shark __shark/optimized
-# productshark shark __shark/product
-#
-# fastdebugminimal1 minimal1 __minimal1/fastdebug
-# debugminimal1 minimal1 __minimal1/debug
-# productminimal1 minimal1 __minimal1/product
-#
-# What you get with each target:
-#
-# debug* - debug compile with asserts enabled
-# fastdebug* - optimized compile, but with asserts enabled
-# optimized* - optimized compile, no asserts
-# product* - the shippable thing: optimized compile, no asserts, -DPRODUCT
-
-# This target list needs to be coordinated with the usage message
-# in the build.sh script:
-TARGETS = debug fastdebug optimized product
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- SUBDIR_DOCS = $(OSNAME)_$(VARIANTARCH)_docs
-else
- SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs
-endif
-SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
-SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
-SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
-SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
-SUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
-SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS))
-SUBDIRS_MINIMAL1 = $(addprefix $(OSNAME)_$(BUILDARCH)_minimal1/,$(TARGETS))
-
-TARGETS_C2 = $(TARGETS)
-TARGETS_C1 = $(addsuffix 1,$(TARGETS))
-TARGETS_TIERED = $(addsuffix tiered,$(TARGETS))
-TARGETS_CORE = $(addsuffix core,$(TARGETS))
-TARGETS_ZERO = $(addsuffix zero,$(TARGETS))
-TARGETS_SHARK = $(addsuffix shark,$(TARGETS))
-TARGETS_MINIMAL1 = $(addsuffix minimal1,$(TARGETS))
-
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) LIBRARY_SUFFIX=$(LIBRARY_SUFFIX)
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-BUILDTREE_VARS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
-
-BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
-
-#-------------------------------------------------------------------------------
-
-# Could make everything by default, but that would take a while.
-all:
- @echo "Try '$(MAKE) ...' where is one or more of"
- @echo " $(TARGETS_C2)"
- @echo " $(TARGETS_C1)"
- @echo " $(TARGETS_CORE)"
- @echo " $(TARGETS_ZERO)"
- @echo " $(TARGETS_SHARK)"
- @echo " $(TARGETS_MINIMAL1)"
-
-checks: check_os_version check_j2se_version
-
-# We do not want people accidentally building on old systems (e.g. Linux 2.2.x,
-# Solaris 2.5.1, 2.6).
-# Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok.
-
-#SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 2.7%
-DISABLE_HOTSPOT_OS_VERSION_CHECK = ok
-OS_VERSION := $(shell uname -r)
-EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
-
-check_os_version:
-ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
- $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
-endif
-
-# jvmti.make requires XSLT (J2SE 1.4.x or newer):
-XSLT_CHECK = $(REMOTE) $(RUN.JAVAP) javax.xml.transform.TransformerFactory
-# If not found then fail fast.
-check_j2se_version:
- $(QUIETLY) if ! $(XSLT_CHECK) > /dev/null 2>&1; then \
- $(REMOTE) $(RUN.JAVA) -version; \
- echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \
- "to bootstrap this build" 1>&2; \
- exit 1; \
- fi
-
-$(SUBDIRS_TIERED): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered
-
-$(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifeq ($(FORCE_TIERED),1)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
-else
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler2
-endif
-
-$(SUBDIRS_C1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler1
-
-$(SUBDIRS_CORE): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=core
-
-$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_MINIMAL1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=minimal1
-
-platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
- $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
-
-# Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
-
-$(TARGETS_C2): $(SUBDIRS_C2)
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_TIERED): $(SUBDIRS_TIERED)
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_C1): $(SUBDIRS_C1)
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_CORE): $(SUBDIRS_CORE)
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_ZERO): $(SUBDIRS_ZERO)
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_SHARK): $(SUBDIRS_SHARK)
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_MINIMAL1): $(SUBDIRS_MINIMAL1)
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-# Just build the tree, and nothing else:
-tree: $(SUBDIRS_C2)
-tree1: $(SUBDIRS_C1)
-treecore: $(SUBDIRS_CORE)
-treezero: $(SUBDIRS_ZERO)
-treeshark: $(SUBDIRS_SHARK)
-treeminimal1: $(SUBDIRS_MINIMAL1)
-
-# Doc target. This is the same for all build options.
-# Hence create a docs directory beside ...$(ARCH)_[...]
-# We specify 'BUILD_FLAVOR=product' so that the proper
-# ENABLE_FULL_DEBUG_SYMBOLS value is used.
-docs: checks
- $(QUIETLY) mkdir -p $(SUBDIR_DOCS)
- $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
-
-# Synonyms for win32-like targets.
-compiler2: debug product
-
-compiler1: debug1 product1
-
-core: debugcore productcore
-
-zero: debugzero productzero
-
-shark: debugshark productshark
-
-warn_jvmg_deprecated:
- echo "Warning: The jvmg target has been replaced with debug"
- echo "Warning: Please update your usage"
-
-jvmg: warn_jvmg_deprecated debug
-
-jvmg1: warn_jvmg_deprecated debug1
-
-jvmgcore: warn_jvmg_deprecated debugcore
-
-jvmgzero: warn_jvmg_deprecated debugzero
-
-jvmgshark: warn_jvmg_deprecated debugshark
-
-clean_docs:
- rm -rf $(SUBDIR_DOCS)
-
-clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark clean_minimal1:
- rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
-
-clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_minimal1 clean_docs
-
-include $(GAMMADIR)/make/cscope.make
-
-#
-# Include alternate Makefile if it exists.
-#
--include $(HS_ALT_MAKE)/$(OSNAME)/Makefile.make
-
-#-------------------------------------------------------------------------------
-
-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK) $(TARGETS_MINIMAL1)
-.PHONY: tree tree1 treecore treezero treeshark
-.PHONY: all compiler1 compiler2 core zero shark
-.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs
-.PHONY: checks check_os_version check_j2se_version
-.PHONY: $(HS_ALT_MAKE)/$(OSNAME)/Makefile.make
-
-.NOTPARALLEL:
diff --git a/hotspot/make/bsd/README b/hotspot/make/bsd/README
deleted file mode 100644
index d3efaf8b610..00000000000
--- a/hotspot/make/bsd/README
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.
-
-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.
-
-________________________________________________________________________
-
-Please refer to the comments in the Makefile in this directory
-for instructions how to build the Solaris versions.
-
diff --git a/hotspot/make/bsd/adlc_updater b/hotspot/make/bsd/adlc_updater
deleted file mode 100644
index 99e04e333f2..00000000000
--- a/hotspot/make/bsd/adlc_updater
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /bin/sh
-#
-# This file is used by adlc.make to selectively update generated
-# adlc files. Because source and target diretories are relative
-# paths, this file is copied to the target build directory before
-# use.
-#
-# adlc-updater
-#
-fix_lines() {
- # repair bare #line directives in $1 to refer to $2
- # and add an override of __FILE__ with just the basename on the
- # first line of the file.
- awk < $1 > $1+ -v F2=$2 '
- BEGIN { print "#line 1 \"" F2 "\""; }
- /^#line 999999$/ {print "#line " (NR+1) " \"" F2 "\""; next}
- {print}
- '
- mv $1+ $1
-}
-fix_lines $2/$1 $1
-[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
-( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
diff --git a/hotspot/make/bsd/makefiles/adjust-mflags.sh b/hotspot/make/bsd/makefiles/adjust-mflags.sh
deleted file mode 100644
index 97bc02db7f1..00000000000
--- a/hotspot/make/bsd/makefiles/adjust-mflags.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#! /bin/sh
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# This script is used only from top.make.
-# The macro $(MFLAGS-adjusted) calls this script to
-# adjust the "-j" arguments to take into account
-# the HOTSPOT_BUILD_JOBS variable. The default
-# handling of the "-j" argument by gnumake does
-# not meet our needs, so we must adjust it ourselves.
-
-# This argument adjustment applies to two recursive
-# calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make.
-# One invokes adlc.make, and the other invokes vm.make.
-# The adjustment propagates the desired concurrency
-# level down to the sub-make (of the adlc or vm).
-# The default behavior of gnumake is to run all
-# sub-makes without concurrency ("-j1").
-
-# Also, we use a make variable rather than an explicit
-# "-j" argument to control this setting, so that
-# the concurrency setting (which must be tuned separately
-# for each MP system) can be set via an environment variable.
-# The recommended setting is 1.5x to 2x the number of available
-# CPUs on the MP system, which is large enough to keep the CPUs
-# busy (even though some jobs may be I/O bound) but not too large,
-# we may presume, to overflow the system's swap space.
-
-set -eu
-
-default_build_jobs=4
-
-case $# in
-[12]) true;;
-*) >&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;;
-esac
-
-MFLAGS=$1
-HOTSPOT_BUILD_JOBS=${2-}
-
-# Normalize any -jN argument to the form " -j${HBJ}"
-MFLAGS=`
- echo "$MFLAGS" \
- | sed '
- s/^-/ -/
- s/ -\([^ I][^ I]*\)j/ -\1 -j/
- s/ -j[0-9][0-9]*/ -j/
- s/ -j\([^ ]\)/ -j -\1/
- s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
- ' `
-
-case ${HOTSPOT_BUILD_JOBS} in \
-
-'') case ${MFLAGS} in
- *\ -j*)
- >&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile."
- >&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment."
- esac;;
-
-?*) case ${MFLAGS} in
- *\ -j*) true;;
- *) MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";;
- esac;;
-esac
-
-echo "${MFLAGS}"
diff --git a/hotspot/make/bsd/makefiles/adlc.make b/hotspot/make/bsd/makefiles/adlc.make
deleted file mode 100644
index dd3346efc66..00000000000
--- a/hotspot/make/bsd/makefiles/adlc.make
+++ /dev/null
@@ -1,233 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (adlc.make) is included from the adlc.make in the
-# build directories.
-# It knows how to compile, link, and run the adlc.
-
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
-
-# #########################################################################
-
-# OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make:
-GENERATED = ../generated
-OUTDIR = $(GENERATED)/adfiles
-
-ARCH = $(Platform_arch)
-OS = $(Platform_os_family)
-
-SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad
-
-ifeq ("${Platform_arch_model}", "${Platform_arch}")
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad)
-else
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad)
-endif
-
-EXEC = $(OUTDIR)/adlc
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor
-Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
-
-# set flags for adlc compilation
-CXXFLAGS = $(SYSDEFS) $(INCLUDES)
-
-# Force assertions on.
-CXXFLAGS += -DASSERT
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-# Compiler warnings are treated as errors
-ifneq ($(COMPILER_WARNINGS_FATAL),false)
- CFLAGS_WARN = $(WARNINGS_ARE_ERRORS)
-endif
-CFLAGS += $(CFLAGS_WARN)
-
-OBJECTNAMES = \
- adlparse.o \
- archDesc.o \
- arena.o \
- dfa.o \
- dict2.o \
- filebuff.o \
- forms.o \
- formsopt.o \
- formssel.o \
- main.o \
- adlc-opcodes.o \
- output_c.o \
- output_h.o \
-
-OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%)
-
-GENERATEDNAMES = \
- ad_$(Platform_arch_model).cpp \
- ad_$(Platform_arch_model).hpp \
- ad_$(Platform_arch_model)_clone.cpp \
- ad_$(Platform_arch_model)_expand.cpp \
- ad_$(Platform_arch_model)_format.cpp \
- ad_$(Platform_arch_model)_gen.cpp \
- ad_$(Platform_arch_model)_misc.cpp \
- ad_$(Platform_arch_model)_peephole.cpp \
- ad_$(Platform_arch_model)_pipeline.cpp \
- adGlobals_$(Platform_arch_model).hpp \
- dfa_$(Platform_arch_model).cpp \
-
-GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%)
-
-# #########################################################################
-
-all: $(EXEC)
-
-$(EXEC) : $(OBJECTS)
- @echo $(LOG_INFO) Making adlc
- $(QUIETLY) $(HOST.LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS)
-
-# Random dependencies:
-$(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
-
-# The source files refer to ostream.h, which sparcworks calls iostream.h
-$(OBJECTS): ostream.h
-
-ostream.h :
- @echo >$@ '#include '
-
-dump:
- : OUTDIR=$(OUTDIR)
- : OBJECTS=$(OBJECTS)
- : products = $(GENERATEDFILES)
-
-all: $(GENERATEDFILES)
-
-$(GENERATEDFILES): refresh_adfiles
-
-# Get a unique temporary directory name, so multiple makes can run in parallel.
-# Note that product files are updated via "mv", which is atomic.
-TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
-
-# Debuggable by default
-CFLAGS += -g
-
-# Pass -D flags into ADLC.
-ADLCFLAGS += $(SYSDEFS)
-
-# Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO.
-ADLCFLAGS += -q -T
-
-# Normally, debugging is done directly on the ad_*.cpp files.
-# But -g will put #line directives in those files pointing back to .ad.
-# Some builds of gcc 3.2 have a bug that gets tickled by the extra #line directives
-# so skip it for 3.2 and ealier.
-ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
-ADLCFLAGS += -g
-endif
-
-ifdef LP64
-ADLCFLAGS += -D_LP64
-else
-ADLCFLAGS += -U_LP64
-endif
-
-#
-# adlc_updater is a simple sh script, under sccs control. It is
-# used to selectively update generated adlc files. This should
-# provide a nice compilation speed improvement.
-#
-ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
-ADLC_UPDATER = adlc_updater
-$(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER)
- $(QUIETLY) cp $< $@; chmod +x $@
-
-# This action refreshes all generated adlc files simultaneously.
-# The way it works is this:
-# 1) create a scratch directory to work in.
-# 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
-# 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
-# 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
-# 5) If we actually updated any files, echo a notice.
-#
-refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER)
- @rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
- $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
- -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \
- || { rm -rf $(TEMPDIR); exit 1; }
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \
- || echo $(LOG_INFO) "Rescanned $(SOURCE.AD) but encountered no changes."
- $(QUIETLY) rm -rf $(TEMPDIR)
-
-
-# #########################################################################
-
-$(SOURCE.AD): $(SOURCES.AD)
- $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD)
-
-#PROCESS_AD_FILES = cat
-# Pass through #line directives, in case user enables -g option above:
-PROCESS_AD_FILES = awk '{ \
- if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \
- if (need_lineno && $$0 !~ /\/\//) \
- { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \
- print }'
-
-$(OUTDIR)/%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# Some object files are given a prefix, to disambiguate
-# them from objects of the same name built for the VM.
-$(OUTDIR)/adlc-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# #########################################################################
-
-clean :
- rm $(OBJECTS)
-
-cleanall :
- rm $(OBJECTS) $(EXEC)
-
-# #########################################################################
-
-.PHONY: all dump refresh_adfiles clean cleanall
diff --git a/hotspot/make/bsd/makefiles/amd64.make b/hotspot/make/bsd/makefiles/amd64.make
deleted file mode 100644
index 6512375259e..00000000000
--- a/hotspot/make/bsd/makefiles/amd64.make
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-CFLAGS += -D_LP64=1
-
-# The serviceability agent relies on frame pointer (%rbp) to walk thread stack
-ifndef USE_SUNCC
- CFLAGS += -fno-omit-frame-pointer
-endif
-
-OPT_CFLAGS/compactingPermGenGen.o = -O1
-
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/sharedRuntimeTrig.o += -g
- OPT_CFLAGS/sharedRuntimeTrans.o += -g
- OPT_CFLAGS/compactingPermGenGen.o += -g
-endif
diff --git a/hotspot/make/bsd/makefiles/arm.make b/hotspot/make/bsd/makefiles/arm.make
deleted file mode 100644
index 9e6fdd5abae..00000000000
--- a/hotspot/make/bsd/makefiles/arm.make
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-Obj_Files += bsd_arm.o
-
-CFLAGS += -DVM_LITTLE_ENDIAN
diff --git a/hotspot/make/bsd/makefiles/build_vm_def.sh b/hotspot/make/bsd/makefiles/build_vm_def.sh
deleted file mode 100644
index 91918635b26..00000000000
--- a/hotspot/make/bsd/makefiles/build_vm_def.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# If we're cross compiling use that path for nm
-if [ "$CROSS_COMPILE_ARCH" != "" ]; then
-NM=$ALT_COMPILER_PATH/nm
-else
-NM=nm
-fi
-
-$NM -Uj $* | awk '
- { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 }
- '
diff --git a/hotspot/make/bsd/makefiles/buildtree.make b/hotspot/make/bsd/makefiles/buildtree.make
deleted file mode 100644
index 3ae09d3dd5b..00000000000
--- a/hotspot/make/bsd/makefiles/buildtree.make
+++ /dev/null
@@ -1,370 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Usage:
-#
-# $(MAKE) -f buildtree.make SRCARCH=srcarch BUILDARCH=buildarch LIBARCH=libarch
-# GAMMADIR=dir OS_FAMILY=os VARIANT=variant
-#
-# The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the
-# environment or on the command-line:
-#
-# ARCH - sparc, i486, ... HotSpot cpu and os_cpu source directory
-# BUILDARCH - build directory
-# LIBARCH - the corresponding directory in JDK/JRE
-# GAMMADIR - top of workspace
-# OS_FAMILY - operating system
-# VARIANT - core, compiler1, compiler2, or tiered
-# VERSION_STRING - the JDK version string as specified by JEP-223
-# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
-#
-# Builds the directory trees with makefiles plus some convenience files in
-# each directory:
-#
-# Makefile - for "make foo"
-# flags.make - with macro settings
-# vm.make - to support making "$(MAKE) -v vm.make" in makefiles
-# adlc.make -
-# trace.make - generate tracing event and type definitions
-# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
-#
-# The makefiles are split this way so that "make foo" will run faster by not
-# having to read the dependency files for the vm.
-
-# needs to be set here since this Makefile doesn't include defs.make
-OS_VENDOR:=$(shell uname -s)
-
--include $(SPEC)
-include $(GAMMADIR)/make/scm.make
-include $(GAMMADIR)/make/defs.make
-include $(GAMMADIR)/make/altsrc.make
-
-
-# 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- PLATFORM_FILE = $(shell dirname $(shell dirname $(shell pwd)))/platform_zero
-else
- ifdef USE_SUNCC
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc
- else
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
- endif
-endif
-
-# Allow overriding of the arch part of the directory but default
-# to BUILDARCH if nothing is specified
-ifeq ($(VARIANTARCH),)
- VARIANTARCH=$(BUILDARCH)
-endif
-
-ifdef FORCE_TIERED
-ifeq ($(VARIANT),tiered)
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_compiler2
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-
-#
-# We do two levels of exclusion in the shared directory.
-# TOPLEVEL excludes are pruned, they are not recursively searched,
-# but lower level directories can be named without fear of collision.
-# ALWAYS excludes are excluded at any level in the directory tree.
-#
-
-ALWAYS_EXCLUDE_DIRS = $(SCM_DIRS)
-
-ifeq ($(VARIANT),tiered)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name agent
-else
-ifeq ($(VARIANT),compiler2)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name c1 -o -name agent
-else
-# compiler1 and core use the same exclude list
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name opto -o -name libadt -o -name agent
-endif
-endif
-
-# Get things from the platform file.
-COMPILER = $(shell sed -n 's/^compiler[ ]*=[ ]*//p' $(PLATFORM_FILE))
-
-# dtracefiles is used on BSD versions that implement Dtrace (like MacOS X)
-SIMPLE_DIRS = \
- $(PLATFORM_DIR)/generated/dependencies \
- $(PLATFORM_DIR)/generated/adfiles \
- $(PLATFORM_DIR)/generated/jvmtifiles \
- $(PLATFORM_DIR)/generated/tracefiles \
- $(PLATFORM_DIR)/generated/dtracefiles
-
-TARGETS = debug fastdebug optimized product
-SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
-
-# For dependencies and recursive makes.
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
-
-# dtrace.make is used on BSD versions that implement Dtrace (like MacOS X)
-BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
-
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
- SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
-
-# Define variables to be set in flags.make.
-# Default values are set in make/defs.make.
-
-# Set BUILD_USER from system-dependent hints: $LOGNAME, $(whoami)
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
-endif
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell whoami)
-endif
-# Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
-# or make/hotspot_distro.
-ifndef HOTSPOT_VM_DISTRO
- ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- include $(GAMMADIR)/make/hotspot_distro
- else
- include $(GAMMADIR)/make/openjdk_distro
- endif
-endif
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-ifndef OPENJDK
- ifneq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- OPENJDK=true
- endif
-endif
-
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-
-BUILDTREE = \
- $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
-
-BUILDTREE_COMMENT = echo "\# Generated by $(BUILDTREE_MAKE)"
-
-all: $(SUBMAKE_DIRS)
-
-# Run make in each subdirectory recursively.
-$(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE
- $(QUIETLY) [ -d $@ ] || { mkdir -p $@; }
- +$(QUIETLY) cd $@ && $(BUILDTREE) TARGET=$(@F)
- $(QUIETLY) touch $@
-
-$(SIMPLE_DIRS):
- $(QUIETLY) mkdir -p $@
-
-# Convenience macro which takes a source relative path, applies $(1) to the
-# absolute path, and then replaces $(GAMMADIR) in the result with a
-# 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 $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "Platform_file = $(PLATFORM_FILE)" | sed 's|$(GAMMADIR)|$$(GAMMADIR)|'; \
- sed -n '/=/s/^ */Platform_/p' < $(PLATFORM_FILE); \
- echo; \
- echo "GAMMADIR = $(GAMMADIR)"; \
- echo "HS_ALT_MAKE = $(HS_ALT_MAKE)"; \
- echo "OSNAME = $(OSNAME)"; \
- echo "SYSDEFS = \$$(Platform_sysdefs)"; \
- echo "SRCARCH = $(SRCARCH)"; \
- echo "BUILDARCH = $(BUILDARCH)"; \
- echo "LIBARCH = $(LIBARCH)"; \
- echo "TARGET = $(TARGET)"; \
- echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
- echo "VERSION_STRING = $(VERSION_STRING)"; \
- echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
- echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
- echo "OPENJDK = $(OPENJDK)"; \
- echo "$(LP64_SETTING/$(DATA_MODE))"; \
- echo; \
- echo "STATIC_BUILD = $(STATIC_BUILD)"; \
- echo "COMPILER_WARNINGS_FATAL = $(COMPILER_WARNINGS_FATAL)"; \
- echo "EXTRA_LDFLAGS = $(EXTRA_LDFLAGS)"; \
- echo "LIBRARY_SUFFIX = $(LIBRARY_SUFFIX)"; \
- echo; \
- echo "# Used for platform dispatching"; \
- echo "TARGET_DEFINES = -DTARGET_OS_FAMILY_\$$(Platform_os_family)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
- echo "CFLAGS += \$$(TARGET_DEFINES)"; \
- echo; \
- echo "Src_Dirs_V = \\"; \
- sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- echo; \
- echo "Src_Dirs_I = \\"; \
- echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,altsrc,share/vm) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm) \\"; \
- echo "$(call gamma-path,altsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- [ -n "$(CFLAGS_BROWSE)" ] && \
- echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
- [ -n "$(ENABLE_FULL_DEBUG_SYMBOLS)" ] && \
- echo && echo "ENABLE_FULL_DEBUG_SYMBOLS = $(ENABLE_FULL_DEBUG_SYMBOLS)"; \
- [ -n "$(OBJCOPY)" ] && \
- echo && echo "OBJCOPY = $(OBJCOPY)"; \
- [ -n "$(STRIP_POLICY)" ] && \
- echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \
- [ -n "$(ZIP_DEBUGINFO_FILES)" ] && \
- echo && echo "ZIP_DEBUGINFO_FILES = $(ZIP_DEBUGINFO_FILES)"; \
- [ -n "$(ZIPEXE)" ] && \
- echo && echo "ZIPEXE = $(ZIPEXE)"; \
- [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
- echo && \
- echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
- echo "SYSDEFS += \$$(HOTSPOT_EXTRA_SYSDEFS)"; \
- echo; \
- [ -n "$(SPEC)" ] && \
- echo "include $(SPEC)"; \
- echo "CP ?= cp"; \
- echo "MV ?= mv"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(VARIANT).make"; \
- echo "include \$$(GAMMADIR)/make/excludeSrc.make"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(COMPILER).make"; \
- ) > $@
-
-flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(TARGET).make"; \
- ) > $@
-
-../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
- @echo $(LOG_INFO) Creating directory list $@
- $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
- find $(HS_ALT_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
- fi;
- $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
-
-Makefile: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/top.make"; \
- ) > $@
-
-vm.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo include flags_vm.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-adlc.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-jvmti.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-trace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-dtrace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-FORCE:
-
-.PHONY: all FORCE
-
-.NOTPARALLEL:
diff --git a/hotspot/make/bsd/makefiles/compiler1.make b/hotspot/make/bsd/makefiles/compiler1.make
deleted file mode 100644
index d303bfc1ca4..00000000000
--- a/hotspot/make/bsd/makefiles/compiler1.make
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making client version of VM
-
-TYPE=COMPILER1
-
-VM_SUBDIR = client
-
-# We don't support the JVMCI in a client VM.
-INCLUDE_JVMCI := false
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/bsd/makefiles/compiler2.make b/hotspot/make/bsd/makefiles/compiler2.make
deleted file mode 100644
index c881079882e..00000000000
--- a/hotspot/make/bsd/makefiles/compiler2.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making server version of VM
-
-TYPE=COMPILER2
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/bsd/makefiles/core.make b/hotspot/make/bsd/makefiles/core.make
deleted file mode 100644
index e032d964f57..00000000000
--- a/hotspot/make/bsd/makefiles/core.make
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making core version of VM
-
-# Select which files to use (in top.make)
-TYPE=CORE
-
-# There is no "core" directory in JDK. Install core build in server directory.
-VM_SUBDIR = server
-
-# Note: macros.hpp defines CORE
diff --git a/hotspot/make/bsd/makefiles/cscope.make b/hotspot/make/bsd/makefiles/cscope.make
deleted file mode 100644
index 7a12b3bbcd1..00000000000
--- a/hotspot/make/bsd/makefiles/cscope.make
+++ /dev/null
@@ -1,160 +0,0 @@
-#
-# Copyright (c) 2005, 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.
-#
-#
-
-#
-# The cscope.out file is made in the current directory and spans the entire
-# source tree.
-#
-# Things to note:
-# 1. We use relative names for cscope.
-# 2. We *don't* remove the old cscope.out file, because cscope is smart
-# enough to only build what has changed. It can be confused, however,
-# if files are renamed or removed, so it may be necessary to manually
-# remove cscope.out if a lot of reorganization has occurred.
-#
-
-include $(GAMMADIR)/make/scm.make
-
-NAWK = awk
-RM = rm -f
-HG = hg
-CS_TOP = ../..
-
-CSDIRS = $(CS_TOP)/src $(CS_TOP)/build
-CSINCS = $(CSDIRS:%=-I%)
-
-CSCOPE = cscope
-CSCOPE_FLAGS = -b
-
-# Allow .java files to be added from the environment (CSCLASSES=yes).
-ifdef CSCLASSES
-ADDCLASSES= -o -name '*.java'
-endif
-
-# Adding CClassHeaders also pushes the file count of a full workspace up about
-# 200 files (these files also don't exist in a new workspace, and thus will
-# cause the recreation of the database as they get created, which might seem
-# a little confusing). Thus allow these files to be added from the environment
-# (CSHEADERS=yes).
-ifndef CSHEADERS
-RMCCHEADERS= -o -name CClassHeaders
-endif
-
-# Use CS_GENERATED=x to include auto-generated files in the build directories.
-ifdef CS_GENERATED
-CS_ADD_GENERATED = -o -name '*.incl'
-else
-CS_PRUNE_GENERATED = -o -name '${OS}_*_core' -o -name '${OS}_*_compiler?'
-endif
-
-# OS-specific files for other systems are excluded by default. Use CS_OS=yes
-# to include platform-specific files for other platforms.
-ifndef CS_OS
-CS_OS = linux macos solaris win32 bsd
-CS_PRUNE_OS = $(patsubst %,-o -name '*%*',$(filter-out ${OS},${CS_OS}))
-endif
-
-# Processor-specific files for other processors are excluded by default. Use
-# CS_CPU=x to include platform-specific files for other platforms.
-ifndef CS_CPU
-CS_CPU = i486 sparc amd64 ia64
-CS_PRUNE_CPU = $(patsubst %,-o -name '*%*',$(filter-out ${SRCARCH},${CS_CPU}))
-endif
-
-# What files should we include? A simple rule might be just those files under
-# SCCS control, however this would miss files we create like the opcodes and
-# CClassHeaders. The following attempts to find everything that is *useful*.
-# (.del files are created by sccsrm, demo directories contain many .java files
-# that probably aren't useful for development, and the pkgarchive may contain
-# duplicates of files within the source hierarchy).
-
-# Directories to exclude.
-CS_PRUNE_STD = $(SCM_DIRS) \
- -o -name '.del-*' \
- -o -name '*demo' \
- -o -name pkgarchive
-
-CS_PRUNE = $(CS_PRUNE_STD) \
- $(CS_PRUNE_OS) \
- $(CS_PRUNE_CPU) \
- $(CS_PRUNE_GENERATED) \
- $(RMCCHEADERS)
-
-# File names to include.
-CSFILENAMES = -name '*.[ch]pp' \
- -o -name '*.[Ccshlxy]' \
- $(CS_ADD_GENERATED) \
- -o -name '*.il' \
- -o -name '*.cc' \
- -o -name '*[Mm]akefile*' \
- -o -name '*.gmk' \
- -o -name '*.make' \
- -o -name '*.ad' \
- $(ADDCLASSES)
-
-.PRECIOUS: cscope.out
-
-cscope cscope.out: cscope.files FORCE
- $(CSCOPE) $(CSCOPE_FLAGS)
-
-# The .raw file is reordered here in an attempt to make cscope display the most
-# relevant files first.
-cscope.files: .cscope.files.raw
- echo "$(CSINCS)" > $@
- -egrep -v "\.java|\/make\/" $< >> $@
- -fgrep ".java" $< >> $@
- -fgrep "/make/" $< >> $@
-
-.cscope.files.raw: .nametable.files
- -find $(CSDIRS) -type d \( $(CS_PRUNE) \) -prune -o \
- -type f \( $(CSFILENAMES) \) -print > $@
-
-cscope.clean: nametable.clean
- -$(RM) cscope.out cscope.files .cscope.files.raw
-
-TAGS: cscope.files FORCE
- egrep -v '^-|^$$' $< | etags --members -
-
-TAGS.clean: nametable.clean
- -$(RM) TAGS
-
-# .nametable.files and .nametable.files.tmp are used to determine if any files
-# were added to/deleted from/renamed in the workspace. If not, then there's
-# normally no need to rebuild the cscope database. To force a rebuild of
-# the cscope database: gmake nametable.clean.
-.nametable.files: .nametable.files.tmp
- ( cmp -s $@ $< ) || ( cp $< $@ )
- -$(RM) $<
-
-# `hg status' is slightly faster than `hg fstatus'. Both are
-# quite a bit slower on an NFS mounted file system, so this is
-# really geared towards repos on local file systems.
-.nametable.files.tmp:
- -$(HG) fstatus -acmn > $@
-nametable.clean:
- -$(RM) .nametable.files .nametable.files.tmp
-
-FORCE:
-
-.PHONY: cscope cscope.clean TAGS.clean nametable.clean FORCE
diff --git a/hotspot/make/bsd/makefiles/debug.make b/hotspot/make/bsd/makefiles/debug.make
deleted file mode 100644
index 1c4ef1418b1..00000000000
--- a/hotspot/make/bsd/makefiles/debug.make
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(DEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-
-# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
-CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
-ifeq ($(OS_VENDOR), Darwin)
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug
-endif
-
-VERSION = debug
-SYSDEFS += -DASSERT
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/bsd/makefiles/defs.make b/hotspot/make/bsd/makefiles/defs.make
deleted file mode 100644
index 795bf57db00..00000000000
--- a/hotspot/make/bsd/makefiles/defs.make
+++ /dev/null
@@ -1,382 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The common definitions for hotspot bsd builds.
-# Include the top level defs.make under make directory instead of this one.
-# This file is included into make/defs.make.
-
-SLASH_JAVA ?= /java
-
-define print_info
- ifneq ($$(LOG_LEVEL), warn)
- $$(shell echo >&2 "INFO: $1")
- endif
-endef
-
-# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
-ARCH:=$(shell uname -m)
-PATH_SEP = :
-ifeq ($(LP64), 1)
- ARCH_DATA_MODEL ?= 64
-else
- ARCH_DATA_MODEL ?= 32
-endif
-
-# zero
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- ifeq ($(ARCH_DATA_MODEL), 64)
- MAKE_ARGS += LP64=1
- endif
- PLATFORM = bsd-zero
- VM_PLATFORM = bsd_$(subst i386,i486,$(ZERO_LIBARCH))
- HS_ARCH = zero
- ARCH = zero
-endif
-
-# ia64
-ifeq ($(ARCH), ia64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = bsd-ia64
- VM_PLATFORM = bsd_ia64
- HS_ARCH = ia64
-endif
-
-# sparc
-ifeq ($(ARCH), sparc64)
- ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = bsd-sparcv9
- VM_PLATFORM = bsd_sparcv9
- else
- ARCH_DATA_MODEL = 32
- PLATFORM = bsd-sparc
- VM_PLATFORM = bsd_sparc
- endif
- HS_ARCH = sparc
-endif
-
-# amd64
-ifneq (,$(findstring $(ARCH), amd64 x86_64))
- ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = bsd-amd64
- VM_PLATFORM = bsd_amd64
- HS_ARCH = x86
- else
- ARCH_DATA_MODEL = 32
- PLATFORM = bsd-i586
- VM_PLATFORM = bsd_i486
- HS_ARCH = x86
- # We have to reset ARCH to i386 since SRCARCH relies on it
- ARCH = i386
- endif
-endif
-
-# i386
-ifeq ($(ARCH), i386)
- ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = bsd-amd64
- VM_PLATFORM = bsd_amd64
- HS_ARCH = x86
- # We have to reset ARCH to amd64 since SRCARCH relies on it
- ARCH = amd64
- else
- ARCH_DATA_MODEL = 32
- PLATFORM = bsd-i586
- VM_PLATFORM = bsd_i486
- HS_ARCH = x86
- endif
-endif
-
-# ARM
-ifeq ($(ARCH), arm)
- ARCH_DATA_MODEL = 32
- PLATFORM = bsd-arm
- VM_PLATFORM = bsd_arm
- HS_ARCH = arm
-endif
-
-# PPC
-ifeq ($(ARCH), ppc)
- ARCH_DATA_MODEL = 32
- PLATFORM = bsd-ppc
- VM_PLATFORM = bsd_ppc
- HS_ARCH = ppc
-endif
-
-# On 32 bit bsd we build server and client, on 64 bit just server.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ARCH_DATA_MODEL), 32)
- JVM_VARIANTS:=client,server
- JVM_VARIANT_CLIENT:=true
- JVM_VARIANT_SERVER:=true
- else
- JVM_VARIANTS:=server
- JVM_VARIANT_SERVER:=true
- endif
-endif
-
-OS_VENDOR:=$(shell uname -s)
-
-# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-# builds is enabled with debug info files ZIP'ed to save space. For
-# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-# debug build without debug info isn't very useful.
-# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-#
-# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-# disabled for a BUILD_FLAVOR == product build.
-#
-# Note: Use of a different variable name for the FDS override option
-# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-# in options via environment variables, use of distinct variables
-# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-# product build, the FULL_DEBUG_SYMBOLS environment variable will be
-# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-# the same variable name is used, then different values can be picked
-# up by different parts of the build. Just to be clear, we only need
-# two variable names because the incoming option value can be
-# overridden in some situations, e.g., a BUILD_FLAVOR != product
-# build.
-
-# Due to the multiple sub-make processes that occur this logic gets
-# executed multiple times. We reduce the noise by at least checking that
-# BUILD_FLAVOR has been set.
-ifneq ($(BUILD_FLAVOR),)
- # FULL_DEBUG_SYMBOLS not created for individual static libraries
- ifeq ($(STATIC_BUILD),false)
- ifeq ($(BUILD_FLAVOR), product)
- FULL_DEBUG_SYMBOLS ?= 1
- ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
- else
- # debug variants always get Full Debug Symbols (if available)
- ENABLE_FULL_DEBUG_SYMBOLS = 1
- endif
- endif
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- # MacOS X doesn't use OBJCOPY or STRIP_POLICY
- OBJCOPY=
- STRIP_POLICY=
- ZIP_DEBUGINFO_FILES ?= 1
- else
- # Default OBJCOPY comes from GNU Binutils on BSD
- ifeq ($(CROSS_COMPILE_ARCH),)
- DEF_OBJCOPY=/usr/bin/objcopy
- else
- # Assume objcopy is part of the cross-compilation toolset
- ifneq ($(ALT_COMPILER_PATH),)
- DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
- endif
- endif
- OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
- ifneq ($(ALT_OBJCOPY),)
- $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
- OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
- endif
-
- ifeq ($(OBJCOPY),)
- $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo" \
- "files. You may need to set ALT_OBJCOPY."))
- ENABLE_FULL_DEBUG_SYMBOLS=0
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- else
- $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo" \
- "files."))
-
- # Library stripping policies for .debuginfo configs:
- # all_strip - strips everything from the library
- # min_strip - strips most stuff from the library; leaves
- # minimum symbols
- # no_strip - does not strip the library at all
- #
- # Oracle security policy requires "all_strip". A waiver was
- # granted on 2011.09.01 that permits using "min_strip" in the
- # Java JDK and Java JRE.
- #
- # Currently, STRIP_POLICY is only used when Full Debug Symbols
- # is enabled.
- #
- STRIP_POLICY ?= min_strip
-
- $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
- ZIP_DEBUGINFO_FILES ?= 1
- endif
-
- $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
- endif
- endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-endif # BUILD_FLAVOR
-
-JDK_INCLUDE_SUBDIR=bsd
-
-# Library suffix
-ifneq ($(STATIC_BUILD),true)
-ifeq ($(OS_VENDOR),Darwin)
- LIBRARY_SUFFIX=dylib
-else
- LIBRARY_SUFFIX=so
-endif
-else
- LIBRARY_SUFFIX=a
-endif
-
-
-EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
-
-# jsig library not needed for static builds
-ifneq ($(STATIC_BUILD),true)
- # client and server subdirectories have symbolic links to ../libjsig.so
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
-endif
-
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.diz
- else
- ifeq ($(OS_VENDOR), Darwin)
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX).dSYM
- else
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.debuginfo
- endif
- endif
-endif
-
-EXPORT_SERVER_DIR = $(EXPORT_LIB_ARCH_DIR)/server
-EXPORT_CLIENT_DIR = $(EXPORT_LIB_ARCH_DIR)/client
-EXPORT_MINIMAL_DIR = $(EXPORT_LIB_ARCH_DIR)/minimal
-
-ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
- ifeq ($(STATIC_BUILD),true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.symbols
- endif
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
- else
- ifeq ($(OS_VENDOR), Darwin)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX).dSYM
- else
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
- endif
- endif
- endif
-endif
-
-ifeq ($(JVM_VARIANT_CLIENT),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
- ifeq ($(STATIC_BUILD),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.symbols
- endif
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
- else
- ifeq ($(OS_VENDOR), Darwin)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX).dSYM
- else
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
- endif
- endif
- endif
-endif
-
-ifeq ($(JVM_VARIANT_MINIMAL1),true)
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX)
- ifeq ($(STATIC_BUILD),true)
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.symbols
- endif
-endif
-
-# Universal build settings
-ifeq ($(OS_VENDOR), Darwin)
- # Build universal binaries by default on Mac OS X
- MACOSX_UNIVERSAL = true
- ifneq ($(ALT_MACOSX_UNIVERSAL),)
- MACOSX_UNIVERSAL = $(ALT_MACOSX_UNIVERSAL)
- endif
- MAKE_ARGS += MACOSX_UNIVERSAL=$(MACOSX_UNIVERSAL)
-
- # Universal settings
- ifeq ($(MACOSX_UNIVERSAL), true)
-
- # Set universal export path but avoid using ARCH or PLATFORM subdirs
- EXPORT_PATH=$(OUTPUTDIR)/export-universal$(EXPORT_SUBDIR)
- ifneq ($(ALT_EXPORT_PATH),)
- EXPORT_PATH=$(ALT_EXPORT_PATH)
- endif
-
- # Set universal image dir
- JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-universal$(EXPORT_SUBDIR)
- ifneq ($(ALT_JDK_IMAGE_DIR),)
- JDK_IMAGE_DIR=$(ALT_JDK_IMAGE_DIR)
- endif
-
- # Binaries to 'universalize' if built
- ifneq ($(STATIC_BUILD),true)
- UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX)
- endif
- UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/server/libjvm.$(LIBRARY_SUFFIX)
- UNIVERSAL_LIPO_LIST += $(EXPORT_LIB_DIR)/client/libjvm.$(LIBRARY_SUFFIX)
-
- # Files to simply copy in place
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/Xusage.txt
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/Xusage.txt
-
- ifeq ($(STATIC_BUILD),true)
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/libjvm.symbols
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/libjvm.symbols
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/minimal/libjvm.symbols
- endif
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/libjvm.diz
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/libjvm.diz
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libjsig.diz
- else
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/server/libjvm.$(LIBRARY_SUFFIX).dSYM
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/client/libjvm.$(LIBRARY_SUFFIX).dSYM
- UNIVERSAL_COPY_LIST += $(EXPORT_LIB_DIR)/libjsig.$(LIBRARY_SUFFIX).dSYM
- endif
- endif
-
- endif
-endif
diff --git a/hotspot/make/bsd/makefiles/dtrace.make b/hotspot/make/bsd/makefiles/dtrace.make
deleted file mode 100644
index e2af31ea7a0..00000000000
--- a/hotspot/make/bsd/makefiles/dtrace.make
+++ /dev/null
@@ -1,333 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build jvm_db/dtrace, used by vm.make
-
-# We build libjvm_dtrace/libjvm_db/dtrace for COMPILER1 and COMPILER2
-# but not for CORE configuration.
-
-ifneq ("${TYPE}", "CORE")
-
-ifeq ($(OS_VENDOR), Darwin)
-# we build dtrace for macosx using USDT2 probes
-
-DtraceOutDir = $(GENERATED)/dtracefiles
-
-# Bsd does not build libjvm_db, does not compile on macosx
-# disabled in build: rule in vm.make
-JVM_DB = libjvm_db
-LIBJVM_DB = libjvm_db.$(LIBRARY_SUFFIX)
-
-LIBJVM_DB_DEBUGINFO = libjvm_db.$(LIBRARY_SUFFIX).dSYM
-LIBJVM_DB_DIZ = libjvm_db.diz
-
-JVM_DTRACE = jvm_dtrace
-LIBJVM_DTRACE = libjvm_dtrace.$(LIBRARY_SUFFIX)
-
-LIBJVM_DTRACE_DEBUGINFO = libjvm_dtrace.$(LIBRARY_SUFFIX).dSYM
-LIBJVM_DTRACE_DIZ = libjvm_dtrace.diz
-
-JVMOFFS = JvmOffsets
-JVMOFFS.o = $(JVMOFFS).o
-GENOFFS = generate$(JVMOFFS)
-
-DTRACE_SRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/dtrace
-DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
-DTRACE = dtrace
-DTRACE.o = $(DTRACE).o
-
-# to remove '-g' option which causes link problems
-# also '-z nodefs' is used as workaround
-GENOFFS_CFLAGS = $(shell echo $(CFLAGS) | sed -e 's/ -g / /g' -e 's/ -g0 / /g';)
-
-ifdef LP64
-DTRACE_OPTS = -D_LP64
-endif
-
-# making libjvm_db
-
-# Use mapfile with libjvm_db.so
-LIBJVM_DB_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_db
-
-# Use mapfile with libjvm_dtrace.so
-LIBJVM_DTRACE_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_dtrace
-
-LFLAGS_JVM_DB += $(PICFLAG) # -D_REENTRANT
-LFLAGS_JVM_DTRACE += $(PICFLAG) # -D_REENTRANT
-
-ISA = $(subst i386,i486,$(BUILDARCH))
-
-# Making 64/libjvm_db.so: 64-bit version of libjvm_db.so which handles 32-bit libjvm.so
-ifneq ("${ISA}","${BUILDARCH}")
-
-XLIBJVM_DIR = 64
-XLIBJVM_DB = $(XLIBJVM_DIR)/$(LIBJVM_DB)
-XLIBJVM_DTRACE = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE)
-XARCH = $(subst sparcv9,v9,$(shell echo $(ISA)))
-
-XLIBJVM_DB_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DB_DEBUGINFO)
-XLIBJVM_DB_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DB_DIZ)
-XLIBJVM_DTRACE_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DEBUGINFO)
-XLIBJVM_DTRACE_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DIZ)
-
-$(XLIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS).h $(LIBJVM_DB_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
- $(CC) $(SYMFLAG) -xarch=$(XARCH) -D$(TYPE) -I. -I$(GENERATED) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c #-lc
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -r -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) )
- $(RM) -r $(XLIBJVM_DB_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DB_DEBUGINFO)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the link name:
- $(QUIETLY) ( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB) )
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) )
- $(RM) $(XLIBJVM_DB_DEBUGINFO)
- endif
- endif
-endif
-
-$(XLIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
- $(CC) $(SYMFLAG) -xarch=$(XARCH) -D$(TYPE) -I. \
- $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c #-lc -lthread -ldoor
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -r -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO) )
- $(RM) -r $(XLIBJVM_DTRACE_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DTRACE_DEBUGINFO)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the link name:
- ( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE) )
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- # Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR)
- # is not in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO) )
- $(RM) $(XLIBJVM_DTRACE_DEBUGINFO)
- endif
- endif
-endif
-
-endif # ifneq ("${ISA}","${BUILDARCH}")
-
-LFLAGS_GENOFFS += -L.
-
-lib$(GENOFFS).$(LIBRARY_SUFFIX): $(DTRACE_SRCDIR)/$(GENOFFS).cpp $(DTRACE_SRCDIR)/$(GENOFFS).h \
- $(LIBJVM.o)
- $(QUIETLY) $(CXX) $(CXXFLAGS) $(GENOFFS_CFLAGS) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_GENOFFS) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS).cpp -ljvm
-
-$(GENOFFS): $(DTRACE_SRCDIR)/$(GENOFFS)Main.c lib$(GENOFFS).$(LIBRARY_SUFFIX)
- $(QUIETLY) $(LINK.CXX) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS)Main.c \
- ./lib$(GENOFFS).$(LIBRARY_SUFFIX)
-
-# $@.tmp is created first to avoid an empty $(JVMOFFS).h if an error occurs.
-$(JVMOFFS).h: $(GENOFFS)
- $(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -header > $@.tmp; touch $@; \
- if diff $@.tmp $@ > /dev/null 2>&1 ; \
- then rm -f $@.tmp; \
- else rm -f $@; mv $@.tmp $@; \
- fi
-
-$(JVMOFFS)Index.h: $(GENOFFS)
- $(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -index > $@.tmp; touch $@; \
- if diff $@.tmp $@ > /dev/null 2>&1 ; \
- then rm -f $@.tmp; \
- else rm -f $@; mv $@.tmp $@; \
- fi
-
-$(JVMOFFS).cpp: $(GENOFFS) $(JVMOFFS).h $(JVMOFFS)Index.h
- $(QUIETLY) DYLD_LIBRARY_PATH=.:$(DYLD_LIBRARY_PATH) ./$(GENOFFS) -table > $@.tmp; touch $@; \
- if diff $@.tmp $@ > /dev/null 2>&1; \
- then rm -f $@.tmp; \
- else rm -f $@; mv $@.tmp $@; \
- fi
-
-$(JVMOFFS.o): $(JVMOFFS).h $(JVMOFFS).cpp
- $(QUIETLY) $(CXX) -c -I. -o $@ $(ARCHFLAG) -D$(TYPE) $(JVMOFFS).cpp
-
-$(LIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS.o) $(XLIBJVM_DB) $(LIBJVM_DB_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. -I$(GENERATED) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -Wall # -lc
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -r -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO)
- $(RM) -r $(LIBJVM_DB_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DB_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO)
- $(RM) $(LIBJVM_DB_DEBUGINFO)
- endif
- endif
-endif
-
-$(LIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(XLIBJVM_DTRACE) $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. \
- $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c #-lc -lthread -ldoor
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -r -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO)
- $(RM) -r $(LIBJVM_DTRACE_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DTRACE_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO)
- $(RM) $(LIBJVM_DTRACE_DEBUGINFO)
- endif
- endif
-endif
-
-
-$(DtraceOutDir):
- mkdir $(DtraceOutDir)
-
-# When building using a devkit, dtrace cannot find the correct preprocessor so
-# we run it explicitly before runing dtrace.
-$(DtraceOutDir)/hotspot.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
- $(QUIETLY) $(CC) -E $(DTRACE_OPTS) -I. -x c $(DTRACE_COMMON_SRCDIR)/hotspot.d > $(DtraceOutDir)/hotspot.d
- $(QUIETLY) $(DTRACE_PROG) -h -o $@ -s $(DtraceOutDir)/hotspot.d
-
-$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
- $(QUIETLY) $(CC) -E $(DTRACE_OPTS) -I. -x c $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d > $(DtraceOutDir)/hotspot_jni.d
- $(QUIETLY) $(DTRACE_PROG) -h -o $@ -s $(DtraceOutDir)/hotspot_jni.d
-
-$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
- $(QUIETLY) $(CC) -E $(DTRACE_OPTS) -I. -x c $(DTRACE_COMMON_SRCDIR)/hs_private.d > $(DtraceOutDir)/hs_private.d
- $(QUIETLY) $(DTRACE_PROG) -h -o $@ -s $(DtraceOutDir)/hs_private.d
-
-dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
-
-
-.PHONY: dtraceCheck
-
-SYSTEM_DTRACE_PROG = /usr/sbin/dtrace
-systemDtraceFound := $(wildcard ${SYSTEM_DTRACE_PROG})
-
-ifneq ("$(systemDtraceFound)", "")
-DTRACE_PROG=$(SYSTEM_DTRACE_PROG)
-else
-
-endif
-
-ifneq ("${DTRACE_PROG}", "")
-ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")
-
-DTRACE_OBJS = $(DTRACE.o) #$(JVMOFFS.o)
-CFLAGS += -DDTRACE_ENABLED #$(DTRACE_INCL)
-
-
-dtraceCheck:
-
-dtrace_stuff: dtrace_gen_headers
- $(QUIETLY) echo $(LOG_INFO) "dtrace headers generated"
-
-
-else # manually disabled
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled via environment variable"
-
-dtrace_stuff:
-
-endif # ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")
-
-else # No dtrace program found
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled: not supported by system"
-
-dtrace_stuff:
-
-endif # ifneq ("${dtraceFound}", "")
-
-endif # ifeq ($(OS_VENDOR), Darwin)
-
-
-else # CORE build
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled for CORE builds"
-
-endif # ifneq ("${TYPE}", "CORE")
diff --git a/hotspot/make/bsd/makefiles/fastdebug.make b/hotspot/make/bsd/makefiles/fastdebug.make
deleted file mode 100644
index d57e545b5b0..00000000000
--- a/hotspot/make/bsd/makefiles/fastdebug.make
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-# They may also specify FASTDEBUG_CFLAGS, but it defaults to DEBUG_CFLAGS.
-
-FASTDEBUG_CFLAGS$(FASTDEBUG_CFLAGS) = $(DEBUG_CFLAGS)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# The following lines are copied from debug.make, except that we
-# consult FASTDEBUG_CFLAGS instead of DEBUG_CFLAGS.
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(FASTDEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-CFLAGS += $(DEBUG_CFLAGS/BYFILE)
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
-ifeq ($(OS_VENDOR), Darwin)
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug
-endif
-
-VERSION = fastdebug
-SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/bsd/makefiles/gcc.make b/hotspot/make/bsd/makefiles/gcc.make
deleted file mode 100644
index 1bf6521a892..00000000000
--- a/hotspot/make/bsd/makefiles/gcc.make
+++ /dev/null
@@ -1,543 +0,0 @@
-#
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-OS_VENDOR = $(shell uname -s)
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- # When cross-compiling the ALT_COMPILER_PATH points
- # to the cross-compilation toolset
- ifdef CROSS_COMPILE_ARCH
- CXX = $(ALT_COMPILER_PATH)/g++
- CC = $(ALT_COMPILER_PATH)/gcc
- HOSTCXX = g++
- HOSTCC = gcc
- else ifneq ($(OS_VENDOR), Darwin)
- CXX = g++
- CC = gcc
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
- endif
-
- # i486 hotspot requires -mstackrealign on Darwin.
- # llvm-gcc supports this in Xcode 3.2.6 and 4.0.
- # gcc-4.0 supports this on earlier versions.
- # Prefer llvm-gcc where available.
- ifeq ($(OS_VENDOR), Darwin)
- ifeq ($(origin CXX), default)
- CXX = llvm-g++
- endif
- ifeq ($(origin CC), default)
- CC = llvm-gcc
- endif
-
- ifeq ($(ARCH), i486)
- LLVM_SUPPORTS_STACKREALIGN := $(shell \
- [ "0"`llvm-gcc -v 2>&1 | grep LLVM | sed -E "s/.*LLVM build ([0-9]+).*/\1/"` -gt "2333" ] \
- && echo true || echo false)
-
- ifeq ($(LLVM_SUPPORTS_STACKREALIGN), true)
- CXX32 ?= llvm-g++
- CC32 ?= llvm-gcc
- else
- CXX32 ?= g++-4.0
- CC32 ?= gcc-4.0
- endif
- CXX = $(CXX32)
- CC = $(CC32)
- endif
-
- ifeq ($(USE_CLANG), true)
- CXX = clang++
- CC = clang
- endif
-
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
- endif
-
- AS = $(CC) -c
-endif
-
-ifeq ($(OS_VENDOR), Darwin)
- ifeq ($(DSYMUTIL),)
- DSYMUTIL=dsymutil
- endif
-endif
-
-ifeq ($(USE_CLANG), true)
- CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1)
- CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2)
-else
- # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
- # prints the numbers (e.g. "2.95", "3.2.1")
- CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
- CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
- CC_VER_MICRO := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f3)
-endif
-
-ifeq ($(USE_CLANG), true)
- # Clang has precompiled headers support by default, but the user can switch
- # it off by using 'USE_PRECOMPILED_HEADER=0'.
- ifdef LP64
- ifeq ($(USE_PRECOMPILED_HEADER),)
- USE_PRECOMPILED_HEADER=1
- endif
- else
- # We don't support precompiled headers on 32-bit builds because there some files are
- # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
- # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit.
- USE_PRECOMPILED_HEADER=0
- endif
-
- ifeq ($(USE_PRECOMPILED_HEADER),1)
-
- ifndef LP64
- $(error " Precompiled Headers only supported on 64-bit platforms!")
- endif
-
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch
-
- PCH_FLAG = -include precompiled.hpp
- PCH_FLAG/DEFAULT = $(PCH_FLAG)
- PCH_FLAG/NO_PCH = -DNO_PCH
- PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@))
-
- VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE)
- VM_PCH_FLAG/AOUT =
- VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO))
-
- # We only use precompiled headers for the JVM build
- CFLAGS += $(VM_PCH_FLAG)
-
- # The following files are compiled at various optimization
- # levels due to optimization issues encountered at the
- # 'OPT_CFLAGS_DEFAULT' level. The Clang compiler issues a compile
- # time error if there is an optimization level specification
- # skew between the PCH file and the C++ file. Especially if the
- # PCH file is compiled at a higher optimization level than
- # the C++ file. One solution might be to prepare extra optimization
- # level specific PCH files for the opt build and use them here, but
- # it's probably not worth the effort as long as only a few files
- # need this special handling.
- PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/unsafe.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/jvmciCompilerToVM.o = $(PCH_FLAG/NO_PCH)
-
- endif
-else # ($(USE_CLANG), true)
- # check for precompiled headers support
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
- # Allow the user to turn off precompiled headers from the command line.
- ifneq ($(USE_PRECOMPILED_HEADER),0)
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
- endif
- endif
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-ifeq ($(USE_PRECOMPILED_HEADER),0)
- CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-endif
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -fPIC
-
-VM_PICFLAG/LIBJVM = $(PICFLAG)
-VM_PICFLAG/AOUT =
-VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
-
-ifeq ($(JVM_VARIANT_ZERO), true)
- CFLAGS += $(LIBFFI_CFLAGS)
-endif
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
- CFLAGS += $(LIBFFI_CFLAGS)
- CFLAGS += $(LLVM_CFLAGS)
-endif
-
-ifeq ($(STATIC_BUILD),true)
-CXXFLAGS += -DSTATIC_BUILD
-CFLAGS += -DSTATIC_BUILD
-else
-CFLAGS += $(VM_PICFLAG)
-endif
-
-CFLAGS += -fno-rtti
-CFLAGS += -fno-exceptions
-ifeq ($(USE_CLANG),)
- CFLAGS += -pthread
- CFLAGS += -fcheck-new
- # version 4 and above support fvisibility=hidden (matches jni_x86.h file)
- # except 4.1.2 gives pointless warnings that can't be disabled (afaik)
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
- CFLAGS += -fvisibility=hidden
- endif
-else
- CFLAGS += -fvisibility=hidden
-endif
-
-ifeq ($(USE_CLANG), true)
- # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
- # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16
- else
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16
- endif
-endif
-
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-ARCHFLAG/i486 = -m32 -march=i586
-ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT)
-ARCHFLAG/ia64 =
-ARCHFLAG/sparc = -m32 -mcpu=v9
-ARCHFLAG/sparcv9 = -m64 -mcpu=v9
-ARCHFLAG/zero = $(ZERO_ARCHFLAG)
-
-# Darwin-specific build flags
-ifeq ($(OS_VENDOR), Darwin)
- # Ineffecient 16-byte stack re-alignment on Darwin/IA32
- ARCHFLAG/i486 += -mstackrealign
-endif
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-ifdef E500V2
-CFLAGS += -DE500V2
-endif
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# Keep temporary files (.ii, .s)
-ifdef NEED_ASM
- CFLAGS += -save-temps
-else
- CFLAGS += -pipe
-endif
-
-# Compiler warnings are treated as errors
-ifneq ($(COMPILER_WARNINGS_FATAL),false)
- WARNINGS_ARE_ERRORS ?= -Werror
-endif
-
-ifeq ($(USE_CLANG), true)
- # However we need to clean the code up before we can unrestrictedly enable this option with Clang
- WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses
- WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-compare
-# Not yet supported by clang in Xcode 4.6.2
-# WARNINGS_ARE_ERRORS += -Wno-tautological-constant-out-of-range-compare
- WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess
- WARNINGS_ARE_ERRORS += -Wno-empty-body
-endif
-
-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wformat=2
-
-ifeq ($(USE_CLANG),)
- # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
- # conversions which might affect the values. Only enable it in earlier versions.
- ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
- WARNINGS_FLAGS += -Wconversion
- endif
-endif
-
-CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-# XXXDARWIN: for _dyld_bind_fully_image_containing_address
-ifeq ($(OS_VENDOR), Darwin)
- CFLAGS_WARN/os_bsd.o = $(CFLAGS_WARN/DEFAULT) -Wno-deprecated-declarations
-endif
-
-# optimization control flags (Used by fastdebug and release variants)
-OPT_CFLAGS/NOOPT=-O0
-OPT_CFLAGS/DEBUG=-O0
-OPT_CFLAGS/SIZE=-Os
-OPT_CFLAGS/SPEED=-O3
-
-ifeq ($(OS_VENDOR), Darwin)
- # use -Os by default, unless -O3 can be proved to be worth the cost, as per policy
- #
- OPT_CFLAGS_DEFAULT ?= SIZE
-else
- OPT_CFLAGS_DEFAULT ?= SPEED
-endif
-
-# Hotspot uses very unstrict aliasing turn this optimization off
-# This option is added to CFLAGS rather than OPT_CFLAGS
-# so that OPT_CFLAGS overrides get this option too.
-CFLAGS += -fno-strict-aliasing
-
-ifdef OPT_CFLAGS
- ifneq ("$(origin OPT_CFLAGS)", "command line")
- $(error " Use OPT_EXTRAS instead of OPT_CFLAGS to add extra flags to OPT_CFLAGS.")
- endif
-endif
-
-OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS)
-
-# The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp
-# if we use expensive-optimizations
-ifeq ($(BUILDARCH), ia64)
-OPT_CFLAGS += -fno-expensive-optimizations
-endif
-
-# Work around some compiler bugs.
-ifeq ($(USE_CLANG), true)
- # Clang < 6 | <= 6.1 | <= 7.0
- ifeq ($(shell expr \
- $(CC_VER_MAJOR) \< 6 \| \
- \( $(CC_VER_MAJOR) = 6 \& $(CC_VER_MINOR) \<= 1 \) \| \
- \( $(CC_VER_MAJOR) = 7 \& $(CC_VER_MINOR) \<= 0 \) \
- ), 1)
- OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT)
- OPT_CFLAGS/unsafe.o += -O1
-
- # The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
- # of OPT_CFLAGS. Restore it here.
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/loopTransform.o += -g
- OPT_CFLAGS/unsafe.o += -g
- endif
- else
- $(error "Update compiler workarounds for Clang $(CC_VER_MAJOR).$(CC_VER_MINOR)")
- endif
-else
- # Do not allow GCC 4.1.1
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 1 \& $(CC_VER_MICRO) = 1), 1)
- $(error "GCC $(CC_VER_MAJOR).$(CC_VER_MINOR).$(CC_VER_MICRO) not supported because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27724")
- endif
- # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
- OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT)
- endif
-endif
-
-# Flags for generating make dependency flags.
-DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
-ifeq ($(USE_CLANG),)
- ifneq ($(CC_VER_MAJOR), 2)
- DEPFLAGS += -fpch-deps
- endif
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-ifeq ($(USE_PRECOMPILED_HEADER),0)
-CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-endif
-
-ifeq ($(OS_VENDOR), Darwin)
- # Setting these parameters makes it an error to link to macosx APIs that are
- # newer than the given OS version and makes the linked binaries compatible even
- # if built on a newer version of the OS.
- # The expected format is X.Y.Z
- ifeq ($(MACOSX_VERSION_MIN),)
- MACOSX_VERSION_MIN=10.7.0
- endif
- # The macro takes the version with no dots, ex: 1070
- CFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=$(subst .,,$(MACOSX_VERSION_MIN)) \
- -mmacosx-version-min=$(MACOSX_VERSION_MIN)
- LDFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)
-endif
-
-
-#------------------------------------------------------------------------
-# Assembler flags
-
-# Enforce prerpocessing of .s files
-ASFLAGS += -x assembler-with-cpp
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# statically link libstdc++.so, work with gcc but ignored by g++
-STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
-
-# Ensure use libstdc++ on clang, not libc++
-ifeq ($(USE_CLANG), true)
- LFLAGS += -stdlib=libstdc++
-endif
-
-ifeq ($(USE_CLANG),)
- # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
- ifneq ($(CC_VER_MAJOR), 2)
- STATIC_LIBGCC += -static-libgcc
- endif
-
- ifneq ($(OS_VENDOR), Darwin)
- ifneq (, findstring(debug,$(BUILD_FLAVOR)))
- # for relocations read-only
- LFLAGS += -Xlinker -z -Xlinker relro
-
- ifeq ($(BUILD_FLAVOR), debug)
- # disable incremental relocations linking
- LFLAGS += -Xlinker -z -Xlinker now
- endif
- endif
- endif
-
- ifeq ($(BUILDARCH), ia64)
- LFLAGS += -Wl,-relax
- endif
-endif
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -Xlinker --version-script=FILENAME
-
-#
-# Shared Library
-#
-ifeq ($(OS_VENDOR), Darwin)
- # Standard linker flags
- LFLAGS +=
-
- # The apple linker has its own variant of mapfiles/version-scripts
- MAPFLAG = -Xlinker -exported_symbols_list -Xlinker FILENAME
-
- # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
- SONAMEFLAG =
-
- # Build shared library
- SHARED_FLAG = -Wl,-install_name,@rpath/$(@F) -dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $(VM_PICFLAG)
-
- # Keep symbols even they are not used
- #AOUT_FLAGS += -Xlinker -export-dynamic
-else
- # Enable linker optimization
- LFLAGS += -Xlinker -O1
-
- # Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
- SONAMEFLAG = -Xlinker -soname=SONAME
-
- # Build shared library
- SHARED_FLAG = -shared $(VM_PICFLAG)
-
- # Keep symbols even they are not used
- AOUT_FLAGS += -Xlinker -export-dynamic
-endif
-
-#------------------------------------------------------------------------
-# Debug flags
-
-ifeq ($(USE_CLANG), true)
- # Restrict the debug information created by Clang to avoid
- # too big object files and speed the build up a little bit
- # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
- CFLAGS += -flimit-debug-info
-endif
-
-# Allow no optimizations.
-DEBUG_CFLAGS=-O0
-
-# DEBUG_BINARIES uses full -g debug information for all configs
-ifeq ($(DEBUG_BINARIES), true)
- CFLAGS += -g
-else
- # Use the stabs format for debugging information (this is the default
- # on gcc-2.91). It's good enough, has all the information about line
- # numbers and local variables, and libjvm.so is only about 16M.
- # Change this back to "-g" if you want the most expressive format.
- # (warning: that could easily inflate libjvm.so to 150M!)
- # Note: The Itanium gcc compiler crashes when using -gstabs.
- DEBUG_CFLAGS/ia64 = -g
- DEBUG_CFLAGS/amd64 = -g
- DEBUG_CFLAGS/arm = -g
- DEBUG_CFLAGS/ppc = -g
- DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
- ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
- ifeq ($(USE_CLANG), true)
- # Clang doesn't understand -gstabs
- DEBUG_CFLAGS += -g
- else
- DEBUG_CFLAGS += -gstabs
- endif
- endif
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- FASTDEBUG_CFLAGS/ia64 = -g
- FASTDEBUG_CFLAGS/amd64 = -g
- FASTDEBUG_CFLAGS/arm = -g
- FASTDEBUG_CFLAGS/ppc = -g
- FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
- ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
- ifeq ($(USE_CLANG), true)
- # Clang doesn't understand -gstabs
- FASTDEBUG_CFLAGS += -g
- else
- FASTDEBUG_CFLAGS += -gstabs
- endif
- endif
-
- OPT_CFLAGS/ia64 = -g
- OPT_CFLAGS/amd64 = -g
- OPT_CFLAGS/arm = -g
- OPT_CFLAGS/ppc = -g
- OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
- ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
- ifeq ($(USE_CLANG), true)
- # Clang doesn't understand -gstabs
- OPT_CFLAGS += -g
- else
- OPT_CFLAGS += -gstabs
- endif
- endif
- endif
-endif
-
-ifeq ($(USE_CLANG),)
- # Enable bounds checking.
- ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) )" "1"
- # stack smashing checks.
- DEBUG_CFLAGS += -fstack-protector-all --param ssp-buffer-size=1
- endif
-endif
-
-# If we are building HEADLESS, pass on to VM
-# so it can set the java.awt.headless property
-ifdef HEADLESS
-CFLAGS += -DHEADLESS
-endif
-
-# We are building Embedded for a small device
-# favor code space over speed
-ifdef MINIMIZE_RAM_USAGE
-CFLAGS += -DMINIMIZE_RAM_USAGE
-endif
diff --git a/hotspot/make/bsd/makefiles/hp.make b/hotspot/make/bsd/makefiles/hp.make
deleted file mode 100644
index e0b262a8fa2..00000000000
--- a/hotspot/make/bsd/makefiles/hp.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/bsd/makefiles/hp1.make b/hotspot/make/bsd/makefiles/hp1.make
deleted file mode 100644
index 2e37a6ead33..00000000000
--- a/hotspot/make/bsd/makefiles/hp1.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP1
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/bsd/makefiles/i486.make b/hotspot/make/bsd/makefiles/i486.make
deleted file mode 100644
index 86e825d3e9d..00000000000
--- a/hotspot/make/bsd/makefiles/i486.make
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# TLS helper, assembled from .s file
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-OPT_CFLAGS/compactingPermGenGen.o = -O1
diff --git a/hotspot/make/bsd/makefiles/ia64.make b/hotspot/make/bsd/makefiles/ia64.make
deleted file mode 100644
index 8535807a787..00000000000
--- a/hotspot/make/bsd/makefiles/ia64.make
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 2005, 2012, 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.
-#
-#
-
-#
-# IA64 only uses c++ based interpreter
-CFLAGS += -DCC_INTERP -D_LP64=1 -DVM_LITTLE_ENDIAN
-ifeq ($(VERSION),debug)
-ASM_FLAGS= -DDEBUG
-else
-ASM_FLAGS=
-endif
-# workaround gcc bug in compiling varargs
-OPT_CFLAGS/jni.o = -O0
-
-# gcc/ia64 has a bug that internal gcc functions linked with libjvm.so
-# are made public. Hiding those symbols will cause undefined symbol error
-# when VM is dropped into older JDK. We probably will need an IA64
-# mapfile to include those symbols as a workaround. Disable linker mapfile
-# for now.
-LDNOMAP=true
diff --git a/hotspot/make/bsd/makefiles/jsig.make b/hotspot/make/bsd/makefiles/jsig.make
deleted file mode 100644
index 585a0f45ba9..00000000000
--- a/hotspot/make/bsd/makefiles/jsig.make
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build signal interposition library, used by vm.make
-
-# libjsig.so: signal interposition library
-JSIG = jsig
-
-ifeq ($(OS_VENDOR), Darwin)
- LIBJSIG = lib$(JSIG).$(LIBRARY_SUFFIX)
-
- LIBJSIG_DEBUGINFO = lib$(JSIG).$(LIBRARY_SUFFIX).dSYM
- LIBJSIG_DIZ = lib$(JSIG).diz
-else
- LIBJSIG = lib$(JSIG).so
-
- LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo
- LIBJSIG_DIZ = lib$(JSIG).diz
-endif
-
-JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-
-DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG)
-DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO)
-DEST_JSIG_DIZ = $(JDK_LIBDIR)/$(LIBJSIG_DIZ)
-
-LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
-
-# On Bsd we really dont want a mapfile, as this library is small
-# and preloaded using LD_PRELOAD, making functions private will
-# cause problems with interposing. See CR: 6466665
-# LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
-LFLAGS_JSIG += -D_GNU_SOURCE -pthread $(LDFLAGS_HASH_STYLE)
-
-# DEBUG_BINARIES overrides everything, use full -g debug information
-ifeq ($(DEBUG_BINARIES), true)
- JSIG_DEBUG_CFLAGS = -g
-endif
-
-$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
- @echo $(LOG_INFO) Making signal interposition lib...
-ifeq ($(STATIC_BUILD),true)
- $(QUIETLY) $(CC) -c $(SYMFLAG) $(EXTRA_CFLAGS) $(ARCHFLAG) $(PICFLAG) \
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) -o $(JSIG).o $<
- $(QUIETLY) $(AR) $(ARFLAGS) $@ $(JSIG).o
-else
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $<
-endif
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -r -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
- $(RM) -r $(LIBJSIG_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
- $(RM) $(LIBJSIG_DEBUGINFO)
- endif
- endif
-endif
-
-install_jsig: $(LIBJSIG)
- @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
-ifeq ($(OS_VENDOR), Darwin)
- $(QUIETLY) test ! -d $(LIBJSIG_DEBUGINFO) || \
- $(CP) -f -r $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
-else
- $(QUIETLY) test ! -f $(LIBJSIG_DEBUGINFO) || \
- $(CP) -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
-endif
- $(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
- $(CP) -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
-
-.PHONY: install_jsig
diff --git a/hotspot/make/bsd/makefiles/jvmti.make b/hotspot/make/bsd/makefiles/jvmti.make
deleted file mode 100644
index cb22c2b0f4d..00000000000
--- a/hotspot/make/bsd/makefiles/jvmti.make
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# Copyright (c) 2003, 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.
-#
-#
-
-# This makefile (jvmti.make) is included from the jvmti.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate jvmti.
-
-include $(GAMMADIR)/make/bsd/makefiles/rules.make
-
-# #########################################################################
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-
-JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
-InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(JvmtiSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-JvmtiGeneratedNames = \
- jvmtiEnv.hpp \
- jvmtiEnter.cpp \
- jvmtiEnterTrace.cpp \
- jvmtiEnvRecommended.cpp \
- bytecodeInterpreterWithChecks.cpp \
- jvmti.h \
-
-JvmtiEnvFillSource = $(JvmtiSrcDir)/jvmtiEnvFill.java
-JvmtiEnvFillClass = $(JvmtiOutDir)/jvmtiEnvFill.class
-
-JvmtiGenSource = $(JvmtiSrcDir)/jvmtiGen.java
-JvmtiGenClass = $(JvmtiOutDir)/jvmtiGen.class
-
-JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
-
-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-.PHONY: all jvmtidocs clean cleanall
-
-# #########################################################################
-
-all: $(JvmtiGeneratedFiles)
-
-both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
-
-$(JvmtiGenClass): $(JvmtiGenSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
-
-$(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-
-$(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
-
-$(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
-
-$(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
-
-$(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
- $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
-
-$(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
-
-$(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
-
-jvmtidocs: $(JvmtiOutDir)/jvmti.html
-
-$(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
-
-# #########################################################################
-
-clean :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-cleanall :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-# #########################################################################
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug
deleted file mode 100644
index f92fe181903..00000000000
--- a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-debug
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-# Only used for OSX/Darwin builds
-
-# Define public interface.
- _JVM_handle_bsd_signal
-
- # miscellaneous functions
- _jio_fprintf
- _jio_printf
- _jio_snprintf
- _jio_vfprintf
- _jio_vsnprintf
-
- # This is for Forte Analyzer profiling support.
- _AsyncGetCallTrace
-
- # INSERT VTABLE SYMBOLS HERE
-
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product b/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product
deleted file mode 100644
index 47b8549c2ba..00000000000
--- a/hotspot/make/bsd/makefiles/mapfile-vers-darwin-product
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-# Only used for OSX/Darwin builds
-
-# Define public interface.
- _JVM_handle_bsd_signal
-
- # miscellaneous functions
- _jio_fprintf
- _jio_printf
- _jio_snprintf
- _jio_vfprintf
- _jio_vsnprintf
-
- # This is for Forte Analyzer profiling support.
- _AsyncGetCallTrace
-
- # INSERT VTABLE SYMBOLS HERE
-
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-debug b/hotspot/make/bsd/makefiles/mapfile-vers-debug
deleted file mode 100644
index ec0f06d8f65..00000000000
--- a/hotspot/make/bsd/makefiles/mapfile-vers-debug
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-jsig b/hotspot/make/bsd/makefiles/mapfile-vers-jsig
deleted file mode 100644
index 8a675046b6e..00000000000
--- a/hotspot/make/bsd/makefiles/mapfile-vers-jsig
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-
-#
-# Copyright (c) 2005, 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.
-#
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_begin_signal_setting;
- JVM_end_signal_setting;
- JVM_get_libjsig_version;
- JVM_get_signal_action;
- sigaction;
- signal;
- sigset;
- local:
- *;
-};
diff --git a/hotspot/make/bsd/makefiles/mapfile-vers-product b/hotspot/make/bsd/makefiles/mapfile-vers-product
deleted file mode 100644
index ec0f06d8f65..00000000000
--- a/hotspot/make/bsd/makefiles/mapfile-vers-product
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/bsd/makefiles/minimal1.make b/hotspot/make/bsd/makefiles/minimal1.make
deleted file mode 100644
index d453e789877..00000000000
--- a/hotspot/make/bsd/makefiles/minimal1.make
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-TYPE=MINIMAL1
-
-# Force all variables to false, overriding any other
-# setting that may have occurred in the makefiles. These
-# can still be overridden by passing the variable as an
-# argument to 'make'
-INCLUDE_JVMTI := false
-INCLUDE_FPROF := false
-INCLUDE_VM_STRUCTS := false
-INCLUDE_JNI_CHECK := false
-INCLUDE_SERVICES := false
-INCLUDE_MANAGEMENT := false
-INCLUDE_ALL_GCS := false
-INCLUDE_NMT := false
-INCLUDE_TRACE := false
-INCLUDE_CDS := false
-INCLUDE_JVMCI := false
-
-CXXFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
-CFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
-
-Src_Dirs/MINIMAL1 = $(CORE_PATHS) $(COMPILER1_PATHS)
-
-Src_Files_EXCLUDE/MINIMAL1 += $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-
--include $(HS_ALT_MAKE)/$(OSNAME)/makefiles/minimal1.make
-
-.PHONY: $(HS_ALT_MAKE)/$(OSNAME)/makefiles/minimal1.make
diff --git a/hotspot/make/bsd/makefiles/optimized.make b/hotspot/make/bsd/makefiles/optimized.make
deleted file mode 100644
index f098efdbd82..00000000000
--- a/hotspot/make/bsd/makefiles/optimized.make
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Copyright (c) 1999, 2012, 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.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug
-ifeq ($(OS_VENDOR), Darwin)
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-debug
-endif
-
-VERSION = optimized
diff --git a/hotspot/make/bsd/makefiles/ppc.make b/hotspot/make/bsd/makefiles/ppc.make
deleted file mode 100644
index 92957f963f9..00000000000
--- a/hotspot/make/bsd/makefiles/ppc.make
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 2004, 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.
-#
-#
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-
-# Must also specify if CPU is big endian
-CFLAGS += -DVM_BIG_ENDIAN
-
diff --git a/hotspot/make/bsd/makefiles/product.make b/hotspot/make/bsd/makefiles/product.make
deleted file mode 100644
index 7d3c345d38c..00000000000
--- a/hotspot/make/bsd/makefiles/product.make
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-product
-ifeq ($(OS_VENDOR), Darwin)
-MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-darwin-product
-endif
-
-SYSDEFS += -DPRODUCT
-VERSION = optimized
-
-ifneq ($(OS_VENDOR), Darwin)
- # use -g to strip library as -x will discard its symbol table; -x is fine for
- # executables.
- ifdef CROSS_COMPILE_ARCH
- STRIP = $(ALT_COMPILER_PATH)/strip
- else
- STRIP = strip
- endif
- STRIP_LIBJVM = $(STRIP) -g $@ || exit 1;
- STRIP_AOUT = $(STRIP) -x $@ || exit 1;
-
- # Don't strip in VM build; JDK build will strip libraries later
- # LINK_LIB.CXX/POST_HOOK += $(STRIP_$(LINK_INTO))
-endif
diff --git a/hotspot/make/bsd/makefiles/rules.make b/hotspot/make/bsd/makefiles/rules.make
deleted file mode 100644
index bb36f19a473..00000000000
--- a/hotspot/make/bsd/makefiles/rules.make
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Common rules/macros for the vm, adlc.
-
-# Tell make that .cpp is important
-.SUFFIXES: .cpp $(SUFFIXES)
-
-DEMANGLER = c++filt
-DEMANGLE = $(DEMANGLER) < $@ > .$@ && $(MV) -f .$@ $@
-
-# $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++).
-CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
-CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
-AS.S = $(AS) $(ASFLAGS)
-
-COMPILE.CC = $(CC_COMPILE) -c
-GENASM.CC = $(CC_COMPILE) -S
-LINK.CC = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-ifeq ($(STATIC_BUILD),true)
-LINK_LIB.CC = $(AR) $(ARFLAGS)
-else
-LINK_LIB.CC = $(CC) $(LFLAGS) $(SHARED_FLAG)
-endif
-PREPROCESS.CC = $(CC_COMPILE) -E
-
-COMPILE.CXX = $(CXX_COMPILE) -c
-GENASM.CXX = $(CXX_COMPILE) -S
-LINK.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_NOPROF.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS)
-LINK_LIB.CXX = $(CXX) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CXX = $(CXX_COMPILE) -E
-
-# cross compiling the jvm with c2 requires host compilers to build
-# adlc tool
-
-HOST.CXX_COMPILE = $(HOSTCXX) $(CXXFLAGS) $(CFLAGS)
-HOST.COMPILE.CXX = $(HOST.CXX_COMPILE) -c
-HOST.LINK_NOPROF.CXX = $(HOSTCXX) $(LFLAGS) $(AOUT_FLAGS)
-
-
-# Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k".
-REMOVE_TARGET = rm -f $@
-
-# Note use of ALT_BOOTDIR to explicitly specify location of java and
-# javac; this is the same environment variable used in the J2SE build
-# process for overriding the default spec, which is BOOTDIR.
-# Note also that we fall back to using JAVA_HOME if neither of these is
-# specified.
-
-ifdef ALT_BOOTDIR
-
-RUN.JAVA = $(ALT_BOOTDIR)/bin/java
-RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap
-RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah
-RUN.JAR = $(ALT_BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac
-COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(ALT_BOOTDIR)
-
-else
-
-ifdef BOOTDIR
-
-RUN.JAVA = $(BOOTDIR)/bin/java
-RUN.JAVAP = $(BOOTDIR)/bin/javap
-RUN.JAVAH = $(BOOTDIR)/bin/javah
-RUN.JAR = $(BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(BOOTDIR)/bin/javac
-COMPILE.RMIC = $(BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(BOOTDIR)
-
-else
-
-ifdef JAVA_HOME
-
-RUN.JAVA = $(JAVA_HOME)/bin/java
-RUN.JAVAP = $(JAVA_HOME)/bin/javap
-RUN.JAVAH = $(JAVA_HOME)/bin/javah
-RUN.JAR = $(JAVA_HOME)/bin/jar
-COMPILE.JAVAC = $(JAVA_HOME)/bin/javac
-COMPILE.RMIC = $(JAVA_HOME)/bin/rmic
-BOOT_JAVA_HOME = $(JAVA_HOME)
-
-else
-
-# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
-
-RUN.JAVA = java
-RUN.JAVAP = javap
-RUN.JAVAH = javah
-RUN.JAR = jar
-COMPILE.JAVAC = javac
-COMPILE.RMIC = rmic
-
-endif
-endif
-endif
-
-COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-
-SUM = /usr/bin/sum
-
-# 'gmake MAKE_VERBOSE=y' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-RUN.JAR$(MAKE_VERBOSE) += >/dev/null
-
-# Settings for javac
-JAVAC_FLAGS = -g -encoding ascii
-
-# Prefer BOOT_JDK_SOURCETARGET if it's set (typically by the top build system)
-# Fall back to the values here if it's not set (hotspot only builds)
-ifeq ($(BOOT_JDK_SOURCETARGET),)
-BOOTSTRAP_SOURCETARGET := -source 8 -target 8
-else
-BOOTSTRAP_SOURCETARGET := $(BOOT_JDK_SOURCETARGET)
-endif
-
-BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) $(BOOTSTRAP_SOURCETARGET)
-
-# With parallel makes, print a message at the end of compilation.
-ifeq ($(findstring j,$(MFLAGS)),j)
-COMPILE_DONE = && { echo Done with $<; }
-endif
-
-# Include $(NONPIC_OBJ_FILES) definition
-ifndef LP64
-include $(GAMMADIR)/make/pic.make
-endif
-
-include $(GAMMADIR)/make/altsrc.make
-
-# The non-PIC object files are only generated for 32 bit platforms.
-ifdef LP64
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-else
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
- $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
- $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
-endif
-
-%.o: %.s
- @echo $(LOG_INFO) Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
-%.s: %.cpp
- @echo $(LOG_INFO) Generating assembly for $<
- $(QUIETLY) $(GENASM.CXX) -o $@ $<
- $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE)
-
-# Intermediate files (for debugging macros)
-%.i: %.cpp
- @echo $(LOG_INFO) Preprocessing $< to $@
- $(QUIETLY) $(PREPROCESS.CXX) $< > $@ $(COMPILE_DONE)
-
-# Override gnumake built-in rules which do sccs get operations badly.
-# (They put the checked out code in the current directory, not in the
-# directory of the original file.) Since this is a symptom of a teamware
-# failure, and since not all problems can be detected by gnumake due
-# to incomplete dependency checking... just complain and stop.
-%:: s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-%:: SCCS/s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-.PHONY: default
diff --git a/hotspot/make/bsd/makefiles/shark.make b/hotspot/make/bsd/makefiles/shark.make
deleted file mode 100644
index ca702ee6616..00000000000
--- a/hotspot/make/bsd/makefiles/shark.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2008, 2010 Red Hat, Inc.
-# 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.
-#
-#
-
-# Sets make macros for making Shark version of VM
-
-TYPE = SHARK
-
-VM_SUBDIR = server
-
-CFLAGS += -DSHARK
diff --git a/hotspot/make/bsd/makefiles/sparc.make b/hotspot/make/bsd/makefiles/sparc.make
deleted file mode 100644
index ddb05132fab..00000000000
--- a/hotspot/make/bsd/makefiles/sparc.make
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2005, 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.
-#
-#
-
diff --git a/hotspot/make/bsd/makefiles/sparcWorks.make b/hotspot/make/bsd/makefiles/sparcWorks.make
deleted file mode 100644
index e39116023c5..00000000000
--- a/hotspot/make/bsd/makefiles/sparcWorks.make
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# Copyright (c) 1999, 2012, 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.
-#
-#
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- CXX = CC
- CC = cc
- AS = $(CC) -c
-
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
-endif
-
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-ARCHFLAG/i486 = -m32
-ARCHFLAG/amd64 = -m64
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -KPIC
-
-CFLAGS += $(PICFLAG)
-# no more exceptions
-CFLAGS += -features=no%except
-# Reduce code bloat by reverting back to 5.0 behavior for static initializers
-CFLAGS += -features=no%split_init
-# allow zero sized arrays
-CFLAGS += -features=zla
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# We don't need libCstd.so and librwtools7.so, only libCrun.so
-CFLAGS += -library=Crun
-LIBS += -lCrun
-
-CFLAGS += -mt
-LFLAGS += -mt
-
-# Compiler warnings are treated as errors
-#WARNINGS_ARE_ERRORS = -errwarn=%all
-CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS)
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-
-# The flags to use for an Optimized build
-OPT_CFLAGS+=-xO4
-OPT_CFLAGS/NOOPT=-xO0
-
-# Flags for creating the dependency files.
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d)
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -Wl,--version-script=FILENAME
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -h SONAME
-
-# Build shared library
-SHARED_FLAG = -G
-
-#------------------------------------------------------------------------
-# Debug flags
-DEBUG_CFLAGS += -g
-FASTDEBUG_CFLAGS = -g0
-
diff --git a/hotspot/make/bsd/makefiles/sparcv9.make b/hotspot/make/bsd/makefiles/sparcv9.make
deleted file mode 100644
index b9e4e525d76..00000000000
--- a/hotspot/make/bsd/makefiles/sparcv9.make
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2005, 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.
-#
-
-# gcc 4.0 miscompiles this code in -m64
-OPT_CFLAGS/macro.o = -O0
-
-CFLAGS += -D_LP64=1
diff --git a/hotspot/make/bsd/makefiles/tiered.make b/hotspot/make/bsd/makefiles/tiered.make
deleted file mode 100644
index da79ade9fdc..00000000000
--- a/hotspot/make/bsd/makefiles/tiered.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 2006, 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.
-#
-#
-
-# Sets make macros for making tiered version of VM
-
-TYPE=TIERED
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2 -DCOMPILER1
diff --git a/hotspot/make/bsd/makefiles/top.make b/hotspot/make/bsd/makefiles/top.make
deleted file mode 100644
index 47394d64a95..00000000000
--- a/hotspot/make/bsd/makefiles/top.make
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# top.make is included in the Makefile in the build directories.
-# It DOES NOT include the vm dependency info in order to be faster.
-# Its main job is to implement the incremental form of make lists.
-# It also:
-# -builds and runs adlc via adlc.make
-# -generates JVMTI source and docs via jvmti.make (JSR-163)
-
-# It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
-
-# -- D. Ungar (5/97) from a file by Bill Bush
-
-# Don't override the built-in $(MAKE).
-# Instead, use "gmake" (or "gnumake") from the command line. --Rose
-#MAKE = gmake
-
-include $(GAMMADIR)/make/altsrc.make
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-VM = $(GAMMADIR)/src/share/vm
-Plat_File = $(Platform_file)
-CDG = cd $(GENERATED);
-
-ifneq ($(USE_PRECOMPILED_HEADER),0)
-UpdatePCH = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS)
-else
-UpdatePCH = \# precompiled header is not used
-endif
-
-Cached_plat = $(GENERATED)/platform.current
-
-AD_Dir = $(GENERATED)/adfiles
-ADLC = $(AD_Dir)/adlc
-AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
-AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
-AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
-AD_Files = $(AD_Names:%=$(AD_Dir)/%)
-
-# AD_Files_If_Required/COMPILER1 = ad_stuff
-AD_Files_If_Required/COMPILER2 = ad_stuff
-AD_Files_If_Required/TIERED = ad_stuff
-AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE))
-
-# Wierd argument adjustment for "gnumake -j..."
-adjust-mflags = $(GENERATED)/adjust-mflags
-# If SPEC is set, it's from configure and it's already controlling concurrency
-# for us. Skip setting -j with HOTSPOT_BUILD_JOBS.
-ifeq ($(SPEC), )
- MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
-else
- MFLAGS-adjusted = -r $(MFLAGS)
-endif
-
-
-# default target: update lists, make vm
-# done in stages to force sequential order with parallel make
-#
-
-default: vm_build_preliminaries the_vm
- @echo All done.
-
-# This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff dtrace_stuff
- @# We need a null action here, so implicit rules don't get consulted.
-
-$(Cached_plat): $(Plat_File)
- $(CDG) $(CP) $(Plat_File) $(Cached_plat)
-
-# make AD files as necessary
-ad_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f adlc.make $(MFLAGS-adjusted)
-
-# generate JVMTI files from the spec
-jvmti_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
-
-# generate trace files
-trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f trace.make $(MFLAGS-adjusted)
-
-ifeq ($(OS_VENDOR), Darwin)
-# generate dtrace header files
-dtrace_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f dtrace.make dtrace_stuff $(MFLAGS-adjusted) GENERATED=$(GENERATED)
-else
-dtrace_stuff:
- @# We need a null action here, so implicit rules don't get consulted.
-endif
-
-# and the VM: must use other makefile with dependencies included
-
-# We have to go to great lengths to get control over the -jN argument
-# to the recursive invocation of vm.make. The problem is that gnumake
-# resets -jN to -j1 for recursive runs. (How helpful.)
-# Note that the user must specify the desired parallelism level via a
-# command-line or environment variable name HOTSPOT_BUILD_JOBS.
-$(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh
- @+rm -f $@ $@+
- @+cat $< > $@+
- @+chmod +x $@+
- @+mv $@+ $@
-
-the_vm: vm_build_preliminaries $(adjust-mflags)
- +@$(UpdatePCH)
- @$(MAKE) -f vm.make $(MFLAGS-adjusted)
-
-install : the_vm
- @$(MAKE) -f vm.make $@
-
-# next rules support "make foo.[ois]"
-
-%.o %.i %.s:
- +$(UpdatePCH)
- $(MAKE) -f vm.make $(MFLAGS) $@
- #$(MAKE) -f vm.make $@
-
-# this should force everything to be rebuilt
-clean:
- rm -f $(GENERATED)/*.class
- $(MAKE) -f vm.make $(MFLAGS) clean
-
-# just in case it doesn't, this should do it
-realclean:
- $(MAKE) -f vm.make $(MFLAGS) clean
- rm -fr $(GENERATED)
-
-.PHONY: default vm_build_preliminaries
-.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
-.PHONY: checks check_os_version install
-
-.NOTPARALLEL:
diff --git a/hotspot/make/bsd/makefiles/trace.make b/hotspot/make/bsd/makefiles/trace.make
deleted file mode 100644
index 37df4425f50..00000000000
--- a/hotspot/make/bsd/makefiles/trace.make
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (trace.make) is included from the trace.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate trace files.
-
-include $(GAMMADIR)/make/bsd/makefiles/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-# #########################################################################
-
-HAS_ALT_SRC := false
-ifndef OPENJDK
- ifneq ($(wildcard $(HS_ALT_SRC)/share/vm/trace), )
- HAS_ALT_SRC := true
- endif
-endif
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-TraceOutDir = $(GENERATED)/tracefiles
-
-TraceAltSrcDir = $(HS_ALT_SRC)/share/vm/trace
-TraceSrcDir = $(HS_COMMON_SRC)/share/vm/trace
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(TraceSrcDir) $(TraceAltSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-TraceGeneratedNames = \
- traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
-
-ifeq ($(HAS_ALT_SRC), true)
-TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
-endif
-
-TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
-
-XSLT = $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-TraceXml = $(TraceSrcDir)/trace.xml
-ifeq ($(HAS_ALT_SRC), true)
- TraceXml = $(TraceAltSrcDir)/trace.xml
-endif
-
-XML_DEPS = $(TraceXml) $(TraceSrcDir)/tracetypes.xml \
- $(TraceSrcDir)/trace.dtd $(TraceSrcDir)/xinclude.mod \
- $(TraceSrcDir)/tracerelationdecls.xml $(TraceSrcDir)/traceevents.xml
-ifeq ($(HAS_ALT_SRC), true)
- XML_DEPS += $(TraceAltSrcDir)/traceeventscustom.xml \
- $(TraceAltSrcDir)/traceeventtypes.xml
-endif
-
-.PHONY: all clean cleanall
-
-# #########################################################################
-
-all: $(TraceGeneratedFiles)
-
-GENERATE_CODE= \
- $(QUIETLY) echo $(LOG_INFO) Generating $@; \
- $(XSLT) -IN $(word 1,$^) -XSL $(word 2,$^) -OUT $@
-
-$(TraceOutDir)/traceEventIds.hpp: $(TraceXml) $(TraceSrcDir)/traceEventIds.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceTypes.hpp: $(TraceXml) $(TraceSrcDir)/traceTypes.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-ifeq ($(HAS_ALT_SRC), false)
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-else
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceRequestables.hpp: $(TraceXml) $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceEventControl.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-endif
-
-# #########################################################################
-
-clean cleanall:
- rm $(TraceGeneratedFiles)
diff --git a/hotspot/make/bsd/makefiles/universal.gmk b/hotspot/make/bsd/makefiles/universal.gmk
deleted file mode 100644
index 128d21b46d6..00000000000
--- a/hotspot/make/bsd/makefiles/universal.gmk
+++ /dev/null
@@ -1,126 +0,0 @@
-#
-# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# macosx universal builds
-universal_product:
- $(MAKE) MACOSX_UNIVERSAL=true all_product_universal
-universal_optimized:
- $(MAKE) MACOSX_UNIVERSAL=true all_optimized_universal
-universal_fastdebug:
- $(MAKE) MACOSX_UNIVERSAL=true all_fastdebug_universal
-universal_debug:
- $(MAKE) MACOSX_UNIVERSAL=true all_debug_universal
-
-
-# Universal builds include 1 or more architectures in a single binary
-all_product_universal:
-# $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_PRODUCT_TARGETS)
- $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_PRODUCT_TARGETS)
- $(QUIETLY) $(MAKE) BUILD_FLAVOR=product EXPORT_SUBDIR= universalize
-all_optimized_universal:
-# $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_OPTIMIZED_TARGETS)
- $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_OPTIMIZED_TARGETS)
- $(QUIETLY) $(MAKE) BUILD_FLAVOR=optimized EXPORT_SUBDIR=/optimized universalize
-all_fastdebug_universal:
-# $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_FASTDEBUG_TARGETS)
- $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_FASTDEBUG_TARGETS)
- $(QUIETLY) $(MAKE) BUILD_FLAVOR=fastdebug EXPORT_SUBDIR=/fastdebug universalize
-all_debug_universal:
-# $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=32 $(COMMON_VM_DEBUG_TARGETS)
- $(QUIETLY) $(MAKE) ARCH_DATA_MODEL=64 $(COMMON_VM_DEBUG_TARGETS)
- $(QUIETLY) $(MAKE) BUILD_FLAVOR=debug EXPORT_SUBDIR=/debug universalize
-
-
-# Consolidate architecture builds into a single Universal binary
-universalize: $(UNIVERSAL_LIPO_LIST) $(UNIVERSAL_COPY_LIST)
- $(RM) -r $(EXPORT_PATH)/lib/{i386,amd64}
-
-LIPO ?= lipo
-
-# Package built libraries in a universal binary
-$(UNIVERSAL_LIPO_LIST):
- BUILT_LIPO_FILES="`find $(EXPORT_LIB_DIR)/{i386,amd64}/$(subst $(EXPORT_LIB_DIR)/,,$@) 2>/dev/null`" || test $$? = "1"; \
- if [ -n "$${BUILT_LIPO_FILES}" ]; then \
- $(MKDIR) -p $(shell dirname $@); \
- $(LIPO) -create -output $@ $${BUILT_LIPO_FILES}; \
- fi
-
-
-# Copy built non-universal binaries in place
-# - copies directories; including empty dirs
-# - copies files, symlinks, other non-directory files
-$(UNIVERSAL_COPY_LIST):
- BUILT_COPY_FILES="`find $(EXPORT_LIB_DIR)/{i386,amd64}/$(subst $(EXPORT_LIB_DIR)/,,$@) -prune 2>/dev/null`" || test $$? = "1"; \
- if [ -n "$${BUILT_COPY_FILES}" ]; then \
- for i in $${BUILT_COPY_FILES}; do \
- $(MKDIR) -p $(shell dirname $@); \
- $(CP) -R $${i} $@; \
- done; \
- fi
-
-
-# Replace arch specific binaries with universal binaries
-# Do not touch lib/{client,server}/libjsig.$(LIBRARY_SUFFIX)
-# That symbolic link belongs to the 'jdk' build.
-export_universal:
- $(RM) -r $(EXPORT_PATH)/lib/{i386,amd64}
- $(RM) -r $(JDK_IMAGE_DIR)/lib/{i386,amd64}
- ($(CD) $(EXPORT_PATH) && \
- $(TAR) -cf - *) | \
- ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xpf -)
-
-
-# Overlay universal binaries
-# Do not touch lib/{client,server}/libjsig.$(LIBRARY_SUFFIX)
-# That symbolic link belongs to the 'jdk' build.
-copy_universal:
- $(RM) -r $(JDK_IMAGE_DIR)$(COPY_SUBDIR)/lib/{i386,amd64}
- ($(CD) $(EXPORT_PATH)$(COPY_SUBDIR) && \
- $(TAR) -cf - *) | \
- ($(CD) $(JDK_IMAGE_DIR)$(COPY_SUBDIR) && $(TAR) -xpf -)
-
-
-# Additional processing for universal builds
-export_product_jdk::
- $(MAKE) EXPORT_SUBDIR= export_universal
-export_optimized_jdk::
- $(MAKE) EXPORT_SUBDIR=/optimized export_universal
-export_fastdebug_jdk::
- $(MAKE) EXPORT_SUBDIR=/fastdebug export_universal
-export_debug_jdk::
- $(MAKE) EXPORT_SUBDIR=/debug export_universal
-copy_product_jdk::
- $(MAKE) COPY_SUBDIR= copy_universal
-copy_optimized_jdk::
- $(MAKE) COPY_SUBDIR=/optimized copy_universal
-copy_fastdebug_jdk::
- $(MAKE) COPY_SUBDIR=/fastdebug copy_universal
-copy_debug_jdk::
- $(MAKE) COPY_SUBDIR=/debug copy_universal
-
-.PHONY: universal_product universal_fastdebug universal_debug \
- all_product_universal all_fastdebug_universal all_debug_universal \
- universal_optimized all_optimized_universal \
- universalize export_universal copy_universal \
- $(UNIVERSAL_LIPO_LIST) $(UNIVERSAL_COPY_LIST)
diff --git a/hotspot/make/bsd/makefiles/vm.make b/hotspot/make/bsd/makefiles/vm.make
deleted file mode 100644
index a3c1ce6c267..00000000000
--- a/hotspot/make/bsd/makefiles/vm.make
+++ /dev/null
@@ -1,438 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build JVM and related libraries, included from vm.make in the build
-# directory.
-
-# Common build rules.
-MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
-include $(MAKEFILES_DIR)/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-default: build
-
-#----------------------------------------------------------------------
-# Defs
-
-GENERATED = ../generated
-DEP_DIR = $(GENERATED)/dependencies
-
-# reads the generated files defining the set of .o's and the .o .h dependencies
--include $(DEP_DIR)/*.d
-
-# read machine-specific adjustments (%%% should do this via buildtree.make?)
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- include $(MAKEFILES_DIR)/zeroshark.make
-else
- include $(MAKEFILES_DIR)/$(BUILDARCH).make
-endif
-
-# set VPATH so make knows where to look for source files
-# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The adfiles directory contains ad_.[ch]pp.
-# The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor.
-Src_Dirs_I += $(GENERATED)
-# The order is important for the precompiled headers to work.
-INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
-
-# SYMFLAG is used by jsig.make
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # always build with debug info when we can create .dSYM/.debuginfo files
- SYMFLAG = -g
-else
- ifeq (${VERSION}, debug)
- SYMFLAG = -g
- else
- SYMFLAG =
- endif
-endif
-
-# The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
- -DVERSION_MINOR=$(VERSION_MINOR) \
- -DVERSION_SECURITY=$(VERSION_SECURITY) \
- -DVERSION_PATCH=$(VERSION_PATCH) \
- -DVERSION_BUILD=$(VERSION_BUILD)
-VM_VER_DEFS = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
- -DVERSION_STRING="\"$(VERSION_STRING)\"" \
- -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
- $(JDK_VER_DEFS)
-HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
-BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
-VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
-
-CXXFLAGS = \
- ${SYSDEFS} \
- ${INCLUDES} \
- ${BUILD_USER} \
- ${HS_LIB_ARCH} \
- ${VM_DISTRO}
-
-# This is VERY important! The version define must only be supplied to vm_version.o
-# If not, ccache will not re-use the cache at all, since the version string might contain
-# a time and date.
-CXXFLAGS/vm_version.o += ${VM_VER_DEFS}
-
-CXXFLAGS/BYFILE = $(CXXFLAGS/$@)
-
-# File specific flags
-CXXFLAGS += $(CXXFLAGS/BYFILE)
-
-ifdef DEFAULT_LIBPATH
-CXXFLAGS += -DDEFAULT_LIBPATH="\"$(DEFAULT_LIBPATH)\""
-endif
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-CFLAGS += $(CFLAGS_WARN/BYFILE)
-
-# Do not use C++ exception handling
-CFLAGS += $(CFLAGS/NOEX)
-
-# Extra flags from gnumake's invocation or environment
-CFLAGS += $(EXTRA_CFLAGS)
-LFLAGS += $(EXTRA_CFLAGS)
-
-# Don't set excutable bit on stack segment
-# the same could be done by separate execstack command
-# Darwin is non-executable-stack by default
-ifneq ($(OS_VENDOR), Darwin)
-LFLAGS += -Xlinker -z -Xlinker noexecstack
-endif
-
-LIBS += -lm
-
-ifeq ($(USE_CLANG),)
- LIBS += -pthread
-endif
-
-# By default, link the *.o into the library, not the executable.
-LINK_INTO$(LINK_INTO) = LIBJVM
-
-JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
-
-#----------------------------------------------------------------------
-# jvm_db & dtrace
-include $(MAKEFILES_DIR)/dtrace.make
-
-#----------------------------------------------------------------------
-# JVM
-
-JVM = jvm
-ifeq ($(OS_VENDOR), Darwin)
- LIBJVM = lib$(JVM).$(LIBRARY_SUFFIX)
- CFLAGS += -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE
-
- LIBJVM_DEBUGINFO = lib$(JVM).$(LIBRARY_SUFFIX).dSYM
- LIBJVM_DIZ = lib$(JVM).diz
-else
- LIBJVM = lib$(JVM).so
-
- LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
- LIBJVM_DIZ = lib$(JVM).diz
-endif
-
-SPECIAL_PATHS:=adlc c1 gc opto shark libadt
-
-SOURCE_PATHS=\
- $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
- \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
-
-CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
-CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-
-ifneq ($(INCLUDE_TRACE), false)
-CORE_PATHS+=$(shell if [ -d $(HS_ALT_SRC)/share/vm/jfr ]; then \
- find $(HS_ALT_SRC)/share/vm/jfr -type d; \
- fi)
-endif
-
-COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
-COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
-
-COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
-COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
-COMPILER2_PATHS += $(GENERATED)/adfiles
-
-SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
-
-# Include dirs per type.
-Src_Dirs/CORE := $(CORE_PATHS)
-Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
-Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/ZERO := $(CORE_PATHS)
-Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
-Src_Dirs := $(Src_Dirs/$(TYPE))
-
-COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp c2_\* runtime_\*
-COMPILER1_SPECIFIC_FILES := c1_\*
-SHARK_SPECIFIC_FILES := shark
-ZERO_SPECIFIC_FILES := zero
-
-# Always exclude these.
-Src_Files_EXCLUDE += jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
-
-# Exclude per type.
-Src_Files_EXCLUDE/CORE := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/TIERED := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/ZERO := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/SHARK := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
-
-Src_Files_EXCLUDE += $(Src_Files_EXCLUDE/$(TYPE))
-
-# Special handling of arch model.
-ifeq ($(Platform_arch_model), x86_32)
-Src_Files_EXCLUDE += \*x86_64\*
-endif
-ifeq ($(Platform_arch_model), x86_64)
-Src_Files_EXCLUDE += \*x86_32\*
-endif
-
-# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
-define findsrc
- $(notdir $(shell find $(1)/. ! -name . -prune \
- -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
- -a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
-endef
-
-Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
-
-Obj_Files = $(sort $(addsuffix .o,$(basename $(Src_Files))))
-
-JVM_OBJ_FILES = $(Obj_Files)
-
-vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
-
-MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers
-
-MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext
-ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","")
-MAPFILE_EXT := $(MAPFILE_EXT_SRC)
-endif
-
-# For Darwin: add _ prefix and remove trailing ;
-mapfile_extra: $(MAPFILE_SHARE) $(MAPFILE_EXT)
- rm -f $@
-ifeq ($(OS_VENDOR), Darwin)
- cat $(MAPFILE_SHARE) $(MAPFILE_EXT) | \
- sed -e 's/#.*//g' -e 's/[ ]*//g' -e 's/;//g' | \
- awk '{ if ($$0 ~ ".") { print "\t\t_" $$0 } }' \
- > $@
-else
- cat $(MAPFILE_SHARE) $(MAPFILE_EXT) > $@
-endif
-
-mapfile : $(MAPFILE) mapfile_extra vm.def
- rm -f $@
- awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
- { system ("cat mapfile_extra vm.def"); } \
- else \
- { print $$0 } \
- }' > $@ < $(MAPFILE)
-
-ifeq ($(STATIC_BUILD),true)
-EXPORTED_SYMBOLS = libjvm.symbols
-
-libjvm.symbols : mapfile
- $(CP) mapfile libjvm.symbols
-
-else
-EXPORTED_SYMBOLS =
-endif
-
-mapfile_reorder : mapfile $(REORDERFILE)
- rm -f $@
- cat $^ > $@
-
-vm.def: $(Res_Files) $(Obj_Files)
- sh $(GAMMADIR)/make/bsd/makefiles/build_vm_def.sh *.o > $@
-
-mapfile_ext:
- rm -f $@
- touch $@
- if [ -f $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext ]; then \
- cat $(HS_ALT_MAKE)/bsd/makefiles/mapfile-ext > $@; \
- fi
-
-STATIC_CXX = false
-
-ifeq ($(LINK_INTO),AOUT)
- LIBJVM.o =
- LIBJVM_MAPFILE =
- LIBS_VM = $(LIBS)
-else
- LIBJVM.o = $(JVM_OBJ_FILES)
- LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
- LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
- LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
-
- ifeq ($(OS_VENDOR), Darwin)
- ifneq ($(STATIC_BUILD),true)
- LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/.
- LFLAGS_VM += -Xlinker -rpath -Xlinker @loader_path/..
- LFLAGS_VM += -Xlinker -install_name -Xlinker @rpath/$(@F)
- endif
- else
- LFLAGS_VM += -Wl,-z,defs
- endif
-
- # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
- # get around library dependency and compatibility issues. Must use gcc not
- # g++ to link.
- ifeq ($(STATIC_CXX), true)
- LFLAGS_VM += $(STATIC_LIBGCC)
- LIBS_VM += $(STATIC_STDCXX)
- LINK_VM = $(LINK_LIB.CC)
- else
- LINK_VM = $(LINK_LIB.CXX)
- endif
-
- LIBS_VM += $(LIBS)
-endif
-ifeq ($(JVM_VARIANT_ZERO), true)
- LIBS_VM += $(LIBFFI_LIBS)
-endif
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
- LIBS_VM += $(LIBFFI_LIBS) $(LLVM_LIBS)
- LFLAGS_VM += $(LLVM_LDFLAGS)
-endif
-
-
-# rule for building precompiled header
-$(PRECOMPILED_HEADER):
- $(QUIETLY) echo $(LOG_INFO) Generating precompiled header $@
- $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
- $(QUIETLY) rm -f $@
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
-
-# making the library:
-
-ifneq ($(JVM_BASE_ADDR),)
-# By default shared library is linked at base address == 0. Modify the
-# linker script if JVM prefers a different base location. It can also be
-# implemented with 'prelink -r'. But 'prelink' is not (yet) available on
-# our build platform (AS-2.1).
-LD_SCRIPT = libjvm.so.lds
-$(LD_SCRIPT): $(LIBJVM_MAPFILE)
- $(QUIETLY) { \
- rm -rf $@; \
- $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
- sed -e '/^======/,/^======/!d' \
- -e '/^======/d' \
- -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
- > $@; \
- }
-LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
-endif
-
-$(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
-ifeq ($(STATIC_BUILD),true)
- echo Linking static vm...;
- $(LINK_LIB.CC) $@ $(LIBJVM.o)
-else
- $(QUIETLY) { \
- echo $(LOG_INFO) Linking vm...; \
- $(LINK_LIB.CXX/PRE_HOOK) \
- $(LINK_VM) $(LD_SCRIPT_FLAG) \
- $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
- $(LINK_LIB.CXX/POST_HOOK) \
- rm -f $@.1; ln -s $@ $@.1; \
- }
-
-endif
-
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(OS_VENDOR), Darwin)
- $(DSYMUTIL) $@
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -r -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
- $(RM) -r $(LIBJVM_DEBUGINFO)
- endif
- else
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
- $(RM) $(LIBJVM_DEBUGINFO)
- endif
- endif
-endif
-
-DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR)
-DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
-DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO)
-DEST_JVM_DIZ = $(DEST_SUBDIR)/$(LIBJVM_DIZ)
-
-install_jvm: $(LIBJVM)
- @echo "Copying $(LIBJVM) to $(DEST_JVM)"
-ifeq ($(OS_VENDOR), Darwin)
- $(QUIETLY) test ! -d $(LIBJVM_DEBUGINFO) || \
- $(CP) -f -r $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
-else
- $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
- $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
-endif
- $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
- $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
-
-#----------------------------------------------------------------------
-# Other files
-
-# Signal interposition library
-include $(MAKEFILES_DIR)/jsig.make
-
-#----------------------------------------------------------------------
-
-ifeq ($(OS_VENDOR), Darwin)
-# no libjvm_db for macosx
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) dtraceCheck $(EXPORTED_SYMBOLS)
- echo "Doing vm.make build:"
-else
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(EXPORTED_SYMBOLS)
-endif
-
-install: install_jvm install_jsigs
-
-.PHONY: default build install install_jvm
diff --git a/hotspot/make/bsd/makefiles/zero.make b/hotspot/make/bsd/makefiles/zero.make
deleted file mode 100644
index 0270711f5cb..00000000000
--- a/hotspot/make/bsd/makefiles/zero.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2009 Red Hat, Inc.
-# 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.
-#
-#
-
-# Setup for Zero (non-Shark) version of VM
-
-# Select which files to use (in top.make)
-TYPE = ZERO
-
-# Install libjvm.so, etc in in server directory.
-VM_SUBDIR = server
diff --git a/hotspot/make/bsd/makefiles/zeroshark.make b/hotspot/make/bsd/makefiles/zeroshark.make
deleted file mode 100644
index 12c41981904..00000000000
--- a/hotspot/make/bsd/makefiles/zeroshark.make
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2007, 2008 Red Hat, Inc.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# 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.
-#
-#
-
-# Setup common to Zero (non-Shark) and Shark versions of VM
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-
-# Specify that the CPU is little endian, if necessary
-ifeq ($(ZERO_ENDIANNESS), little)
- CFLAGS += -DVM_LITTLE_ENDIAN
-endif
-
-# Specify that the CPU is 64 bit, if necessary
-ifeq ($(ARCH_DATA_MODEL), 64)
- CFLAGS += -D_LP64=1
-endif
-
-# Specify the path to the FFI headers
-ifdef ALT_PACKAGE_PATH
- PACKAGE_PATH = $(ALT_PACKAGE_PATH)
-else
- ifeq ($(OS_VENDOR),Apple)
- PACKAGE_PATH = /opt/local
- else
- ifeq ($(OS_VENDOR),NetBSD)
- PACKAGE_PATH = /usr/pkg
- LIBS += -Wl,-R${PACKAGE_PATH}/lib
- else
- PACKAGE_PATH = /usr/local
- endif
- endif
-endif
-
-CFLAGS += -I$(PACKAGE_PATH)/include
-LIBS += -L$(PACKAGE_PATH)/lib -lffi
-
-OPT_CFLAGS/compactingPermGenGen.o = -O1
diff --git a/hotspot/make/bsd/platform_amd64 b/hotspot/make/bsd/platform_amd64
deleted file mode 100644
index 51b2b1cd325..00000000000
--- a/hotspot/make/bsd/platform_amd64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = bsd
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = bsd_x86
-
-os_arch_model = bsd_x86_64
-
-lib_arch = amd64
-
-compiler = gcc
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64
diff --git a/hotspot/make/bsd/platform_amd64.suncc b/hotspot/make/bsd/platform_amd64.suncc
deleted file mode 100644
index 68e0cc37489..00000000000
--- a/hotspot/make/bsd/platform_amd64.suncc
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = bsd
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = bsd_x86
-
-os_arch_model = bsd_x86_64
-
-lib_arch = amd64
-
-compiler = sparcWorks
-
-gnu_dis_arch = amd64
-
-sysdefs = -D_ALLBSD_SOURCE -DSPARC_WORKS -D_GNU_SOURCE -DAMD64
diff --git a/hotspot/make/bsd/platform_i486 b/hotspot/make/bsd/platform_i486
deleted file mode 100644
index 2f77e79ff56..00000000000
--- a/hotspot/make/bsd/platform_i486
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = bsd
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = bsd_x86
-
-os_arch_model = bsd_x86_32
-
-lib_arch = i386
-
-compiler = gcc
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DIA32
diff --git a/hotspot/make/bsd/platform_i486.suncc b/hotspot/make/bsd/platform_i486.suncc
deleted file mode 100644
index 5b203cd5c5b..00000000000
--- a/hotspot/make/bsd/platform_i486.suncc
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = bsd
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = bsd_x86
-
-os_arch_model = bsd_x86_32
-
-lib_arch = i386
-
-compiler = sparcWorks
-
-gnu_dis_arch = i386
-
-sysdefs = -D_ALLBSD_SOURCE -DSPARC_WORKS -D_GNU_SOURCE -DIA32
diff --git a/hotspot/make/bsd/platform_ia64 b/hotspot/make/bsd/platform_ia64
deleted file mode 100644
index 00b9f3380b7..00000000000
--- a/hotspot/make/bsd/platform_ia64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = bsd
-
-arch = ia64
-
-os_arch = bsd_ia64
-
-lib_arch = ia64
-
-compiler = gcc
-
-gnu_dis_arch = ia64
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DIA64 -DCC_INTERP
-
-mark_style = alignment
diff --git a/hotspot/make/bsd/platform_sparc b/hotspot/make/bsd/platform_sparc
deleted file mode 100644
index 04772ad4f2a..00000000000
--- a/hotspot/make/bsd/platform_sparc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = bsd
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = bsd_sparc
-
-os_arch_model = bsd_sparc
-
-lib_arch = sparc
-
-compiler = gcc
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/make/bsd/platform_sparcv9 b/hotspot/make/bsd/platform_sparcv9
deleted file mode 100644
index 89e51c5b209..00000000000
--- a/hotspot/make/bsd/platform_sparcv9
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = bsd
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = bsd_sparc
-
-os_arch_model = bsd_sparc
-
-lib_arch = sparcv9
-
-compiler = gcc
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/make/bsd/platform_zero.in b/hotspot/make/bsd/platform_zero.in
deleted file mode 100644
index f6729c2c08c..00000000000
--- a/hotspot/make/bsd/platform_zero.in
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = bsd
-
-arch = zero
-
-arch_model = zero
-
-os_arch = bsd_zero
-
-os_arch_model = bsd_zero
-
-lib_arch = zero
-
-compiler = gcc
-
-gnu_dis_arch = zero
-
-sysdefs = -D_ALLBSD_SOURCE -D_GNU_SOURCE -DCC_INTERP -DZERO -D@ZERO_ARCHDEF@ -DZERO_LIBARCH=\"@ZERO_LIBARCH@\"
diff --git a/hotspot/make/build.sh b/hotspot/make/build.sh
deleted file mode 100644
index 27c78433046..00000000000
--- a/hotspot/make/build.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /bin/sh
-#
-# 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
-# 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 [ $# -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-}" ]; then
- echo "JAVA_HOME needs to be set to a valid JDK path"
- echo "JAVA_HOME: ${JAVA_HOME-}"
- exit 1
-fi
-
-# Just in case:
-JAVA_HOME=`( cd $JAVA_HOME; pwd )`
-
-if [ "${ALT_BOOTDIR-}" = "" -o ! -d "${ALT_BOOTDIR-}" -o ! -d ${ALT_BOOTDIR-}/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
-
-HOTSPOT_SRC=`(dirname $0)`/..
-HOTSPOT_SRC=`(cd ${HOTSPOT_SRC}; pwd)`
-
-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.'}
-
-# 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 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 "###"
-
-BuildOptions="$Quiet $NoDebugInfo $*"
-
-echo \
-${GNUMAKE} -f ${HOTSPOT_SRC}/make/Makefile $BuildOptions GAMMADIR=${HOTSPOT_SRC}
-${GNUMAKE} -f ${HOTSPOT_SRC}/make/Makefile $BuildOptions GAMMADIR=${HOTSPOT_SRC}
diff --git a/hotspot/make/cscope.make b/hotspot/make/cscope.make
deleted file mode 100644
index c38b7a5c784..00000000000
--- a/hotspot/make/cscope.make
+++ /dev/null
@@ -1,141 +0,0 @@
-#
-# Copyright (c) 2000, 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.
-#
-#
-
-# The cscope.out file is generated in the current directory. The old cscope.out
-# file is *not* removed because cscope is smart enough to only build what has
-# changed. cscope can be confused if files are renamed or removed, so it may be
-# necessary to remove cscope.out (gmake cscope.clean) if a lot of reorganization
-# has occurred.
-
-include $(GAMMADIR)/make/scm.make
-
-RM = rm -f
-HG = hg
-CS_TOP = $(GAMMADIR)
-
-CSDIRS = $(CS_TOP)/src $(CS_TOP)/make
-CSINCS = $(CSDIRS:%=-I%)
-
-CSCOPE = cscope
-CSCOPE_OUT = cscope.out
-CSCOPE_FLAGS = -b
-
-# Allow .java files to be added from the environment (CSCLASSES=yes).
-ifdef CSCLASSES
-ADDCLASSES= -o -name '*.java'
-endif
-
-# Adding CClassHeaders also pushes the file count of a full workspace up about
-# 200 files (these files also don't exist in a new workspace, and thus will
-# cause the recreation of the database as they get created, which might seem
-# a little confusing). Thus allow these files to be added from the environment
-# (CSHEADERS=yes).
-ifndef CSHEADERS
-RMCCHEADERS= -o -name CClassHeaders
-endif
-
-# Ignore build products.
-CS_PRUNE_GENERATED = -o -name '${OSNAME}_*_core' -o \
- -name '${OSNAME}_*_compiler?'
-
-# O/S-specific files for all systems are included by default. Set CS_OS to a
-# space-separated list of identifiers to include only those systems.
-ifdef CS_OS
-CS_PRUNE_OS = $(patsubst %,-o -name '*%*',\
- $(filter-out ${CS_OS},bsd linux macos solaris windows))
-endif
-
-# CPU-specific files for all processors are included by default. Set CS_CPU
-# space-separated list identifiers to include only those CPUs.
-ifdef CS_CPU
-CS_PRUNE_CPU = $(patsubst %,-o -name '*%*',\
- $(filter-out ${CS_CPU},arm ppc sparc x86 zero))
-endif
-
-# What files should we include? A simple rule might be just those files under
-# SCCS control, however this would miss files we create like the opcodes and
-# CClassHeaders. The following attempts to find everything that is *useful*.
-# (.del files are created by sccsrm, demo directories contain many .java files
-# that probably aren't useful for development, and the pkgarchive may contain
-# duplicates of files within the source hierarchy).
-
-# Directories to exclude.
-CS_PRUNE_STD = $(SCM_DIRS) \
- -o -name '.del-*' \
- -o -name '*demo' \
- -o -name pkgarchive
-
-# Placeholder for user-defined excludes.
-CS_PRUNE_EX =
-
-CS_PRUNE = $(CS_PRUNE_STD) \
- $(CS_PRUNE_OS) \
- $(CS_PRUNE_CPU) \
- $(CS_PRUNE_GENERATED) \
- $(CS_PRUNE_EX) \
- $(RMCCHEADERS)
-
-# File names to include.
-CSFILENAMES = -name '*.[ch]pp' \
- -o -name '*.[Ccshlxy]' \
- $(CS_ADD_GENERATED) \
- -o -name '*.d' \
- -o -name '*.il' \
- -o -name '*.cc' \
- -o -name '*[Mm]akefile*' \
- -o -name '*.gmk' \
- -o -name '*.make' \
- -o -name '*.ad' \
- $(ADDCLASSES)
-
-.PHONY: cscope cscope.clean cscope.scratch TAGS.clean FORCE
-.PRECIOUS: cscope.out
-
-cscope $(CSCOPE_OUT): cscope.files FORCE
- $(CSCOPE) -f $(CSCOPE_OUT) $(CSCOPE_FLAGS)
-
-cscope.clean:
- $(QUIETLY) $(RM) $(CSCOPE_OUT) cscope.files
-
-cscope.scratch: cscope.clean cscope
-
-# The raw list is reordered so cscope displays the most relevant files first.
-cscope.files:
- $(QUIETLY) \
- raw=cscope.$$$$; \
- find $(CSDIRS) -type d \( $(CS_PRUNE) \) -prune -o \
- -type f \( $(CSFILENAMES) \) -print > $$raw; \
- { \
- echo "$(CSINCS)"; \
- egrep -v "\.java|/make/" $$raw; \
- fgrep ".java" $$raw; \
- fgrep "/make/" $$raw; \
- } > $@; \
- rm -f $$raw
-
-TAGS: cscope.files FORCE
- egrep -v '^-|^$$' $< | etags --members -
-
-TAGS.clean:
- $(RM) TAGS
diff --git a/hotspot/make/defs.make b/hotspot/make/defs.make
deleted file mode 100644
index e02d660f349..00000000000
--- a/hotspot/make/defs.make
+++ /dev/null
@@ -1,362 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The common definitions for hotspot builds.
-
-# Optionally include SPEC file generated by configure.
-ifneq ($(SPEC),)
- include $(SPEC)
-endif
-
-ifeq ($(LOG_LEVEL),warn)
- LOG_INFO := > /dev/null
-else
- LOG_INFO :=
-endif
-
-# Directory paths and user name
-# Unless GAMMADIR is set on the command line, search upward from
-# the current directory for a parent directory containing "src/share/vm".
-# If that fails, look for $GAMMADIR in the environment.
-# When the tree of subdirs is built, this setting is stored in each flags.make.
-GAMMADIR := $(shell until ([ -d dev ]&&echo $${GAMMADIR:-/GAMMADIR/}) || ([ -d src/share/vm ]&&pwd); do cd ..; done)
-HS_SRC_DIR=$(GAMMADIR)/src
-HS_MAKE_DIR=$(GAMMADIR)/make
-HS_BUILD_DIR=$(GAMMADIR)/build
-
-ifeq ($(USER),)
- USER=$(USERNAME)
-endif
-
-ifeq ($(HS_ALT_MAKE),)
- ifneq ($(OPENJDK),true)
- HS_ALT_MAKE=$(GAMMADIR)/make/closed
- else
- HS_ALT_MAKE=NO_SUCH_PATH
- endif
-endif
-
-#
-# Include alternate defs.make if it exists
-#
--include $(HS_ALT_MAKE)/defs.make
-
-# Default to verbose build logs (show all compile lines):
-MAKE_VERBOSE=y
-
-# Make macros for install files or preparing targets
-CD=cd
-CP=cp
-ECHO=echo
-GREP=grep
-MKDIR=mkdir
-MV=mv
-PWD=pwd
-RM=rm -f
-SED=sed
-TAR=tar
-ZIPEXE=zip
-
-define install-file
-@$(MKDIR) -p $(@D)
-@$(RM) $@
-$(CP) $< $@
-endef
-
-# MacOS X strongly discourages 'cp -r' and provides 'cp -R' instead.
-# May need to have a MacOS X specific definition of install-dir
-# sometime in the future.
-define install-dir
-@$(MKDIR) -p $(@D)
-@$(RM) -r $@
-$(CP) -r $< $@
-endef
-
-define prep-target
-@$(MKDIR) -p $(@D)
-@$(RM) $@
-endef
-
-# Default values for JVM_VARIANT* variables if configure hasn't set
-# it already.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ZERO_BUILD), true)
- ifeq ($(SHARK_BUILD), true)
- JVM_VARIANTS:=zeroshark
- JVM_VARIANT_ZEROSHARK:=true
- else
- JVM_VARIANTS:=zero
- JVM_VARIANT_ZERO:=true
- endif
- else
- # A default is needed
- ifeq ($(BUILD_CLIENT_ONLY), true)
- JVM_VARIANTS:=client
- JVM_VARIANT_CLIENT:=true
- endif
- # Further defaults are platform and arch specific
- endif
-endif
-
-# hotspot version definitions
-include $(GAMMADIR)/make/jdk_version
-
-# JDK_PREVIOUS_VERSION is only needed to facilitate standalone builds
-ifeq ($(JDK_PREVIOUS_VERSION),)
- export JDK_PREVIOUS_VERSION=$(STANDALONE_JDK_PREVIOUS_VERSION)
-endif
-# Java versions needed
-ifeq ($(VERSION_MAJOR),)
- export VERSION_MAJOR=$(STANDALONE_JDK_MAJOR_VER)
-endif
-ifeq ($(VERSION_MINOR),)
- export VERSION_MINOR=$(STANDALONE_JDK_MINOR_VER)
-endif
-ifeq ($(VERSION_SECURITY),)
- export VERSION_SECURITY=$(STANDALONE_JDK_SECURITY_VER)
-endif
-ifeq ($(VERSION_PATCH),)
- export VERSION_PATCH=$(STANDALONE_JDK_PATCH_VER)
-endif
-ifeq ($(VERSION_BUILD),)
- export VERSION_BUILD=0
-endif
-ifeq ($(VERSION_SHORT),)
- export VERSION_SHORT=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_SECURITY)
-endif
-ifeq ($(VERSION_STRING),)
- # Note that this is an extremely rough and incorrect approximation of a correct version string.
- export VERSION_STRING=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_SECURITY)-internal
-endif
-
-ifneq ($(HOTSPOT_RELEASE_VERSION),)
- # Allow old command-line overrides
- HOTSPOT_VERSION_STRING := $(HOTSPOT_RELEASE_VERSION)
-else
- # Normally get from surrounding JDK build
- HOTSPOT_VERSION_STRING := $(VERSION_STRING)
-endif
-
-ifneq ($(HOTSPOT_BUILD_VERSION),)
- # If old command-lines variable exists, append to version string
- HOTSPOT_VERSION_STRING := $(HOTSPOT_VERSION_STRING)-$(HOTSPOT_BUILD_VERSION)
-else
- ifeq ($(SPEC),)
- # If building standalone, add -internal.
- HOTSPOT_VERSION_STRING := $(HOTSPOT_VERSION_STRING)-internal
- endif
-endif
-
-# Windows should have OS predefined
-ifeq ($(OS),)
- OS := $(shell uname -s)
- ifneq ($(findstring BSD,$(OS)),)
- OS=bsd
- endif
- ifeq ($(OS), Darwin)
- OS=bsd
- endif
- HOST := $(shell uname -n)
-endif
-
-# If not SunOS, not Linux not BSD and not AIX, assume Windows
-ifneq ($(OS), Linux)
- ifneq ($(OS), SunOS)
- ifneq ($(OS), bsd)
- ifneq ($(OS), AIX)
- OSNAME=windows
- else
- OSNAME=aix
- endif
- else
- OSNAME=bsd
- endif
- else
- OSNAME=solaris
- endif
-else
- OSNAME=linux
-endif
-
-# Determinations of default make arguments and platform specific settings
-MAKE_ARGS=
-
-# ARCH_DATA_MODEL==64 is equivalent to LP64=1
-ifeq ($(ARCH_DATA_MODEL), 64)
- ifndef LP64
- LP64 := 1
- endif
-endif
-
-# Defaults set for product build
-EXPORT_SUBDIR=
-
-# Change default /java path if requested
-ifneq ($(ALT_SLASH_JAVA),)
- SLASH_JAVA=$(ALT_SLASH_JAVA)
-endif
-
-# Default OUTPUTDIR
-OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME)
-ifneq ($(ALT_OUTPUTDIR),)
- OUTPUTDIR=$(ALT_OUTPUTDIR)
-endif
-
-# Find latest promoted JDK area
-JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(VERSION_STRING)/promoted/latest/binaries/$(PLATFORM)
-ifneq ($(ALT_JDK_IMPORT_PATH),)
- JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH)
-endif
-
-# Other parts of JDK build may require an import JDK that can be executed
-# on the build host. For cross-compile builds we also need an import JDK
-# that matches the target arch, so for that we set ALT_JDK_TARGET_IMPORT_PATH
-ifneq ($(ALT_JDK_TARGET_IMPORT_PATH),)
- JDK_IMPORT_PATH=$(ALT_JDK_TARGET_IMPORT_PATH)
-endif
-
-# Find JDK used for javac compiles
-BOOTDIR=$(SLASH_JAVA)/re/j2se/$(JDK_PREVIOUS_VERSION)/latest/binaries/$(PLATFORM)
-ifneq ($(ALT_BOOTDIR),)
- BOOTDIR=$(ALT_BOOTDIR)
-endif
-
-# Select name of the export directory and honor ALT overrides
-EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR)
-ifneq ($(ALT_EXPORT_PATH),)
- EXPORT_PATH=$(ALT_EXPORT_PATH)
-endif
-
-# Default jdk image if one is created for you with create_jdk
-JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM)
-ifneq ($(ALT_JDK_IMAGE_DIR),)
- JDK_IMAGE_DIR=$(ALT_JDK_IMAGE_DIR)
-endif
-
-# The platform dependent defs.make defines platform specific variable such
-# as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined.
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/defs.make
-
-# We are trying to put platform specific defintions
-# files to make/$(OSNAME)/makefiles dictory. However
-# some definitions are common for both linux and solaris,
-# so we put them here.
-ifneq ($(OSNAME),windows)
- ABS_OUTPUTDIR := $(shell mkdir -p $(OUTPUTDIR); $(CD) $(OUTPUTDIR); $(PWD))
- ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR); $(PWD))
- ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR); $(PWD))
- ABS_OS_MAKEFILE := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME); $(PWD))/Makefile
-
- # uname, HotSpot source directory, build directory and JDK use different names
- # for CPU architectures.
- # ARCH - uname output
- # SRCARCH - where to find HotSpot cpu and os_cpu source files
- # BUILDARCH - build directory
- # LIBARCH - directory name in JDK/JRE
-
- # Use uname output for SRCARCH, but deal with platform differences. If ARCH
- # is not explicitly listed below, it is treated as x86.
- SRCARCH ?= $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64 ppc64le aarch64 zero,$(ARCH)))
- ARCH/ = x86
- ARCH/sparc = sparc
- ARCH/sparc64= sparc
- ARCH/ia64 = ia64
- ARCH/amd64 = x86
- ARCH/x86_64 = x86
- ARCH/ppc64 = ppc
- ARCH/ppc64le= ppc
- ARCH/ppc = ppc
- ARCH/aarch64= aarch64
- ARCH/zero = zero
-
- # BUILDARCH is usually the same as SRCARCH, except for sparcv9
- BUILDARCH ?= $(SRCARCH)
- ifeq ($(BUILDARCH), x86)
- ifdef LP64
- BUILDARCH = amd64
- else
- BUILDARCH = i486
- endif
- endif
- ifeq ($(BUILDARCH), sparc)
- ifdef LP64
- BUILDARCH = sparcv9
- endif
- endif
- ifeq ($(BUILDARCH), ppc)
- ifdef LP64
- BUILDARCH = ppc64
- endif
- endif
-
- # LIBARCH is 1:1 mapping from BUILDARCH, except for ARCH=ppc64le
- ifeq ($(ARCH),ppc64le)
- LIBARCH ?= ppc64le
- else
- LIBARCH ?= $(LIBARCH/$(BUILDARCH))
- endif
-
- LIBARCH/i486 = i386
- LIBARCH/amd64 = amd64
- LIBARCH/sparc = sparc
- LIBARCH/sparcv9 = sparcv9
- LIBARCH/ia64 = ia64
- LIBARCH/ppc64 = ppc64
- LIBARCH/aarch64 = aarch64
- LIBARCH/zero = $(ZERO_LIBARCH)
-
- LP64_ARCH = sparcv9 amd64 ia64 ppc64 aarch64 zero
-endif
-
-# Required make macro settings for all platforms
-MAKE_ARGS += BOOTDIR=$(ABS_BOOTDIR)
-MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR)
-MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
-MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
-MAKE_ARGS += VERSION_STRING=$(VERSION_STRING)
-
-MAKE_ARGS += BOOT_JDK_SOURCETARGET="$(BOOT_JDK_SOURCETARGET)"
-
-# Various export sub directories
-EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include
-EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs
-EXPORT_LIB_DIR = $(EXPORT_PATH)/lib
-EXPORT_BIN_DIR = $(EXPORT_PATH)/bin
-EXPORT_LIB_ARCH_DIR = $(EXPORT_LIB_DIR)/$(LIBARCH)
-
-# non-universal macosx builds need to appear universal
-ifeq ($(OS_VENDOR), Darwin)
- ifneq ($(MACOSX_UNIVERSAL), true)
- EXPORT_LIB_ARCH_DIR = $(EXPORT_LIB_DIR)
- endif
-endif
-
-# Common export list of files
-EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h
-EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmticmlr.h
-EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h
-EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h
-EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h
-
-.PHONY: $(HS_ALT_MAKE)/defs.make
diff --git a/hotspot/make/excludeSrc.make b/hotspot/make/excludeSrc.make
deleted file mode 100644
index cab00edf842..00000000000
--- a/hotspot/make/excludeSrc.make
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-include $(GAMMADIR)/make/altsrc.make
-
-ifeq ($(INCLUDE_JVMTI), false)
- CXXFLAGS += -DINCLUDE_JVMTI=0
- CFLAGS += -DINCLUDE_JVMTI=0
-
- Src_Files_EXCLUDE += jvmtiGetLoadedClasses.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 \
- jvmtiClassFileReconstituter.cpp
-endif
-
-ifeq ($(INCLUDE_FPROF), false)
- CXXFLAGS += -DINCLUDE_FPROF=0
- CFLAGS += -DINCLUDE_FPROF=0
-
- Src_Files_EXCLUDE += fprofiler.cpp
-endif
-
-ifeq ($(INCLUDE_VM_STRUCTS), false)
- CXXFLAGS += -DINCLUDE_VM_STRUCTS=0
- CFLAGS += -DINCLUDE_VM_STRUCTS=0
-
- Src_Files_EXCLUDE += vmStructs.cpp
-endif
-
-ifeq ($(INCLUDE_JNI_CHECK), false)
- CXXFLAGS += -DINCLUDE_JNI_CHECK=0
- CFLAGS += -DINCLUDE_JNI_CHECK=0
-
- Src_Files_EXCLUDE += jniCheck.cpp
-endif
-
-ifeq ($(INCLUDE_SERVICES), false)
- CXXFLAGS += -DINCLUDE_SERVICES=0
- CFLAGS += -DINCLUDE_SERVICES=0
-
- Src_Files_EXCLUDE += heapDumper.cpp heapInspection.cpp \
- attachListener_linux.cpp attachListener.cpp
-endif
-
-ifeq ($(INCLUDE_MANAGEMENT), false)
- CXXFLAGS += -DINCLUDE_MANAGEMENT=0
- CFLAGS += -DINCLUDE_MANAGEMENT=0
-endif
-
-ifeq ($(INCLUDE_CDS), false)
- CXXFLAGS += -DINCLUDE_CDS=0
- CFLAGS += -DINCLUDE_CDS=0
-
- Src_Files_EXCLUDE += classListParser.cpp classLoaderExt.cpp \
- filemap.cpp metaspaceShared*.cpp sharedClassUtil.cpp sharedPathsMiscInfo.cpp \
- systemDictionaryShared.cpp
-endif
-
-ifeq ($(INCLUDE_ALL_GCS), false)
- CXXFLAGS += -DINCLUDE_ALL_GCS=0
- CFLAGS += -DINCLUDE_ALL_GCS=0
-
- gc_dir := $(HS_COMMON_SRC)/share/vm/gc
- gc_dir_alt := $(HS_ALT_SRC)/share/vm/gc
- gc_subdirs := cms g1 parallel
- gc_exclude := $(foreach gc,$(gc_subdirs), \
- $(notdir $(wildcard $(gc_dir)/$(gc)/*.cpp)) \
- $(notdir $(wildcard $(gc_dir_alt)/$(gc)/*.cpp)))
- Src_Files_EXCLUDE += $(gc_exclude) \
- concurrentGCThread.cpp \
- plab.cpp
-
- # src/share/vm/services
- Src_Files_EXCLUDE += \
- g1MemoryPool.cpp \
- psMemoryPool.cpp
-endif
-
-ifeq ($(INCLUDE_NMT), false)
- CXXFLAGS += -DINCLUDE_NMT=0
- CFLAGS += -DINCLUDE_NMT=0
-
- Src_Files_EXCLUDE += \
- memBaseline.cpp memReporter.cpp mallocTracker.cpp virtualMemoryTracker.cpp nmtCommon.cpp \
- memTracker.cpp nmtDCmd.cpp mallocSiteTable.cpp
-endif
-
-ifneq (,$(findstring $(Platform_arch_model), aarch64, arm_64, sparc, x86_64))
- # JVMCI is supported
-else
- INCLUDE_JVMCI := false
-endif
-
-ifeq ($(INCLUDE_JVMCI), false)
- CXXFLAGS += -DINCLUDE_JVMCI=0
- CFLAGS += -DINCLUDE_JVMCI=0
-
- jvmci_dir := $(HS_COMMON_SRC)/share/vm/jvmci
- jvmci_dir_alt := $(HS_ALT_SRC)/share/vm/jvmci
- jvmci_exclude := $(notdir $(wildcard $(jvmci_dir)/*.cpp)) \
- $(notdir $(wildcard $(jvmci_dir_alt)/*.cpp))
- Src_Files_EXCLUDE += $(jvmci_exclude) \
- jvmciCodeInstaller_aarch64.cpp jvmciCodeInstaller_ppc.cpp jvmciCodeInstaller_sparc.cpp \
- jvmciCodeInstaller_x86.cpp
-endif
-
--include $(HS_ALT_MAKE)/excludeSrc.make
-
-.PHONY: $(HS_ALT_MAKE)/excludeSrc.make
diff --git a/hotspot/makefiles/gensrc/GenerateSources.gmk b/hotspot/make/gensrc/GenerateSources.gmk
similarity index 100%
rename from hotspot/makefiles/gensrc/GenerateSources.gmk
rename to hotspot/make/gensrc/GenerateSources.gmk
diff --git a/hotspot/makefiles/gensrc/GensrcAdlc.gmk b/hotspot/make/gensrc/GensrcAdlc.gmk
similarity index 100%
rename from hotspot/makefiles/gensrc/GensrcAdlc.gmk
rename to hotspot/make/gensrc/GensrcAdlc.gmk
diff --git a/hotspot/makefiles/gensrc/GensrcDtrace.gmk b/hotspot/make/gensrc/GensrcDtrace.gmk
similarity index 100%
rename from hotspot/makefiles/gensrc/GensrcDtrace.gmk
rename to hotspot/make/gensrc/GensrcDtrace.gmk
diff --git a/hotspot/makefiles/gensrc/GensrcJvmti.gmk b/hotspot/make/gensrc/GensrcJvmti.gmk
similarity index 100%
rename from hotspot/makefiles/gensrc/GensrcJvmti.gmk
rename to hotspot/make/gensrc/GensrcJvmti.gmk
diff --git a/hotspot/make/hotspot_distro b/hotspot/make/hotspot_distro
deleted file mode 100644
index 059f4d1f547..00000000000
--- a/hotspot/make/hotspot_distro
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2006, 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.
-#
-
-#
-# This file format must remain compatible with both
-# GNU Makefile and Microsoft nmake formats.
-#
-
-# Don't put quotes (fail windows build).
-HOTSPOT_VM_DISTRO=Java HotSpot(TM)
-COMPANY_NAME=Oracle Corporation
-PRODUCT_NAME=Java(TM) Platform SE
diff --git a/hotspot/makefiles/ide/CreateVSProject.gmk b/hotspot/make/ide/CreateVSProject.gmk
similarity index 98%
rename from hotspot/makefiles/ide/CreateVSProject.gmk
rename to hotspot/make/ide/CreateVSProject.gmk
index d804dcce9a8..d6f5324adb8 100644
--- a/hotspot/makefiles/ide/CreateVSProject.gmk
+++ b/hotspot/make/ide/CreateVSProject.gmk
@@ -90,7 +90,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
$(eval $(call SetupJavaCompilation, BUILD_PROJECT_CREATOR, \
SETUP := GENERATE_OLDBYTECODE, \
ADD_JAVAC_FLAGS := -Xlint:-auxiliaryclass, \
- SRC := $(HOTSPOT_TOPDIR)/makefiles/src/classes, \
+ SRC := $(HOTSPOT_TOPDIR)/make/src/classes, \
BIN := $(TOOLS_OUTPUTDIR), \
))
diff --git a/hotspot/make/jdk_version b/hotspot/make/jdk_version
deleted file mode 100644
index 90b509ed4c2..00000000000
--- a/hotspot/make/jdk_version
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-# Master JDK version file. These values may be overridden by a control
-# workspace build. This file format must remain compatible with both
-# GNU Makefile and Microsoft nmake formats.
-#
-
-# Don't put quotes (fail windows build).
-HOTSPOT_VM_COPYRIGHT=Copyright 2015
-
-STANDALONE_JDK_MAJOR_VER=9
-STANDALONE_JDK_MINOR_VER=0
-STANDALONE_JDK_SECURITY_VER=0
-STANDALONE_JDK_PATCH_VER=0
-
-# Previous (bootdir) JDK version
-STANDALONE_JDK_PREVIOUS_VERSION=1.8.0
diff --git a/hotspot/make/jprt.gmk b/hotspot/make/jprt.gmk
deleted file mode 100644
index 41db0685c93..00000000000
--- a/hotspot/make/jprt.gmk
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# Copyright (c) 2006, 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.
-#
-#
-
-# JPRT rule to build this workspace
-
-JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
-
-ifeq ($(OSNAME),windows)
- ZIPFLAGS=-q
-else
- # store symbolic links as the link
- ZIPFLAGS=-q -y
-endif
-
-jprt_build_productEmb:
- $(MAKE) JAVASE_EMBEDDED=true MINIMIZE_RAM_USAGE=true jprt_build_product
-
-jprt_build_debugEmb:
- $(MAKE) JAVASE_EMBEDDED=true MINIMIZE_RAM_USAGE=true jprt_build_debug
-
-jprt_build_fastdebugEmb:
- $(MAKE) JAVASE_EMBEDDED=true MINIMIZE_RAM_USAGE=true jprt_build_fastdebug
-
-jprt_build_optimizedEmb:
- $(MAKE) JAVASE_EMBEDDED=true MINIMIZE_RAM_USAGE=true jprt_build_optimized
-
-jprt_build_productOpen:
- $(MAKE) OPENJDK=true jprt_build_product
-
-jprt_build_debugOpen:
- $(MAKE) OPENJDK=true jprt_build_debug
-
-jprt_build_fastdebugOpen:
- $(MAKE) OPENJDK=true jprt_build_fastdebug
-
-jprt_build_optimizedOpen:
- $(MAKE) OPENJDK=true jprt_build_optimized
-
-jprt_build_product: all_product copy_product_jdk export_product_jdk
- ( $(CD) $(JDK_IMAGE_DIR) && \
- $(ZIPEXE) $(ZIPFLAGS) -r $(JPRT_ARCHIVE_BUNDLE) . )
-
-jprt_build_fastdebug: all_fastdebug copy_fastdebug_jdk export_fastdebug_jdk
- ( $(CD) $(JDK_IMAGE_DIR)/fastdebug && \
- $(ZIPEXE) $(ZIPFLAGS) -r $(JPRT_ARCHIVE_BUNDLE) . )
-
-jprt_build_debug: all_debug copy_debug_jdk export_debug_jdk
- ( $(CD) $(JDK_IMAGE_DIR)/debug && \
- $(ZIPEXE) $(ZIPFLAGS) -r $(JPRT_ARCHIVE_BUNDLE) . )
-
-jprt_build_optimized: all_optimized copy_optimized_jdk export_optimized_jdk
- ( $(CD) $(JDK_IMAGE_DIR)/optimized && \
- $(ZIPEXE) $(ZIPFLAGS) -r $(JPRT_ARCHIVE_BUNDLE) . )
-
-.PHONY: jprt_build_product jprt_build_fastdebug jprt_build_debug jprt_build_optimized
-
diff --git a/hotspot/makefiles/lib/CompileDtracePostJvm.gmk b/hotspot/make/lib/CompileDtracePostJvm.gmk
similarity index 98%
rename from hotspot/makefiles/lib/CompileDtracePostJvm.gmk
rename to hotspot/make/lib/CompileDtracePostJvm.gmk
index 127460a562e..50a7f10d67d 100644
--- a/hotspot/makefiles/lib/CompileDtracePostJvm.gmk
+++ b/hotspot/make/lib/CompileDtracePostJvm.gmk
@@ -186,7 +186,7 @@ ifeq ($(call check-jvm-feature, dtrace), true)
CFLAGS := -m64 -G -mt -KPIC, \
LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
LIBS := $(LIBDL) -lc -lthread -ldoor, \
- MAPFILE := $(HOTSPOT_TOPDIR)/makefiles/mapfiles/libjvm_dtrace/mapfile-vers, \
+ MAPFILE := $(HOTSPOT_TOPDIR)/make/mapfiles/libjvm_dtrace/mapfile-vers, \
OBJECT_DIR := $(LIBJVM_DTRACE_OUTPUTDIR)/objs, \
STRIP_SYMBOLS := true, \
))
@@ -204,7 +204,7 @@ ifeq ($(call check-jvm-feature, dtrace), true)
-m64 -G -mt -KPIC, \
LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
LIBS := -lc, \
- MAPFILE := $(HOTSPOT_TOPDIR)/makefiles/mapfiles/libjvm_db/mapfile-vers, \
+ MAPFILE := $(HOTSPOT_TOPDIR)/make/mapfiles/libjvm_db/mapfile-vers, \
OBJECT_DIR := $(LIBJVM_DB_OUTPUTDIR)/objs, \
STRIP_SYMBOLS := true, \
))
diff --git a/hotspot/makefiles/lib/CompileDtracePreJvm.gmk b/hotspot/make/lib/CompileDtracePreJvm.gmk
similarity index 100%
rename from hotspot/makefiles/lib/CompileDtracePreJvm.gmk
rename to hotspot/make/lib/CompileDtracePreJvm.gmk
diff --git a/hotspot/make/lib/CompileGtest.gmk b/hotspot/make/lib/CompileGtest.gmk
new file mode 100644
index 00000000000..9cf1d891255
--- /dev/null
+++ b/hotspot/make/lib/CompileGtest.gmk
@@ -0,0 +1,116 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+GTEST_TEST_SRC := $(HOTSPOT_TOPDIR)/test/native
+GTEST_FRAMEWORK_SRC := $(SRC_ROOT)/test/fmw/gtest
+
+# On Windows, there are no internal debug symbols so must set copying to true
+# to get any at all.
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ GTEST_COPY_DEBUG_SYMBOLS := true
+else
+ GTEST_COPY_DEBUG_SYMBOLS := false
+endif
+
+################################################################################
+
+GTEST_TEST_SRC_FILES := $(shell $(FIND) $(HOTSPOT_TOPDIR)/test/native -name \
+ "test*.cpp" -type f)
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ GTEST_JVM_MAPFILE := $(JVM_MAPFILE)
+else
+ GTEST_JVM_MAPFILE := $(JVM_OUTPUTDIR)/gtest/mapfile
+
+ $(JVM_OUTPUTDIR)/gtest/symbols: $(JVM_OUTPUTDIR)/symbols
+ $(call MakeDir, $(@D))
+ ( $(CAT) $< ; echo "runUnitTests" ) > $@
+
+ $(GTEST_JVM_MAPFILE): $(JVM_OUTPUTDIR)/gtest/symbols
+ $(call create-mapfile)
+endif
+
+# Disabling switch warning for clang because of test source.
+
+$(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
+ TOOLCHAIN := $(JVM_TOOLCHAIN), \
+ LIBRARY := jvm, \
+ OUTPUT_DIR := $(JVM_OUTPUTDIR)/gtest, \
+ EXTRA_FILES := $(GTEST_TEST_SRC_FILES) \
+ $(GTEST_FRAMEWORK_SRC)/src/gtest-all.cc \
+ $(GTEST_TEST_SRC)/gtestMain.cpp, \
+ OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/objs, \
+ EXTRA_OBJECT_FILES := $(filter-out %/operator_new$(OBJ_SUFFIX), \
+ $(BUILD_LIBJVM_ALL_OBJS)), \
+ CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
+ -I$(GTEST_FRAMEWORK_SRC)/include \
+ -I$(GTEST_TEST_SRC), \
+ CFLAGS_windows := /EHsc, \
+ CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4, \
+ CFLAGS_macosx := -DGTEST_OS_MAC=1, \
+ CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ DISABLED_WARNINGS_gcc := undef, \
+ DISABLED_WARNINGS_clang := undef switch format-nonliteral \
+ tautological-undefined-compare, \
+ DISABLED_WARNINGS_solstudio := identexpected, \
+ LDFLAGS := $(JVM_LDFLAGS), \
+ LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LIBS := $(JVM_LIBS), \
+ OPTIMIZATION := $(JVM_OPTIMIZATION), \
+ MAPFILE := $(GTEST_JVM_MAPFILE), \
+ USE_MAPFILE_FOR_SYMBOLS := true, \
+ COPY_DEBUG_SYMBOLS := $(GTEST_COPY_DEBUG_SYMBOLS), \
+ ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \
+))
+
+TARGETS += $(BUILD_GTEST_LIBJVM)
+
+################################################################################
+
+$(eval $(call SetupNativeCompilation, BUILD_GTEST_LAUNCHER, \
+ TOOLCHAIN := $(JVM_TOOLCHAIN), \
+ PROGRAM := gtestLauncher, \
+ OUTPUT_DIR := $(JVM_OUTPUTDIR)/gtest, \
+ EXTRA_FILES := $(GTEST_TEST_SRC)/gtestLauncher.cpp, \
+ OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/launcher-objs, \
+ CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
+ -I$(GTEST_FRAMEWORK_SRC)/include, \
+ CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ LDFLAGS := $(LDFLAGS_TESTEXE), \
+ LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call SET_SHARED_LIBRARY_ORIGIN), \
+ LDFLAGS_solaris := -library=stlport4, \
+ LIBS_unix := -ljvm, \
+ LIBS_windows := $(JVM_OUTPUTDIR)/gtest/objs/jvm.lib, \
+ COPY_DEBUG_SYMBOLS := $(GTEST_COPY_DEBUG_SYMBOLS), \
+ ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \
+))
+
+$(BUILD_GTEST_LAUNCHER): $(BUILD_GTEST_LIBJVM)
+
+TARGETS += $(BUILD_GTEST_LAUNCHER)
+
+################################################################################
diff --git a/hotspot/makefiles/lib/CompileJvm.gmk b/hotspot/make/lib/CompileJvm.gmk
similarity index 100%
rename from hotspot/makefiles/lib/CompileJvm.gmk
rename to hotspot/make/lib/CompileJvm.gmk
diff --git a/hotspot/makefiles/lib/CompileLibjsig.gmk b/hotspot/make/lib/CompileLibjsig.gmk
similarity index 97%
rename from hotspot/makefiles/lib/CompileLibjsig.gmk
rename to hotspot/make/lib/CompileLibjsig.gmk
index ba9791cdef8..1c9a10fbf5c 100644
--- a/hotspot/makefiles/lib/CompileLibjsig.gmk
+++ b/hotspot/make/lib/CompileLibjsig.gmk
@@ -79,7 +79,7 @@ ifneq ($(OPENJDK_TARGET_OS), windows)
endif
LIBJSIG_SRC_FILE := $(HOTSPOT_TOPDIR)/src/os/$(HOTSPOT_TARGET_OS)/vm/jsig.c
- LIBJSIG_MAPFILE := $(wildcard $(HOTSPOT_TOPDIR)/makefiles/mapfiles/libjsig/mapfile-vers-$(OPENJDK_TARGET_OS))
+ LIBJSIG_MAPFILE := $(wildcard $(HOTSPOT_TOPDIR)/make/mapfiles/libjsig/mapfile-vers-$(OPENJDK_TARGET_OS))
LIBJSIG_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/libjsig
LIBJSIG_LDFLAGS += $(SHARED_LIBRARY_FLAGS)
diff --git a/hotspot/makefiles/lib/CompileLibraries.gmk b/hotspot/make/lib/CompileLibraries.gmk
similarity index 95%
rename from hotspot/makefiles/lib/CompileLibraries.gmk
rename to hotspot/make/lib/CompileLibraries.gmk
index 7a7a1651194..d7e39e7f7b0 100644
--- a/hotspot/makefiles/lib/CompileLibraries.gmk
+++ b/hotspot/make/lib/CompileLibraries.gmk
@@ -37,6 +37,10 @@ include lib/CompileDtracePreJvm.gmk
include lib/CompileJvm.gmk
include lib/CompileDtracePostJvm.gmk
+ifeq ($(BUILD_GTEST), true)
+ include lib/CompileGtest.gmk
+endif
+
all: $(TARGETS)
.PHONY: all
diff --git a/hotspot/makefiles/lib/JvmFeatures.gmk b/hotspot/make/lib/JvmFeatures.gmk
similarity index 100%
rename from hotspot/makefiles/lib/JvmFeatures.gmk
rename to hotspot/make/lib/JvmFeatures.gmk
diff --git a/hotspot/makefiles/lib/JvmMapfile.gmk b/hotspot/make/lib/JvmMapfile.gmk
similarity index 85%
rename from hotspot/makefiles/lib/JvmMapfile.gmk
rename to hotspot/make/lib/JvmMapfile.gmk
index 9d7655b26ee..9f9c928d8f5 100644
--- a/hotspot/makefiles/lib/JvmMapfile.gmk
+++ b/hotspot/make/lib/JvmMapfile.gmk
@@ -31,20 +31,20 @@ $(eval $(call IncludeCustomExtension, hotspot, lib/JvmMapfile.gmk))
ifneq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), windows-x86_64)
# On Windows x86_64, we should not have any symbols at all, since that
# results in duplicate warnings from the linker (JDK-8043491).
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-shared
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-shared
endif
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-unix
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-unix
endif
-ifneq ($(wildcard $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-$(OPENJDK_TARGET_OS)), )
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-$(OPENJDK_TARGET_OS)
+ifneq ($(wildcard $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)), )
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)
endif
ifneq ($(findstring debug, $(DEBUG_LEVEL)), )
- ifneq ($(wildcard $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-$(OPENJDK_TARGET_OS)-debug), )
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-$(OPENJDK_TARGET_OS)-debug
+ ifneq ($(wildcard $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)-debug), )
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)-debug
endif
endif
@@ -53,9 +53,9 @@ ifeq ($(OPENJDK_TARGET_OS), solaris)
# Additional mapfiles that are only used when dtrace is enabled
ifeq ($(call check-jvm-feature, compiler2), true)
# This also covers the case of compiler1+compiler2.
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-solaris-dtrace-compiler2
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-solaris-dtrace-compiler2
else ifeq ($(call check-jvm-feature, compiler1), true)
- SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-solaris-dtrace-compiler1
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-solaris-dtrace-compiler1
endif
endif
endif
@@ -153,20 +153,33 @@ $(JVM_OUTPUTDIR)/symbols: $(SYMBOLS_SRC)
################################################################################
# Finally convert the symbol list into a platform-specific mapfile
-$(JVM_MAPFILE): $(JVM_OUTPUTDIR)/symbols
- $(call LogInfo, Creating mapfile)
- $(RM) $@
- ifeq ($(OPENJDK_TARGET_OS), macosx)
- # On macosx, we need to add a leading underscore
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # On macosx, we need to add a leading underscore
+ define create-mapfile-work
$(AWK) '{ if ($$0 ~ ".") { print " _" $$0 } }' < $^ > $@.tmp
- else ifeq ($(OPENJDK_TARGET_OS), windows)
- # On windows, add an 'EXPORTS' header
+ endef
+else ifeq ($(OPENJDK_TARGET_OS), windows)
+ # On windows, add an 'EXPORTS' header
+ define create-mapfile-work
$(ECHO) "EXPORTS" > $@.tmp
$(AWK) '{ if ($$0 ~ ".") { print " " $$0 } }' < $^ >> $@.tmp
- else
- # Assume standard linker script
+ endef
+else
+ # Assume standard linker script
+ define create-mapfile-work
$(PRINTF) "SUNWprivate_1.1 { \n global: \n" > $@.tmp
$(AWK) '{ if ($$0 ~ ".") { print " " $$0 ";" } }' < $^ >> $@.tmp
$(PRINTF) " local: \n *; \n }; \n" >> $@.tmp
- endif
+ endef
+endif
+
+define create-mapfile
+ $(call LogInfo, Creating mapfile)
+ $(call MakeDir, $(@D))
+ $(call create-mapfile-work)
+ $(RM) $@
$(MV) $@.tmp $@
+endef
+
+$(JVM_MAPFILE): $(JVM_OUTPUTDIR)/symbols
+ $(call create-mapfile)
diff --git a/hotspot/makefiles/lib/JvmOverrideFiles.gmk b/hotspot/make/lib/JvmOverrideFiles.gmk
similarity index 100%
rename from hotspot/makefiles/lib/JvmOverrideFiles.gmk
rename to hotspot/make/lib/JvmOverrideFiles.gmk
diff --git a/hotspot/make/linux/Makefile b/hotspot/make/linux/Makefile
deleted file mode 100644
index dba28625eec..00000000000
--- a/hotspot/make/linux/Makefile
+++ /dev/null
@@ -1,385 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile creates a build tree and lights off a build.
-# You can go back into the build tree and perform rebuilds or
-# incremental builds as desired. Be sure to reestablish
-# environment variable settings for LD_LIBRARY_PATH and JAVA_HOME.
-
-# The make process now relies on java and javac. These can be
-# specified either implicitly on the PATH, by setting the
-# (JDK-inherited) ALT_BOOTDIR environment variable to full path to a
-# JDK in which bin/java and bin/javac are present and working (e.g.,
-# /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited)
-# default BOOTDIR path value. Note that one of ALT_BOOTDIR
-# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
-# from the PATH.
-#
-# One can set ALT_BOOTDIR or BOOTDIR to point to a jdk that runs on
-# an architecture that differs from the target architecture, as long
-# as the bootstrap jdk runs under the same flavor of OS as the target
-# (i.e., if the target is linux, point to a jdk that runs on a linux
-# box). In order to use such a bootstrap jdk, set the make variable
-# REMOTE to the desired remote command mechanism, e.g.,
-#
-# make REMOTE="rsh -l me myotherlinuxbox"
-
-ifeq ($(GAMMADIR),)
-include ../../make/defs.make
-else
-include $(GAMMADIR)/make/defs.make
-endif
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
-
-ifndef CC_INTERP
- ifndef FORCE_TIERED
- FORCE_TIERED=1
- endif
-endif
-
-ifdef LP64
- ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- _JUNK_ := $(shell echo >&2 \
- $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!")
- @exit 1
- endif
-endif
-
-# we need to set up LP64 correctly to satisfy sanity checks in adlc
-ifneq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- MFLAGS += " LP64=1 "
-endif
-
-# pass USE_SUNCC further, through MFLAGS
-ifdef USE_SUNCC
- MFLAGS += " USE_SUNCC=1 "
-endif
-
-# The following renders pathnames in generated Makefiles valid on
-# machines other than the machine containing the build tree.
-#
-# For example, let's say my build tree lives on /files12 on
-# exact.east.sun.com. This logic will cause GAMMADIR to begin with
-# /net/exact/files12/...
-#
-# We only do this on SunOS variants, for a couple of reasons:
-# * It is extremely rare that source trees exist on other systems
-# * It has been claimed that the Linux automounter is flakey, so
-# changing GAMMADIR in a way that exercises the automounter could
-# prove to be a source of unreliability in the build process.
-# Obviously, this Makefile is only relevant on SunOS boxes to begin
-# with, but the SunOS conditionalization will make it easier to
-# combine Makefiles in the future (assuming we ever do that).
-
-ifeq ($(OSNAME),solaris)
-
- # prepend current directory to relative pathnames.
- NEW_GAMMADIR := \
- $(shell echo $(GAMMADIR) | \
- sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \
- )
- unexport NEW_GAMMADIR
-
- # If NEW_GAMMADIR doesn't already start with "/net/":
- ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),)
- # prepend /net/$(HOST)
- # remove /net/$(HOST) if name already began with /home/
- # remove /net/$(HOST) if name already began with /java/
- # remove /net/$(HOST) if name already began with /lab/
- NEW_GAMMADIR := \
- $(shell echo $(NEW_GAMMADIR) | \
- sed -e "s=^\(.*\)=/net/$(HOST)\1=" \
- -e "s=^/net/$(HOST)/home/=/home/=" \
- -e "s=^/net/$(HOST)/java/=/java/=" \
- -e "s=^/net/$(HOST)/lab/=/lab/=" \
- )
- # Don't use the new value for GAMMADIR unless a file with the new
- # name actually exists.
- ifneq ($(wildcard $(NEW_GAMMADIR)),)
- GAMMADIR := $(NEW_GAMMADIR)
- endif
- endif
-
-endif
-
-# BUILDARCH is set to "zero" for Zero builds. VARIANTARCH
-# is used to give the build directories meaningful names.
-VARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH))
-
-# There is a (semi-) regular correspondence between make targets and actions:
-#
-# Target Tree Type Build Dir
-#
-# debug compiler2 __compiler2/debug
-# fastdebug compiler2 __compiler2/fastdebug
-# optimized compiler2 __compiler2/optimized
-# product compiler2 __compiler2/product
-#
-# debug1 compiler1 __compiler1/debug
-# fastdebug1 compiler1 __compiler1/fastdebug
-# optimized1 compiler1 __compiler1/optimized
-# product1 compiler1 __compiler1/product
-#
-# debugcore core __core/debug
-# fastdebugcore core __core/fastdebug
-# optimizedcore core __core/optimized
-# productcore core __core/product
-#
-# debugzero zero __zero/debug
-# fastdebugzero zero __zero/fastdebug
-# optimizedzero zero __zero/optimized
-# productzero zero __zero/product
-#
-# debugshark shark __shark/debug
-# fastdebugshark shark __shark/fastdebug
-# optimizedshark shark __shark/optimized
-# productshark shark __shark/product
-#
-# fastdebugminimal1 minimal1 __minimal1/fastdebug
-# productminimal1 minimal1 __minimal1/product
-#
-# What you get with each target:
-#
-# debug* - debug compile with asserts enabled
-# fastdebug* - optimized compile, but with asserts enabled
-# optimized* - optimized compile, no asserts
-# product* - the shippable thing: optimized compile, no asserts, -DPRODUCT
-
-# This target list needs to be coordinated with the usage message
-# in the build.sh script:
-TARGETS = debug fastdebug optimized product
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- SUBDIR_DOCS = $(OSNAME)_$(VARIANTARCH)_docs
-else
- SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs
-endif
-SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
-SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
-SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
-SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
-SUBDIRS_ZERO = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
-SUBDIRS_SHARK = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS))
-SUBDIRS_MINIMAL1 = $(addprefix $(OSNAME)_$(BUILDARCH)_minimal1/,$(TARGETS))
-
-TARGETS_C2 = $(TARGETS)
-TARGETS_C1 = $(addsuffix 1,$(TARGETS))
-TARGETS_TIERED = $(addsuffix tiered,$(TARGETS))
-TARGETS_CORE = $(addsuffix core,$(TARGETS))
-TARGETS_ZERO = $(addsuffix zero,$(TARGETS))
-TARGETS_SHARK = $(addsuffix shark,$(TARGETS))
-TARGETS_MINIMAL1 = $(addsuffix minimal1,$(TARGETS))
-
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-BUILDTREE_VARS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
-
-BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
-
-#-------------------------------------------------------------------------------
-
-# Could make everything by default, but that would take a while.
-all:
- @echo "Try '$(MAKE) ...' where is one or more of"
- @echo " $(TARGETS_C2)"
- @echo " $(TARGETS_C1)"
- @echo " $(TARGETS_CORE)"
- @echo " $(TARGETS_ZERO)"
- @echo " $(TARGETS_SHARK)"
- @echo " $(TARGETS_MINIMAL1)"
-
-checks: check_os_version check_j2se_version
-
-# We do not want people accidentally building on old systems (e.g. Linux 2.2.x,
-# Solaris 2.5.1, 2.6).
-# Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok.
-
-SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%
-OS_VERSION := $(shell uname -r)
-EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
-
-check_os_version:
-ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
- $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
-endif
-
-# jvmti.make requires XSLT (J2SE 1.4.x or newer):
-XSLT_CHECK = $(REMOTE) $(RUN.JAVAP) javax.xml.transform.TransformerFactory
-# If not found then fail fast.
-check_j2se_version:
- $(QUIETLY) if ! $(XSLT_CHECK) > /dev/null 2>&1; then \
- $(REMOTE) $(RUN.JAVA) -version; \
- echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \
- "to bootstrap this build" 1>&2; \
- exit 1; \
- fi
-
-$(SUBDIRS_TIERED): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered
-
-$(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifeq ($(FORCE_TIERED),1)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
-else
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler2
-endif
-
-$(SUBDIRS_C1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler1
-
-$(SUBDIRS_CORE): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=core
-
-$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH)
-
-$(SUBDIRS_MINIMAL1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=minimal1
-
-
-platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
- $(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
-
-# Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
-
-$(TARGETS_C2): $(SUBDIRS_C2)
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_TIERED): $(SUBDIRS_TIERED)
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_C1): $(SUBDIRS_C1)
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_CORE): $(SUBDIRS_CORE)
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_ZERO): $(SUBDIRS_ZERO)
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_SHARK): $(SUBDIRS_SHARK)
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_MINIMAL1): $(SUBDIRS_MINIMAL1)
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_minimal1/$(patsubst %minimal1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-# Just build the tree, and nothing else:
-tree: $(SUBDIRS_C2)
-tree1: $(SUBDIRS_C1)
-treecore: $(SUBDIRS_CORE)
-treezero: $(SUBDIRS_ZERO)
-treeshark: $(SUBDIRS_SHARK)
-treeminimal1: $(SUBDIRS_MINIMAL1)
-
-# Doc target. This is the same for all build options.
-# Hence create a docs directory beside ...$(ARCH)_[...]
-# We specify 'BUILD_FLAVOR=product' so that the proper
-# ENABLE_FULL_DEBUG_SYMBOLS value is used.
-docs: checks
- $(QUIETLY) mkdir -p $(SUBDIR_DOCS)
- $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
-
-# Synonyms for win32-like targets.
-compiler2: debug product
-
-compiler1: debug1 product1
-
-core: debugcore productcore
-
-zero: debugzero productzero
-
-shark: debugshark productshark
-
-warn_jvmg_deprecated:
- echo "Warning: The jvmg target has been replaced with debug"
- echo "Warning: Please update your usage"
-
-jvmg: warn_jvmg_deprecated debug
-
-jvmg1: warn_jvmg_deprecated debug1
-
-jvmgcore: warn_jvmg_deprecated debugcore
-
-jvmgzero: warn_jvmg_deprecated debugzero
-
-jvmgshark: warn_jvmg_deprecated debugshark
-
-clean_docs:
- rm -rf $(SUBDIR_DOCS)
-
-clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark clean_minimal1:
- rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
-
-clean: clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_minimal1 clean_docs
-
-include $(GAMMADIR)/make/cscope.make
-
-#
-# Include alternate Makefile if it exists.
-#
--include $(HS_ALT_MAKE)/$(OSNAME)/Makefile.make
-
-#-------------------------------------------------------------------------------
-
-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK) $(TARGETS_MINIMAL1)
-.PHONY: tree tree1 treecore treezero treeshark
-.PHONY: all compiler1 compiler2 core zero shark
-.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs
-.PHONY: checks check_os_version check_j2se_version
-.PHONY: $(HS_ALT_MAKE)/$(OSNAME)/Makefile.make
-
-.NOTPARALLEL:
diff --git a/hotspot/make/linux/README b/hotspot/make/linux/README
deleted file mode 100644
index d3efaf8b610..00000000000
--- a/hotspot/make/linux/README
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.
-
-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.
-
-________________________________________________________________________
-
-Please refer to the comments in the Makefile in this directory
-for instructions how to build the Solaris versions.
-
diff --git a/hotspot/make/linux/adlc_updater b/hotspot/make/linux/adlc_updater
deleted file mode 100644
index 99e04e333f2..00000000000
--- a/hotspot/make/linux/adlc_updater
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /bin/sh
-#
-# This file is used by adlc.make to selectively update generated
-# adlc files. Because source and target diretories are relative
-# paths, this file is copied to the target build directory before
-# use.
-#
-# adlc-updater
-#
-fix_lines() {
- # repair bare #line directives in $1 to refer to $2
- # and add an override of __FILE__ with just the basename on the
- # first line of the file.
- awk < $1 > $1+ -v F2=$2 '
- BEGIN { print "#line 1 \"" F2 "\""; }
- /^#line 999999$/ {print "#line " (NR+1) " \"" F2 "\""; next}
- {print}
- '
- mv $1+ $1
-}
-fix_lines $2/$1 $1
-[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
-( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
diff --git a/hotspot/make/linux/makefiles/aarch64.make b/hotspot/make/linux/makefiles/aarch64.make
deleted file mode 100644
index 9dedb3e29c1..00000000000
--- a/hotspot/make/linux/makefiles/aarch64.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-CFLAGS += -D_LP64=1
diff --git a/hotspot/make/linux/makefiles/adjust-mflags.sh b/hotspot/make/linux/makefiles/adjust-mflags.sh
deleted file mode 100644
index 97bc02db7f1..00000000000
--- a/hotspot/make/linux/makefiles/adjust-mflags.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#! /bin/sh
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# This script is used only from top.make.
-# The macro $(MFLAGS-adjusted) calls this script to
-# adjust the "-j" arguments to take into account
-# the HOTSPOT_BUILD_JOBS variable. The default
-# handling of the "-j" argument by gnumake does
-# not meet our needs, so we must adjust it ourselves.
-
-# This argument adjustment applies to two recursive
-# calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make.
-# One invokes adlc.make, and the other invokes vm.make.
-# The adjustment propagates the desired concurrency
-# level down to the sub-make (of the adlc or vm).
-# The default behavior of gnumake is to run all
-# sub-makes without concurrency ("-j1").
-
-# Also, we use a make variable rather than an explicit
-# "-j" argument to control this setting, so that
-# the concurrency setting (which must be tuned separately
-# for each MP system) can be set via an environment variable.
-# The recommended setting is 1.5x to 2x the number of available
-# CPUs on the MP system, which is large enough to keep the CPUs
-# busy (even though some jobs may be I/O bound) but not too large,
-# we may presume, to overflow the system's swap space.
-
-set -eu
-
-default_build_jobs=4
-
-case $# in
-[12]) true;;
-*) >&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;;
-esac
-
-MFLAGS=$1
-HOTSPOT_BUILD_JOBS=${2-}
-
-# Normalize any -jN argument to the form " -j${HBJ}"
-MFLAGS=`
- echo "$MFLAGS" \
- | sed '
- s/^-/ -/
- s/ -\([^ I][^ I]*\)j/ -\1 -j/
- s/ -j[0-9][0-9]*/ -j/
- s/ -j\([^ ]\)/ -j -\1/
- s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
- ' `
-
-case ${HOTSPOT_BUILD_JOBS} in \
-
-'') case ${MFLAGS} in
- *\ -j*)
- >&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile."
- >&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment."
- esac;;
-
-?*) case ${MFLAGS} in
- *\ -j*) true;;
- *) MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";;
- esac;;
-esac
-
-echo "${MFLAGS}"
diff --git a/hotspot/make/linux/makefiles/adlc.make b/hotspot/make/linux/makefiles/adlc.make
deleted file mode 100644
index 287923151d2..00000000000
--- a/hotspot/make/linux/makefiles/adlc.make
+++ /dev/null
@@ -1,233 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (adlc.make) is included from the adlc.make in the
-# build directories.
-# It knows how to compile, link, and run the adlc.
-
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
-
-# #########################################################################
-
-# OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make:
-GENERATED = ../generated
-OUTDIR = $(GENERATED)/adfiles
-
-ARCH = $(Platform_arch)
-OS = $(Platform_os_family)
-
-SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad
-
-ifeq ("${Platform_arch_model}", "${Platform_arch}")
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad)
-else
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad)
-endif
-
-EXEC = $(OUTDIR)/adlc
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor
-Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
-
-# set flags for adlc compilation
-CXXFLAGS = $(SYSDEFS) $(INCLUDES)
-
-# Force assertions on.
-CXXFLAGS += -DASSERT
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-# Compiler warnings are treated as errors
-CFLAGS_WARN = $(WARNINGS_ARE_ERRORS)
-CFLAGS += $(CFLAGS_WARN)
-
-OBJECTNAMES = \
- adlparse.o \
- archDesc.o \
- arena.o \
- dfa.o \
- dict2.o \
- filebuff.o \
- forms.o \
- formsopt.o \
- formssel.o \
- main.o \
- adlc-opcodes.o \
- output_c.o \
- output_h.o \
-
-OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%)
-
-GENERATEDNAMES = \
- ad_$(Platform_arch_model).cpp \
- ad_$(Platform_arch_model).hpp \
- ad_$(Platform_arch_model)_clone.cpp \
- ad_$(Platform_arch_model)_expand.cpp \
- ad_$(Platform_arch_model)_format.cpp \
- ad_$(Platform_arch_model)_gen.cpp \
- ad_$(Platform_arch_model)_misc.cpp \
- ad_$(Platform_arch_model)_peephole.cpp \
- ad_$(Platform_arch_model)_pipeline.cpp \
- adGlobals_$(Platform_arch_model).hpp \
- dfa_$(Platform_arch_model).cpp \
-
-GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%)
-
-# #########################################################################
-
-all: $(EXEC)
-
-$(EXEC) : $(OBJECTS)
- @echo $(LOG_INFO) Making adlc
- $(QUIETLY) $(filter-out $(ARCHFLAG),$(HOST.LINK_NOPROF.CXX)) -o $(EXEC) $(OBJECTS)
-
-# Random dependencies:
-$(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
-
-# The source files refer to ostream.h, which sparcworks calls iostream.h
-$(OBJECTS): ostream.h
-
-ostream.h :
- @echo >$@ '#include '
-
-dump:
- : OUTDIR=$(OUTDIR)
- : OBJECTS=$(OBJECTS)
- : products = $(GENERATEDFILES)
-
-all: $(GENERATEDFILES)
-
-$(GENERATEDFILES): refresh_adfiles
-
-# Get a unique temporary directory name, so multiple makes can run in parallel.
-# Note that product files are updated via "mv", which is atomic.
-TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
-
-ifneq ($(DEBUG_BINARIES), true)
- # Debuggable by default (unless already done by DEBUG_BINARIES)
- CFLAGS += -g
-endif
-
-# Pass -D flags into ADLC.
-ADLCFLAGS += $(SYSDEFS)
-
-# Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO.
-ADLCFLAGS += -q -T
-
-# Normally, debugging is done directly on the ad_*.cpp files.
-# But -g will put #line directives in those files pointing back to .ad.
-# Some builds of gcc 3.2 have a bug that gets tickled by the extra #line directives
-# so skip it for 3.2 and ealier.
-ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
-ADLCFLAGS += -g
-endif
-
-ifdef LP64
-ADLCFLAGS += -D_LP64
-else
-ADLCFLAGS += -U_LP64
-endif
-
-#
-# adlc_updater is a simple sh script, under sccs control. It is
-# used to selectively update generated adlc files. This should
-# provide a nice compilation speed improvement.
-#
-ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
-ADLC_UPDATER = adlc_updater
-$(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER)
- $(QUIETLY) cp $< $@; chmod +x $@
-
-# This action refreshes all generated adlc files simultaneously.
-# The way it works is this:
-# 1) create a scratch directory to work in.
-# 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
-# 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
-# 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
-# 5) If we actually updated any files, echo a notice.
-#
-refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER)
- @rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
- $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
- -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \
- || { rm -rf $(TEMPDIR); exit 1; }
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \
- || echo $(LOG_INFO) "Rescanned $(SOURCE.AD) but encountered no changes."
- $(QUIETLY) rm -rf $(TEMPDIR)
-
-
-# #########################################################################
-
-$(SOURCE.AD): $(SOURCES.AD)
- $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD)
-
-#PROCESS_AD_FILES = cat
-# Pass through #line directives, in case user enables -g option above:
-PROCESS_AD_FILES = awk '{ \
- if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \
- if (need_lineno && $$0 !~ /\/\//) \
- { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \
- print }'
-
-$(OUTDIR)/%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(filter-out $(ARCHFLAG),$(HOST.COMPILE.CXX)) -o $@ $< $(COMPILE_DONE)
-
-# Some object files are given a prefix, to disambiguate
-# them from objects of the same name built for the VM.
-$(OUTDIR)/adlc-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(filter-out $(ARCHFLAG),$(HOST.COMPILE.CXX)) -o $@ $< $(COMPILE_DONE)
-
-# #########################################################################
-
-clean :
- rm $(OBJECTS)
-
-cleanall :
- rm $(OBJECTS) $(EXEC)
-
-# #########################################################################
-
-.PHONY: all dump refresh_adfiles clean cleanall
diff --git a/hotspot/make/linux/makefiles/amd64.make b/hotspot/make/linux/makefiles/amd64.make
deleted file mode 100644
index c98a5827820..00000000000
--- a/hotspot/make/linux/makefiles/amd64.make
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-CFLAGS += -D_LP64=1
-
-OPT_CFLAGS/compactingPermGenGen.o = -O1
-
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/sharedRuntimeTrig.o += -g
- OPT_CFLAGS/sharedRuntimeTrans.o += -g
- OPT_CFLAGS/compactingPermGenGen.o += -g
-endif
diff --git a/hotspot/make/linux/makefiles/buildtree.make b/hotspot/make/linux/makefiles/buildtree.make
deleted file mode 100644
index b5eb37e01f7..00000000000
--- a/hotspot/make/linux/makefiles/buildtree.make
+++ /dev/null
@@ -1,368 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Usage:
-#
-# $(MAKE) -f buildtree.make SRCARCH=srcarch BUILDARCH=buildarch LIBARCH=libarch
-# GAMMADIR=dir OS_FAMILY=os VARIANT=variant
-#
-# The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the
-# environment or on the command-line:
-#
-# ARCH - sparc, i486, ... HotSpot cpu and os_cpu source directory
-# BUILDARCH - build directory
-# LIBARCH - the corresponding directory in JDK/JRE
-# GAMMADIR - top of workspace
-# OS_FAMILY - operating system
-# VARIANT - core, compiler1, compiler2, or tiered
-# VERSION_STRING - the JDK version string as specified by JEP-223
-# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
-#
-# Builds the directory trees with makefiles plus some convenience files in
-# each directory:
-#
-# Makefile - for "make foo"
-# flags.make - with macro settings
-# vm.make - to support making "$(MAKE) -v vm.make" in makefiles
-# adlc.make -
-# trace.make - generate tracing event and type definitions
-# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
-#
-# The makefiles are split this way so that "make foo" will run faster by not
-# having to read the dependency files for the vm.
-
--include $(SPEC)
-include $(GAMMADIR)/make/scm.make
-include $(GAMMADIR)/make/defs.make
-include $(GAMMADIR)/make/altsrc.make
-
-
-# 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- PLATFORM_FILE = $(shell dirname $(shell dirname $(shell pwd)))/platform_zero
-else
- ifdef USE_SUNCC
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc
- else
- PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
- ALT_PLATFORM_FILE = $(HS_ALT_MAKE)/$(OS_FAMILY)/platform_$(BUILDARCH)
- PLATFORM_FILE := $(if $(wildcard $(ALT_PLATFORM_FILE)),$(ALT_PLATFORM_FILE),$(PLATFORM_FILE))
- endif
-endif
-
-# Allow overriding of the arch part of the directory but default
-# to BUILDARCH if nothing is specified
-ifeq ($(VARIANTARCH),)
- VARIANTARCH=$(BUILDARCH)
-endif
-
-ifdef FORCE_TIERED
-ifeq ($(VARIANT),tiered)
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_compiler2
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
-endif
-
-#
-# We do two levels of exclusion in the shared directory.
-# TOPLEVEL excludes are pruned, they are not recursively searched,
-# but lower level directories can be named without fear of collision.
-# ALWAYS excludes are excluded at any level in the directory tree.
-#
-
-ALWAYS_EXCLUDE_DIRS = $(SCM_DIRS)
-
-ifeq ($(VARIANT),tiered)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name agent
-else
-ifeq ($(VARIANT),compiler2)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name c1 -o -name agent
-else
-# compiler1 and core use the same exclude list
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name opto -o -name libadt -o -name agent
-endif
-endif
-
-# Get things from the platform file.
-COMPILER = $(shell sed -n 's/^compiler[ ]*=[ ]*//p' $(PLATFORM_FILE))
-
-SIMPLE_DIRS = \
- $(PLATFORM_DIR)/generated/dependencies \
- $(PLATFORM_DIR)/generated/adfiles \
- $(PLATFORM_DIR)/generated/jvmtifiles \
- $(PLATFORM_DIR)/generated/tracefiles \
- $(PLATFORM_DIR)/generated/extensions
-
-TARGETS = debug fastdebug optimized product
-SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
-
-# For dependencies and recursive makes.
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
-
-BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
-
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
- SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
-
-# Define variables to be set in flags.make.
-# Default values are set in make/defs.make.
-
-# Set BUILD_USER from system-dependent hints: $LOGNAME, $(whoami)
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
-endif
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell whoami)
-endif
-# Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
-# or make/hotspot_distro.
-ifndef HOTSPOT_VM_DISTRO
- ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- include $(GAMMADIR)/make/hotspot_distro
- else
- include $(GAMMADIR)/make/openjdk_distro
- endif
-endif
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-ifndef OPENJDK
- ifneq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- OPENJDK=true
- endif
-endif
-
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-
-BUILDTREE = \
- $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
-
-BUILDTREE_COMMENT = echo "\# Generated by $(BUILDTREE_MAKE)"
-
-all: $(SUBMAKE_DIRS)
-
-# Run make in each subdirectory recursively.
-$(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE
- $(QUIETLY) [ -d $@ ] || { mkdir -p $@; }
- +$(QUIETLY) cd $@ && $(BUILDTREE) TARGET=$(@F)
- $(QUIETLY) touch $@
-
-$(SIMPLE_DIRS):
- $(QUIETLY) mkdir -p $@
-
-# Convenience macro which takes a source relative path, applies $(1) to the
-# absolute path, and then replaces $(GAMMADIR) in the result with a
-# 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/ppc64 = 64
-DATA_MODE/aarch64 = 64
-
-DATA_MODE = $(DATA_MODE/$(BUILDARCH))
-
-flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "Platform_file = $(PLATFORM_FILE)" | sed -e 's|$(HS_ALT_MAKE)|$$(HS_ALT_MAKE)|' -e 's|$(GAMMADIR)|$$(GAMMADIR)|'; \
- sed -n '/=/s/^ */Platform_/p' < $(PLATFORM_FILE); \
- echo; \
- echo "GAMMADIR = $(GAMMADIR)"; \
- echo "HS_ALT_MAKE = $(HS_ALT_MAKE)"; \
- echo "OSNAME = $(OSNAME)"; \
- echo "SYSDEFS = \$$(Platform_sysdefs)"; \
- echo "SRCARCH = $(SRCARCH)"; \
- echo "BUILDARCH = $(BUILDARCH)"; \
- echo "LIBARCH = $(LIBARCH)"; \
- echo "TARGET = $(TARGET)"; \
- echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
- echo "VERSION_STRING = $(VERSION_STRING)"; \
- 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)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
- echo "CFLAGS += \$$(TARGET_DEFINES)"; \
- echo; \
- echo "Src_Dirs_V = \\"; \
- sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- echo; \
- echo "Src_Dirs_I = \\"; \
- echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,altsrc,share/vm) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm) \\"; \
- echo "$(call gamma-path,altsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,altsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(SRCARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- [ -n "$(CFLAGS_BROWSE)" ] && \
- echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
- [ -n "$(ENABLE_FULL_DEBUG_SYMBOLS)" ] && \
- echo && echo "ENABLE_FULL_DEBUG_SYMBOLS = $(ENABLE_FULL_DEBUG_SYMBOLS)"; \
- [ -n "$(OBJCOPY)" ] && \
- echo && echo "OBJCOPY = $(OBJCOPY)"; \
- [ -n "$(STRIP_POLICY)" ] && \
- echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \
- [ -n "$(ZIP_DEBUGINFO_FILES)" ] && \
- echo && echo "ZIP_DEBUGINFO_FILES = $(ZIP_DEBUGINFO_FILES)"; \
- [ -n "$(ZIPEXE)" ] && \
- echo && echo "ZIPEXE = $(ZIPEXE)"; \
- [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
- echo && \
- echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
- echo "SYSDEFS += \$$(HOTSPOT_EXTRA_SYSDEFS)"; \
- [ -n "$(INCLUDE_TRACE)" ] && \
- echo && echo "INCLUDE_TRACE = $(INCLUDE_TRACE)"; \
- echo; \
- [ -n "$(SPEC)" ] && \
- echo "include $(SPEC)"; \
- echo "CP ?= cp"; \
- echo "MV ?= mv"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(VARIANT).make"; \
- echo "include \$$(GAMMADIR)/make/excludeSrc.make"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(COMPILER).make"; \
- ) > $@
-
-flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(TARGET).make"; \
- ) > $@
-
-../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
- @echo $(LOG_INFO) Creating directory list $@
- $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
- find $(HS_ALT_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
- fi;
- $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
-
-Makefile: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/top.make"; \
- ) > $@
-
-vm.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo include flags_vm.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-adlc.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-jvmti.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-trace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-dtrace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-FORCE:
-
-.PHONY: all FORCE
-
-.NOTPARALLEL:
diff --git a/hotspot/make/linux/makefiles/compiler1.make b/hotspot/make/linux/makefiles/compiler1.make
deleted file mode 100644
index d303bfc1ca4..00000000000
--- a/hotspot/make/linux/makefiles/compiler1.make
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making client version of VM
-
-TYPE=COMPILER1
-
-VM_SUBDIR = client
-
-# We don't support the JVMCI in a client VM.
-INCLUDE_JVMCI := false
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/linux/makefiles/compiler2.make b/hotspot/make/linux/makefiles/compiler2.make
deleted file mode 100644
index c881079882e..00000000000
--- a/hotspot/make/linux/makefiles/compiler2.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making server version of VM
-
-TYPE=COMPILER2
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/linux/makefiles/core.make b/hotspot/make/linux/makefiles/core.make
deleted file mode 100644
index e032d964f57..00000000000
--- a/hotspot/make/linux/makefiles/core.make
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making core version of VM
-
-# Select which files to use (in top.make)
-TYPE=CORE
-
-# There is no "core" directory in JDK. Install core build in server directory.
-VM_SUBDIR = server
-
-# Note: macros.hpp defines CORE
diff --git a/hotspot/make/linux/makefiles/debug.make b/hotspot/make/linux/makefiles/debug.make
deleted file mode 100644
index 7c57280a12c..00000000000
--- a/hotspot/make/linux/makefiles/debug.make
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(DEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-
-# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
-CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/linux/makefiles/mapfile-vers-debug
-
-VERSION = debug
-SYSDEFS += -DASSERT
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/linux/makefiles/defs.make b/hotspot/make/linux/makefiles/defs.make
deleted file mode 100644
index f61dacd44e2..00000000000
--- a/hotspot/make/linux/makefiles/defs.make
+++ /dev/null
@@ -1,279 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The common definitions for hotspot linux builds.
-# Include the top level defs.make under make directory instead of this one.
-# This file is included into make/defs.make.
-
-SLASH_JAVA ?= /java
-
-define print_info
- ifneq ($$(LOG_LEVEL), warn)
- $$(shell echo >&2 "INFO: $1")
- endif
-endef
-
-# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
-
-# ARCH can be set explicitly in spec.gmk
-ifndef ARCH
- ARCH := $(shell uname -m)
- # Fold little endian PowerPC64 into big-endian (if ARCH is set in
- # hotspot-spec.gmk, this will be done by the configure script).
- ifeq ($(ARCH),ppc64le)
- ARCH := ppc64
- endif
-endif
-
-PATH_SEP ?= :
-
-ifeq ($(LP64), 1)
- ARCH_DATA_MODEL ?= 64
-else
- ARCH_DATA_MODEL ?= 32
-endif
-
-# zero
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- ifeq ($(ARCH_DATA_MODEL), 64)
- MAKE_ARGS += LP64=1
- endif
- PLATFORM = linux-zero
- VM_PLATFORM = linux_$(subst i386,i486,$(ZERO_LIBARCH))
- HS_ARCH = zero
- ARCH = zero
-endif
-
-# ia64
-ifeq ($(ARCH), ia64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = linux-ia64
- VM_PLATFORM = linux_ia64
- HS_ARCH = ia64
-endif
-
-# sparc
-ifneq (,$(findstring $(ARCH), sparc))
- ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = linux-sparcv9
- VM_PLATFORM = linux_sparcv9
- else
- ARCH_DATA_MODEL = 32
- PLATFORM = linux-sparc
- VM_PLATFORM = linux_sparc
- endif
- HS_ARCH = sparc
-endif
-
-# i686/i586 and amd64/x86_64
-ifneq (,$(findstring $(ARCH), amd64 x86_64 i686 i586))
- ifeq ($(ARCH_DATA_MODEL), 64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = linux-amd64
- VM_PLATFORM = linux_amd64
- else
- ARCH_DATA_MODEL = 32
- PLATFORM = linux-i586
- VM_PLATFORM = linux_i486
- endif
-
- HS_ARCH = x86
-endif
-
-# PPC
-# Notice: after 8046471 ARCH will be 'ppc' for top-level ppc64 builds but
-# 'ppc64' for HotSpot-only ppc64 builds. Need to detect both variants here!
-ifneq (,$(findstring $(ARCH), ppc ppc64))
- ifeq ($(ARCH_DATA_MODEL), 64)
- MAKE_ARGS += LP64=1
- PLATFORM = linux-ppc64
- VM_PLATFORM = linux_ppc64
- endif
-
- HS_ARCH = ppc
-endif
-
-# AARCH64
-ifeq ($(ARCH), aarch64)
- ARCH_DATA_MODEL = 64
- MAKE_ARGS += LP64=1
- PLATFORM = linux-aarch64
- VM_PLATFORM = linux_aarch64
- HS_ARCH = aarch64
-endif
-
-# On 32 bit linux we build server and client, on 64 bit just server.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ARCH_DATA_MODEL), 32)
- JVM_VARIANTS:=client,server
- JVM_VARIANT_CLIENT:=true
- JVM_VARIANT_SERVER:=true
- else
- JVM_VARIANTS:=server
- JVM_VARIANT_SERVER:=true
- endif
-endif
-
-# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-# builds is enabled with debug info files ZIP'ed to save space. For
-# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-# debug build without debug info isn't very useful.
-# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-#
-# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-# disabled for a BUILD_FLAVOR == product build.
-#
-# Note: Use of a different variable name for the FDS override option
-# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-# in options via environment variables, use of distinct variables
-# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-# product build, the FULL_DEBUG_SYMBOLS environment variable will be
-# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-# the same variable name is used, then different values can be picked
-# up by different parts of the build. Just to be clear, we only need
-# two variable names because the incoming option value can be
-# overridden in some situations, e.g., a BUILD_FLAVOR != product
-# build.
-
-# Due to the multiple sub-make processes that occur this logic gets
-# executed multiple times. We reduce the noise by at least checking that
-# BUILD_FLAVOR has been set.
-ifneq ($(BUILD_FLAVOR),)
- ifeq ($(BUILD_FLAVOR), product)
- FULL_DEBUG_SYMBOLS ?= 1
- ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
- else
- # debug variants always get Full Debug Symbols (if available)
- ENABLE_FULL_DEBUG_SYMBOLS = 1
- endif
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # Default OBJCOPY comes from GNU Binutils on Linux
- ifeq ($(CROSS_COMPILE_ARCH),)
- DEF_OBJCOPY=/usr/bin/objcopy
- else
- # Assume objcopy is part of the cross-compilation toolset
- ifneq ($(ALT_COMPILER_PATH),)
- DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
- endif
- endif
- OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
- ifneq ($(ALT_OBJCOPY),)
- $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
- OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
- endif
-
- ifeq ($(OBJCOPY),)
- $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
- ENABLE_FULL_DEBUG_SYMBOLS=0
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- else
- $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
-
- # Library stripping policies for .debuginfo configs:
- # all_strip - strips everything from the library
- # min_strip - strips most stuff from the library; leaves minimum symbols
- # no_strip - does not strip the library at all
- #
- # Oracle security policy requires "all_strip". A waiver was granted on
- # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
- #
- # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
- #
- STRIP_POLICY ?= min_strip
-
- $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
- ZIP_DEBUGINFO_FILES ?= 1
-
- $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
- endif
- endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-endif # BUILD_FLAVOR
-
-JDK_INCLUDE_SUBDIR=linux
-
-# Library suffix
-LIBRARY_SUFFIX=so
-
-EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
-
-# client and server subdirectories have symbolic links to ../libjsig.so
-EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.diz
- else
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.debuginfo
- endif
-endif
-EXPORT_SERVER_DIR = $(EXPORT_LIB_ARCH_DIR)/server
-EXPORT_CLIENT_DIR = $(EXPORT_LIB_ARCH_DIR)/client
-EXPORT_MINIMAL_DIR = $(EXPORT_LIB_ARCH_DIR)/minimal
-
-ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK) $(JVM_VARIANT_CORE)), true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
- else
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
- endif
- endif
-endif
-
-ifeq ($(JVM_VARIANT_CLIENT),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
- else
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
- endif
- endif
-endif
-
-ifeq ($(JVM_VARIANT_MINIMAL1),true)
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX)
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.diz
- else
- EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.debuginfo
- endif
- endif
-endif
-
--include $(HS_ALT_MAKE)/linux/makefiles/defs.make
diff --git a/hotspot/make/linux/makefiles/dtrace.make b/hotspot/make/linux/makefiles/dtrace.make
deleted file mode 100644
index 2c898d0e778..00000000000
--- a/hotspot/make/linux/makefiles/dtrace.make
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012 Red Hat, Inc.
-# 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.
-#
-#
-
-# Linux does not build jvm_db
-LIBJVM_DB =
-
-# Only OPENJDK builds test and support SDT probes currently.
-ifndef OPENJDK
-REASON = "This JDK does not support SDT probes"
-else
-
-# We need a recent GCC for the default (4.4 or later)
-ifeq "$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 4 \) \) \| \( $(CC_VER_MAJOR) \>= 5 \) )" "0"
-REASON = "gcc version is too old"
-else
-
-# But it does have a SystemTap dtrace compatible sys/sdt.h
-ifneq ($(ALT_SDT_H),)
- SDT_H_FILE = $(ALT_SDT_H)
-else
- ifeq ($(USE_CLANG), true)
- # Clang doesn't support the -print-sysroot option and there is no known equivalent
- # option, so fall back to using / as sysroot
- SDT_SYSROOT=
- else
- SDT_SYSROOT=$(shell $(CXX) -print-sysroot)
- endif
- SDT_H_FILE = $(SDT_SYSROOT)/usr/include/sys/sdt.h
-endif
-
-DTRACE_ENABLED = $(shell test -f $(SDT_H_FILE) && echo $(SDT_H_FILE))
-REASON = "$(SDT_H_FILE) not found"
-
-endif # GCC version
-endif # OPENJDK
-
-
-DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
-DTRACE_PROG = dtrace
-DtraceOutDir = $(GENERATED)/dtracefiles
-
-$(DtraceOutDir):
- mkdir $(DtraceOutDir)
-
-$(DtraceOutDir)/hotspot.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot.d
-
-$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d
-
-$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hs_private.d
-
-ifneq ($(DTRACE_ENABLED),)
-CFLAGS += -DDTRACE_ENABLED
-dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
-else
-dtrace_gen_headers:
- $(QUIETLY) $(LOG_INFO) echo "**NOTICE** Dtrace support disabled: $(REASON)"
-endif
-
-# Phony target used in vm.make build target to check whether enabled.
-ifeq ($(DTRACE_ENABLED),)
-dtraceCheck:
- $(QUIETLY) $(LOG_INFO) echo "**NOTICE** Dtrace support disabled: $(REASON)"
-else
-dtraceCheck:
-endif
-
-.PHONY: dtrace_gen_headers dtraceCheck
-
-# It doesn't support HAVE_DTRACE_H though.
-
diff --git a/hotspot/make/linux/makefiles/fastdebug.make b/hotspot/make/linux/makefiles/fastdebug.make
deleted file mode 100644
index ebadd1986b3..00000000000
--- a/hotspot/make/linux/makefiles/fastdebug.make
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-# They may also specify FASTDEBUG_CFLAGS, but it defaults to DEBUG_CFLAGS.
-
-FASTDEBUG_CFLAGS$(FASTDEBUG_CFLAGS) = $(DEBUG_CFLAGS)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-ifeq ($(BUILDARCH), ia64)
- # Bug in GCC, causes hang. -O1 will override the -O3 specified earlier
- OPT_CFLAGS/callGenerator.o += -O1
- OPT_CFLAGS/ciTypeFlow.o += -O1
- OPT_CFLAGS/compile.o += -O1
- OPT_CFLAGS/concurrentMarkSweepGeneration.o += -O1
- OPT_CFLAGS/doCall.o += -O1
- OPT_CFLAGS/generateOopMap.o += -O1
- OPT_CFLAGS/generateOptoStub.o += -O1
- OPT_CFLAGS/graphKit.o += -O1
- OPT_CFLAGS/instanceKlass.o += -O1
- OPT_CFLAGS/interpreterRT_ia64.o += -O1
- OPT_CFLAGS/output.o += -O1
- OPT_CFLAGS/parse1.o += -O1
- OPT_CFLAGS/runtime.o += -O1
- OPT_CFLAGS/synchronizer.o += -O1
-endif
-
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-# The following lines are copied from debug.make, except that we
-# consult FASTDEBUG_CFLAGS instead of DEBUG_CFLAGS.
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(FASTDEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-CFLAGS += $(DEBUG_CFLAGS/BYFILE)
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/linux/makefiles/mapfile-vers-debug
-
-VERSION = optimized
-SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/linux/makefiles/gcc.make b/hotspot/make/linux/makefiles/gcc.make
deleted file mode 100644
index 75dcaeb2c34..00000000000
--- a/hotspot/make/linux/makefiles/gcc.make
+++ /dev/null
@@ -1,425 +0,0 @@
-#
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- # When cross-compiling the ALT_COMPILER_PATH points
- # to the cross-compilation toolset
- ifdef CROSS_COMPILE_ARCH
- CXX = $(ALT_COMPILER_PATH)/g++
- CC = $(ALT_COMPILER_PATH)/gcc
- HOSTCXX = g++
- HOSTCC = gcc
- STRIP = $(ALT_COMPILER_PATH)/strip
- else
- ifeq ($(USE_CLANG), true)
- CXX = clang++
- CC = clang
- else
- CXX = g++
- CC = gcc
- endif
-
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
- STRIP = strip
- endif
- AS = $(CC) -c
-endif
-
-
-ifeq ($(USE_CLANG), true)
- CC_VER_MAJOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f1)
- CC_VER_MINOR := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/" | cut -d'.' -f2)
-else
- # -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
- # prints the numbers (e.g. "2.95", "3.2.1")
- CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
- CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
- CC_VER_MICRO := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f3)
- # Workaround Ubuntu bug where -dumpversion doesn't print a micro version
- # https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1360404
- ifeq ($(CC_VER_MICRO),)
- CC_VER_MICRO := "0"
- endif
-endif
-
-ifeq ($(USE_CLANG), true)
- # Clang has precompiled headers support by default, but the user can switch
- # it off by using 'USE_PRECOMPILED_HEADER=0'.
- ifdef LP64
- ifeq ($(USE_PRECOMPILED_HEADER),)
- USE_PRECOMPILED_HEADER=1
- endif
- else
- # We don't support precompiled headers on 32-bit builds because there some files are
- # compiled with -fPIC while others are compiled without (see 'NONPIC_OBJ_FILES' rules.make)
- # Clang produces an error if the PCH file was compiled with other options than the actual compilation unit.
- USE_PRECOMPILED_HEADER=0
- endif
-
- ifeq ($(USE_PRECOMPILED_HEADER),1)
-
- ifndef LP64
- $(error " Precompiled Headers only supported on 64-bit platforms!")
- endif
-
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.pch
-
- PCH_FLAG = -include precompiled.hpp
- PCH_FLAG/DEFAULT = $(PCH_FLAG)
- PCH_FLAG/NO_PCH = -DNO_PCH
- PCH_FLAG/BY_FILE = $(PCH_FLAG/$@)$(PCH_FLAG/DEFAULT$(PCH_FLAG/$@))
-
- VM_PCH_FLAG/LIBJVM = $(PCH_FLAG/BY_FILE)
- VM_PCH_FLAG/AOUT =
- VM_PCH_FLAG = $(VM_PCH_FLAG/$(LINK_INTO))
-
- # We only use precompiled headers for the JVM build
- CFLAGS += $(VM_PCH_FLAG)
-
- # There are some files which don't like precompiled headers
- # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) in the opt build.
- # But Clang doesn't support a precompiled header which was compiled with -O3
- # to be used in a compilation unit which uses '-O0'. We could also prepare an
- # extra '-O0' PCH file for the opt build and use it here, but it's probably
- # not worth the effort as long as only two files need this special handling.
- PCH_FLAG/loopTransform.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/sharedRuntimeTrig.o = $(PCH_FLAG/NO_PCH)
- PCH_FLAG/sharedRuntimeTrans.o = $(PCH_FLAG/NO_PCH)
-
- endif
-else # ($(USE_CLANG), true)
- # check for precompiled headers support
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
- # Allow the user to turn off precompiled headers from the command line.
- ifneq ($(USE_PRECOMPILED_HEADER),0)
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
- endif
- endif
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-ifeq ($(USE_PRECOMPILED_HEADER),0)
- CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-endif
-
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -fPIC
-
-VM_PICFLAG/LIBJVM = $(PICFLAG)
-VM_PICFLAG/AOUT =
-VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
-
-ifeq ($(JVM_VARIANT_ZERO), true)
-CFLAGS += $(LIBFFI_CFLAGS)
-endif
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
-CFLAGS += $(LIBFFI_CFLAGS)
-CFLAGS += $(LLVM_CFLAGS)
-endif
-CFLAGS += $(VM_PICFLAG)
-CFLAGS += -fno-rtti
-CFLAGS += -fno-exceptions
-CFLAGS += -D_REENTRANT
-ifeq ($(USE_CLANG),)
- CFLAGS += -fcheck-new
- # version 4 and above support fvisibility=hidden (matches jni_x86.h file)
- # except 4.1.2 gives pointless warnings that can't be disabled (afaik)
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
- CFLAGS += -fvisibility=hidden
- endif
-else
- CFLAGS += -fvisibility=hidden
-endif
-
-ifeq ($(USE_CLANG), true)
- # Before Clang 3.1, we had to pass the stack alignment specification directly to llvm with the help of '-mllvm'
- # Starting with version 3.1, Clang understands the '-mstack-alignment' (and rejects '-mllvm -stack-alignment')
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 1 \) \))" "0"
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mstack-alignment=16
- else
- STACK_ALIGNMENT_OPT = -mno-omit-leaf-frame-pointer -mllvm -stack-alignment=16
- endif
-endif
-
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-ARCHFLAG/i486 = -m32 -march=i586
-ARCHFLAG/amd64 = -m64 $(STACK_ALIGNMENT_OPT)
-ARCHFLAG/aarch64 =
-ARCHFLAG/ia64 =
-ARCHFLAG/sparc = -m32 -mcpu=v9
-ARCHFLAG/sparcv9 = -m64 -mcpu=v9
-ARCHFLAG/zero = $(ZERO_ARCHFLAG)
-ARCHFLAG/ppc64 = -m64
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# Keep temporary files (.ii, .s)
-ifdef NEED_ASM
- CFLAGS += -save-temps
-else
- CFLAGS += -pipe
-endif
-
-# Compiler warnings are treated as errors
-WARNINGS_ARE_ERRORS ?= -Werror
-
-ifeq ($(USE_CLANG), true)
- # However we need to clean the code up before we can unrestrictedly enable this option with Clang
- WARNINGS_ARE_ERRORS += -Wno-logical-op-parentheses -Wno-parentheses-equality -Wno-parentheses
- WARNINGS_ARE_ERRORS += -Wno-switch -Wno-tautological-constant-out-of-range-compare -Wno-tautological-compare
- WARNINGS_ARE_ERRORS += -Wno-delete-non-virtual-dtor -Wno-deprecated -Wno-format -Wno-dynamic-class-memaccess
- WARNINGS_ARE_ERRORS += -Wno-return-type -Wno-empty-body
-endif
-
-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wformat=2 -Wreturn-type -Woverloaded-virtual
-
-ifeq ($(USE_CLANG),)
- # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
- # conversions which might affect the values. Only enable it in earlier versions.
- ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
- # GCC < 4.3
- WARNING_FLAGS += -Wconversion
- endif
- ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 8 \) \))" "1"
- # GCC >= 4.8
- # This flag is only known since GCC 4.3. Gcc 4.8 contains a fix so that with templates no
- # warnings are issued: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11856
- WARNING_FLAGS += -Wtype-limits
- # GCC < 4.8 don't accept this flag for C++.
- WARNING_FLAGS += -Wno-format-zero-length
- # GCC 4.8 reports less false positives than the older compilers.
- WARNING_FLAGS += -Wuninitialized
- endif
-endif
-
-CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
-
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-
-# optimization control flags (Used by fastdebug and release variants)
-OPT_CFLAGS/NOOPT=-O0
-OPT_CFLAGS/DEBUG=-O0
-OPT_CFLAGS/SIZE=-Os
-OPT_CFLAGS/SPEED=-O3
-
-OPT_CFLAGS_DEFAULT ?= SPEED
-
-# Hotspot uses very unstrict aliasing turn this optimization off
-# This option is added to CFLAGS rather than OPT_CFLAGS
-# so that OPT_CFLAGS overrides get this option too.
-CFLAGS += -fno-strict-aliasing
-
-ifdef OPT_CFLAGS
- ifneq ("$(origin OPT_CFLAGS)", "command line")
- $(error " Use OPT_EXTRAS instead of OPT_CFLAGS to add extra flags to OPT_CFLAGS.")
- endif
-endif
-
-OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS)
-
-# Variable tracking size limit exceeded for VMStructs::init()
-ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "1"
- # GCC >= 4.3
- # Gcc 4.1.2 does not support this flag, nor does it have problems compiling the file.
- OPT_CFLAGS/vmStructs.o += -fno-var-tracking-assignments
- # The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
- # of OPT_CFLAGS. Restore it here.
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/vmStructs.o += -g
- endif
-endif
-
-# The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp
-# if we use expensive-optimizations
-ifeq ($(BUILDARCH), ia64)
-OPT_CFLAGS += -fno-expensive-optimizations
-endif
-
-# Work around some compiler bugs.
-ifeq ($(USE_CLANG), true)
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1)
- OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT)
- # The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
- # of OPT_CFLAGS. Restore it here.
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/loopTransform.o += -g
- endif
- endif
-else
- # Do not allow GCC 4.1.1
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 1 \& $(CC_VER_MICRO) = 1), 1)
- $(error "GCC $(CC_VER_MAJOR).$(CC_VER_MINOR).$(CC_VER_MICRO) not supported because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27724")
- endif
- # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
- OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT)
- endif
-endif
-
-# Flags for generating make dependency flags.
-DEPFLAGS = -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
-ifeq ($(USE_CLANG),)
- ifneq ($(CC_VER_MAJOR), 2)
- DEPFLAGS += -fpch-deps
- endif
-endif
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# statically link libstdc++.so, work with gcc but ignored by g++
-STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
-
-# Enable linker optimization
-LFLAGS += -Xlinker -O1
-
-ifeq ($(USE_CLANG),)
- STATIC_LIBGCC += -static-libgcc
-
- ifneq (, findstring(debug,$(BUILD_FLAVOR)))
- # for relocations read-only
- LFLAGS += -Xlinker -z -Xlinker relro
-
- ifeq ($(BUILD_FLAVOR), debug)
- # disable incremental relocations linking
- LFLAGS += -Xlinker -z -Xlinker now
- endif
- endif
-
- ifeq ($(BUILDARCH), ia64)
- LFLAGS += -Wl,-relax
- endif
-
- # If this is a --hash-style=gnu system, use --hash-style=both
- # The gnu .hash section won't work on some Linux systems like SuSE 10.
- _HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | grep -- '--hash-style=gnu')
- ifneq ($(_HAS_HASH_STYLE_GNU),)
- LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
- endif
-else
- # Don't know how to find out the 'hash style' of a system as '-dumpspecs'
- # doesn't work for Clang. So for now we'll alwys use --hash-style=both
- LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
-endif
-
-LFLAGS += $(LDFLAGS_HASH_STYLE)
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -Xlinker --version-script=FILENAME
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -Xlinker -soname=SONAME
-
-# Build shared library
-SHARED_FLAG = -shared
-
-# Keep symbols even they are not used
-AOUT_FLAGS += -Xlinker -export-dynamic
-
-#------------------------------------------------------------------------
-# Debug flags
-
-ifeq ($(USE_CLANG), true)
- # Restrict the debug information created by Clang to avoid
- # too big object files and speed the build up a little bit
- # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
- CFLAGS += -flimit-debug-info
-endif
-
-# Allow no optimizations.
-DEBUG_CFLAGS=-O0
-
-# DEBUG_BINARIES uses full -g debug information for all configs
-ifeq ($(DEBUG_BINARIES), true)
- CFLAGS += -g
-else
- DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
- ifeq ($(DEBUG_CFLAGS/$(BUILDARCH)),)
- DEBUG_CFLAGS += -g
- endif
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
- ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
- FASTDEBUG_CFLAGS += -g
- endif
-
- OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
- ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
- OPT_CFLAGS += -g
- endif
- endif
-endif
-
-ifeq ($(USE_CLANG),)
- # Enable bounds checking.
- ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) )" "1"
- # stack smashing checks.
- DEBUG_CFLAGS += -fstack-protector-all --param ssp-buffer-size=1
- endif
-endif
-
-
-# If we are building HEADLESS, pass on to VM
-# so it can set the java.awt.headless property
-ifdef HEADLESS
-CFLAGS += -DHEADLESS
-endif
-
-# We are building Embedded for a small device
-# favor code space over speed
-ifdef MINIMIZE_RAM_USAGE
-CFLAGS += -DMINIMIZE_RAM_USAGE
-endif
-
-# Stack walking in the JVM relies on frame pointer (%rbp) to walk thread stack.
-# Explicitly specify -fno-omit-frame-pointer because it is off by default
-# starting with gcc 4.6.
-ifndef USE_SUNCC
- CFLAGS += -fno-omit-frame-pointer
-endif
-
--include $(HS_ALT_MAKE)/linux/makefiles/gcc.make
diff --git a/hotspot/make/linux/makefiles/hp.make b/hotspot/make/linux/makefiles/hp.make
deleted file mode 100644
index e0b262a8fa2..00000000000
--- a/hotspot/make/linux/makefiles/hp.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/linux/makefiles/hp1.make b/hotspot/make/linux/makefiles/hp1.make
deleted file mode 100644
index 2e37a6ead33..00000000000
--- a/hotspot/make/linux/makefiles/hp1.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP1
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/linux/makefiles/i486.make b/hotspot/make/linux/makefiles/i486.make
deleted file mode 100644
index a1adda6477c..00000000000
--- a/hotspot/make/linux/makefiles/i486.make
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# TLS helper, assembled from .s file
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-OPT_CFLAGS/compactingPermGenGen.o = -O1
-
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/sharedRuntimeTrig.o += -g
- OPT_CFLAGS/sharedRuntimeTrans.o += -g
- OPT_CFLAGS/compactingPermGenGen.o += -g
-endif
diff --git a/hotspot/make/linux/makefiles/ia64.make b/hotspot/make/linux/makefiles/ia64.make
deleted file mode 100644
index 8535807a787..00000000000
--- a/hotspot/make/linux/makefiles/ia64.make
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 2005, 2012, 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.
-#
-#
-
-#
-# IA64 only uses c++ based interpreter
-CFLAGS += -DCC_INTERP -D_LP64=1 -DVM_LITTLE_ENDIAN
-ifeq ($(VERSION),debug)
-ASM_FLAGS= -DDEBUG
-else
-ASM_FLAGS=
-endif
-# workaround gcc bug in compiling varargs
-OPT_CFLAGS/jni.o = -O0
-
-# gcc/ia64 has a bug that internal gcc functions linked with libjvm.so
-# are made public. Hiding those symbols will cause undefined symbol error
-# when VM is dropped into older JDK. We probably will need an IA64
-# mapfile to include those symbols as a workaround. Disable linker mapfile
-# for now.
-LDNOMAP=true
diff --git a/hotspot/make/linux/makefiles/jsig.make b/hotspot/make/linux/makefiles/jsig.make
deleted file mode 100644
index 58c84930824..00000000000
--- a/hotspot/make/linux/makefiles/jsig.make
+++ /dev/null
@@ -1,83 +0,0 @@
-#
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build signal interposition library, used by vm.make
-
-# libjsig.so: signal interposition library
-JSIG = jsig
-LIBJSIG = lib$(JSIG).so
-
-LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo
-LIBJSIG_DIZ = lib$(JSIG).diz
-
-JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-
-DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG)
-DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO)
-DEST_JSIG_DIZ = $(JDK_LIBDIR)/$(LIBJSIG_DIZ)
-
-LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
-
-# On Linux we really dont want a mapfile, as this library is small
-# and preloaded using LD_PRELOAD, making functions private will
-# cause problems with interposing. See CR: 6466665
-# LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
-LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
-
-# DEBUG_BINARIES overrides everything, use full -g debug information
-ifeq ($(DEBUG_BINARIES), true)
- JSIG_DEBUG_CFLAGS = -g
-endif
-
-$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
- @echo $(LOG_INFO) Making signal interposition lib...
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_JSIG) $(JSIG_DEBUG_CFLAGS) $(EXTRA_CFLAGS) -o $@ $< -ldl
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
- $(RM) $(LIBJSIG_DEBUGINFO)
- endif
-endif
-
-install_jsig: $(LIBJSIG)
- @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
- $(QUIETLY) test ! -f $(LIBJSIG_DEBUGINFO) || \
- $(CP) -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
- $(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
- $(CP) -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
-
-.PHONY: install_jsig
diff --git a/hotspot/make/linux/makefiles/jvmti.make b/hotspot/make/linux/makefiles/jvmti.make
deleted file mode 100644
index 14220e9909f..00000000000
--- a/hotspot/make/linux/makefiles/jvmti.make
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# Copyright (c) 2003, 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.
-#
-#
-
-# This makefile (jvmti.make) is included from the jvmti.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate jvmti.
-
-include $(GAMMADIR)/make/linux/makefiles/rules.make
-
-# #########################################################################
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-
-JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
-InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(JvmtiSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-JvmtiGeneratedNames = \
- jvmtiEnv.hpp \
- jvmtiEnter.cpp \
- jvmtiEnterTrace.cpp \
- jvmtiEnvRecommended.cpp \
- bytecodeInterpreterWithChecks.cpp \
- jvmti.h \
-
-JvmtiEnvFillSource = $(JvmtiSrcDir)/jvmtiEnvFill.java
-JvmtiEnvFillClass = $(JvmtiOutDir)/jvmtiEnvFill.class
-
-JvmtiGenSource = $(JvmtiSrcDir)/jvmtiGen.java
-JvmtiGenClass = $(JvmtiOutDir)/jvmtiGen.class
-
-JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
-
-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-.PHONY: all jvmtidocs clean cleanall
-
-# #########################################################################
-
-all: $(JvmtiGeneratedFiles)
-
-both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
-
-$(JvmtiGenClass): $(JvmtiGenSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
-
-$(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-
-$(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
-
-$(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
-
-$(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
-
-$(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
- $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
-
-$(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
-
-$(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
-
-jvmtidocs: $(JvmtiOutDir)/jvmti.html
-
-$(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
-
-# #########################################################################
-
-clean :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-cleanall :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-# #########################################################################
-
diff --git a/hotspot/make/linux/makefiles/mapfile-vers-debug b/hotspot/make/linux/makefiles/mapfile-vers-debug
deleted file mode 100644
index ec0f06d8f65..00000000000
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/linux/makefiles/mapfile-vers-jsig b/hotspot/make/linux/makefiles/mapfile-vers-jsig
deleted file mode 100644
index 8a675046b6e..00000000000
--- a/hotspot/make/linux/makefiles/mapfile-vers-jsig
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-
-#
-# Copyright (c) 2005, 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.
-#
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_begin_signal_setting;
- JVM_end_signal_setting;
- JVM_get_libjsig_version;
- JVM_get_signal_action;
- sigaction;
- signal;
- sigset;
- local:
- *;
-};
diff --git a/hotspot/make/linux/makefiles/mapfile-vers-product b/hotspot/make/linux/makefiles/mapfile-vers-product
deleted file mode 100644
index ec0f06d8f65..00000000000
--- a/hotspot/make/linux/makefiles/mapfile-vers-product
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_linux_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
- numa_warn;
- numa_error;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
-
diff --git a/hotspot/make/linux/makefiles/minimal1.make b/hotspot/make/linux/makefiles/minimal1.make
deleted file mode 100644
index d453e789877..00000000000
--- a/hotspot/make/linux/makefiles/minimal1.make
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-TYPE=MINIMAL1
-
-# Force all variables to false, overriding any other
-# setting that may have occurred in the makefiles. These
-# can still be overridden by passing the variable as an
-# argument to 'make'
-INCLUDE_JVMTI := false
-INCLUDE_FPROF := false
-INCLUDE_VM_STRUCTS := false
-INCLUDE_JNI_CHECK := false
-INCLUDE_SERVICES := false
-INCLUDE_MANAGEMENT := false
-INCLUDE_ALL_GCS := false
-INCLUDE_NMT := false
-INCLUDE_TRACE := false
-INCLUDE_CDS := false
-INCLUDE_JVMCI := false
-
-CXXFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
-CFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
-
-Src_Dirs/MINIMAL1 = $(CORE_PATHS) $(COMPILER1_PATHS)
-
-Src_Files_EXCLUDE/MINIMAL1 += $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-
--include $(HS_ALT_MAKE)/$(OSNAME)/makefiles/minimal1.make
-
-.PHONY: $(HS_ALT_MAKE)/$(OSNAME)/makefiles/minimal1.make
diff --git a/hotspot/make/linux/makefiles/optimized.make b/hotspot/make/linux/makefiles/optimized.make
deleted file mode 100644
index 41d5e5d792e..00000000000
--- a/hotspot/make/linux/makefiles/optimized.make
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (c) 1999, 2012, 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.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/linux/makefiles/mapfile-vers-debug
-
-VERSION = optimized
diff --git a/hotspot/make/linux/makefiles/ppc64.make b/hotspot/make/linux/makefiles/ppc64.make
deleted file mode 100644
index acb51ab2b7a..00000000000
--- a/hotspot/make/linux/makefiles/ppc64.make
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012, 2013 SAP SE. 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 c code know it is on a 64 bit platform.
-CFLAGS += -D_LP64=1
-
-ifeq ($(origin OPENJDK_TARGET_CPU_ENDIAN),undefined)
- # This can happen during hotspot standalone build. Set endianness from
- # uname. We assume build and target machines are the same.
- OPENJDK_TARGET_CPU_ENDIAN:=$(if $(filter ppc64le,$(shell uname -m)),little,big)
-endif
-
-ifeq ($(filter $(OPENJDK_TARGET_CPU_ENDIAN),big little),)
- $(error OPENJDK_TARGET_CPU_ENDIAN value should be 'big' or 'little')
-endif
-
-ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),big)
- # fixes `relocation truncated to fit' error for gcc 4.1.
- CFLAGS += -mminimal-toc
-
- # finds use ppc64 instructions, but schedule for power5
- CFLAGS += -mcpu=powerpc64 -mtune=power5 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string
-else
- # Little endian machine uses ELFv2 ABI.
- CFLAGS += -DVM_LITTLE_ENDIAN -DABI_ELFv2
-
- # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
- CFLAGS += -mcpu=power7 -mtune=power8 -minsert-sched-nops=regroup_exact -mno-multiple -mno-string
-endif
diff --git a/hotspot/make/linux/makefiles/product.make b/hotspot/make/linux/makefiles/product.make
deleted file mode 100644
index 70e23c6cb5e..00000000000
--- a/hotspot/make/linux/makefiles/product.make
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (c) 1999, 2012, 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.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfile
-MAPFILE = $(GAMMADIR)/make/linux/makefiles/mapfile-vers-product
-
-SYSDEFS += -DPRODUCT
-VERSION = optimized
-
-# use -g to strip library as -x will discard its symbol table; -x is fine for
-# executables.
-# Note: these macros are not used in .debuginfo configs
-STRIP_LIBJVM = $(STRIP) -g $@ || exit 1;
-STRIP_AOUT = $(STRIP) -x $@ || exit 1;
-
-# If we can create .debuginfo files, then the VM is stripped in vm.make
-# and this macro is not used.
-# LINK_LIB.CXX/POST_HOOK += $(STRIP_$(LINK_INTO))
diff --git a/hotspot/make/linux/makefiles/rules.make b/hotspot/make/linux/makefiles/rules.make
deleted file mode 100644
index 82b952d2988..00000000000
--- a/hotspot/make/linux/makefiles/rules.make
+++ /dev/null
@@ -1,214 +0,0 @@
-#
-# Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Common rules/macros for the vm, adlc.
-
-# Tell make that .cpp is important
-.SUFFIXES: .cpp $(SUFFIXES)
-
-DEMANGLER = c++filt
-DEMANGLE = $(DEMANGLER) < $@ > .$@ && $(MV) -f .$@ $@
-
-# $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++).
-CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
-CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
-AS.S = $(AS) $(ASFLAGS)
-
-COMPILE.CC = $(CC_COMPILE) -c
-GENASM.CC = $(CC_COMPILE) -S
-LINK.CC = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_LIB.CC = $(CC) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CC = $(CC_COMPILE) -E
-
-COMPILE.CXX = $(CXX_COMPILE) -c
-GENASM.CXX = $(CXX_COMPILE) -S
-LINK.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_NOPROF.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS)
-LINK_LIB.CXX = $(CXX) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CXX = $(CXX_COMPILE) -E
-
-# cross compiling the jvm with c2 requires host compilers to build
-# adlc tool
-
-HOST.CXX_COMPILE = $(HOSTCXX) $(CXXFLAGS) $(CFLAGS)
-HOST.COMPILE.CXX = $(HOST.CXX_COMPILE) -c
-HOST.LINK_NOPROF.CXX = $(HOSTCXX) $(LFLAGS) $(AOUT_FLAGS)
-
-
-# Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k".
-REMOVE_TARGET = rm -f $@
-
-# Note use of ALT_BOOTDIR to explicitly specify location of java and
-# javac; this is the same environment variable used in the J2SE build
-# process for overriding the default spec, which is BOOTDIR.
-# Note also that we fall back to using JAVA_HOME if neither of these is
-# specified.
-
-ifdef ALT_BOOTDIR
-
-RUN.JAVA = $(ALT_BOOTDIR)/bin/java
-RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap
-RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah
-RUN.JAR = $(ALT_BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac
-COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(ALT_BOOTDIR)
-
-else
-
-ifdef BOOTDIR
-
-RUN.JAVA = $(BOOTDIR)/bin/java
-RUN.JAVAP = $(BOOTDIR)/bin/javap
-RUN.JAVAH = $(BOOTDIR)/bin/javah
-RUN.JAR = $(BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(BOOTDIR)/bin/javac
-COMPILE.RMIC = $(BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(BOOTDIR)
-
-else
-
-ifdef JAVA_HOME
-
-RUN.JAVA = $(JAVA_HOME)/bin/java
-RUN.JAVAP = $(JAVA_HOME)/bin/javap
-RUN.JAVAH = $(JAVA_HOME)/bin/javah
-RUN.JAR = $(JAVA_HOME)/bin/jar
-COMPILE.JAVAC = $(JAVA_HOME)/bin/javac
-COMPILE.RMIC = $(JAVA_HOME)/bin/rmic
-BOOT_JAVA_HOME = $(JAVA_HOME)
-
-else
-
-# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
-
-RUN.JAVA = java
-RUN.JAVAP = javap
-RUN.JAVAH = javah
-RUN.JAR = jar
-COMPILE.JAVAC = javac
-COMPILE.RMIC = rmic
-
-endif
-endif
-endif
-
-COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-
-SUM = /usr/bin/sum
-
-# 'gmake MAKE_VERBOSE=y' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-RUN.JAR$(MAKE_VERBOSE) += >/dev/null
-
-# Settings for javac
-JAVAC_FLAGS = -g -encoding ascii
-
-# Prefer BOOT_JDK_SOURCETARGET if it's set (typically by the top build system)
-# Fall back to the values here if it's not set (hotspot only builds)
-ifeq ($(BOOT_JDK_SOURCETARGET),)
-BOOTSTRAP_SOURCETARGET := -source 8 -target 8
-else
-BOOTSTRAP_SOURCETARGET := $(BOOT_JDK_SOURCETARGET)
-endif
-
-BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) $(BOOTSTRAP_SOURCETARGET)
-
-# With parallel makes, print a message at the end of compilation.
-ifeq ($(findstring j,$(MFLAGS)),j)
-COMPILE_DONE = && { echo Done with $<; }
-endif
-
-# Include $(NONPIC_OBJ_FILES) definition
-ifndef LP64
-include $(GAMMADIR)/make/pic.make
-endif
-
-include $(GAMMADIR)/make/altsrc.make
-
-# The non-PIC object files are only generated for 32 bit platforms.
-ifdef LP64
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-else
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
- $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
- $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
-endif
-
-%.o: %.s
- @echo $(LOG_INFO) Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
-# gcc applies preprocessing if the file extension is .S instead of .s
-%.o: %.S
- @echo $(LOG_INFO) Preprocessing and assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(AS.S) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-
-%.s: %.cpp
- @echo $(LOG_INFO) Generating assembly for $<
- $(QUIETLY) $(GENASM.CXX) -o $@ $<
- $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE)
-
-# Intermediate files (for debugging macros)
-%.i: %.cpp
- @echo $(LOG_INFO) Preprocessing $< to $@
- $(QUIETLY) $(PREPROCESS.CXX) $< > $@ $(COMPILE_DONE)
-
-# Override gnumake built-in rules which do sccs get operations badly.
-# (They put the checked out code in the current directory, not in the
-# directory of the original file.) Since this is a symptom of a teamware
-# failure, and since not all problems can be detected by gnumake due
-# to incomplete dependency checking... just complain and stop.
-%:: s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-%:: SCCS/s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-.PHONY: default
diff --git a/hotspot/make/linux/makefiles/shark.make b/hotspot/make/linux/makefiles/shark.make
deleted file mode 100644
index ca702ee6616..00000000000
--- a/hotspot/make/linux/makefiles/shark.make
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2008, 2010 Red Hat, Inc.
-# 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.
-#
-#
-
-# Sets make macros for making Shark version of VM
-
-TYPE = SHARK
-
-VM_SUBDIR = server
-
-CFLAGS += -DSHARK
diff --git a/hotspot/make/linux/makefiles/sparc.make b/hotspot/make/linux/makefiles/sparc.make
deleted file mode 100644
index ddb05132fab..00000000000
--- a/hotspot/make/linux/makefiles/sparc.make
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2005, 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.
-#
-#
-
diff --git a/hotspot/make/linux/makefiles/sparcWorks.make b/hotspot/make/linux/makefiles/sparcWorks.make
deleted file mode 100644
index e39116023c5..00000000000
--- a/hotspot/make/linux/makefiles/sparcWorks.make
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# Copyright (c) 1999, 2012, 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.
-#
-#
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- CXX = CC
- CC = cc
- AS = $(CC) -c
-
- HOSTCXX = $(CXX)
- HOSTCC = $(CC)
-endif
-
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-ARCHFLAG/i486 = -m32
-ARCHFLAG/amd64 = -m64
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -KPIC
-
-CFLAGS += $(PICFLAG)
-# no more exceptions
-CFLAGS += -features=no%except
-# Reduce code bloat by reverting back to 5.0 behavior for static initializers
-CFLAGS += -features=no%split_init
-# allow zero sized arrays
-CFLAGS += -features=zla
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# We don't need libCstd.so and librwtools7.so, only libCrun.so
-CFLAGS += -library=Crun
-LIBS += -lCrun
-
-CFLAGS += -mt
-LFLAGS += -mt
-
-# Compiler warnings are treated as errors
-#WARNINGS_ARE_ERRORS = -errwarn=%all
-CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS)
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-
-# The flags to use for an Optimized build
-OPT_CFLAGS+=-xO4
-OPT_CFLAGS/NOOPT=-xO0
-
-# Flags for creating the dependency files.
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d)
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -Wl,--version-script=FILENAME
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -h SONAME
-
-# Build shared library
-SHARED_FLAG = -G
-
-#------------------------------------------------------------------------
-# Debug flags
-DEBUG_CFLAGS += -g
-FASTDEBUG_CFLAGS = -g0
-
diff --git a/hotspot/make/linux/makefiles/sparcv9.make b/hotspot/make/linux/makefiles/sparcv9.make
deleted file mode 100644
index b9e4e525d76..00000000000
--- a/hotspot/make/linux/makefiles/sparcv9.make
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2005, 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.
-#
-
-# gcc 4.0 miscompiles this code in -m64
-OPT_CFLAGS/macro.o = -O0
-
-CFLAGS += -D_LP64=1
diff --git a/hotspot/make/linux/makefiles/tiered.make b/hotspot/make/linux/makefiles/tiered.make
deleted file mode 100644
index da79ade9fdc..00000000000
--- a/hotspot/make/linux/makefiles/tiered.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 2006, 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.
-#
-#
-
-# Sets make macros for making tiered version of VM
-
-TYPE=TIERED
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2 -DCOMPILER1
diff --git a/hotspot/make/linux/makefiles/top.make b/hotspot/make/linux/makefiles/top.make
deleted file mode 100644
index d798d42851e..00000000000
--- a/hotspot/make/linux/makefiles/top.make
+++ /dev/null
@@ -1,150 +0,0 @@
-#
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# top.make is included in the Makefile in the build directories.
-# It DOES NOT include the vm dependency info in order to be faster.
-# Its main job is to implement the incremental form of make lists.
-# It also:
-# -builds and runs adlc via adlc.make
-# -generates JVMTI source and docs via jvmti.make (JSR-163)
-
-# It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files
-
-# -- D. Ungar (5/97) from a file by Bill Bush
-
-# Don't override the built-in $(MAKE).
-# Instead, use "gmake" (or "gnumake") from the command line. --Rose
-#MAKE = gmake
-
-include $(GAMMADIR)/make/altsrc.make
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-VM = $(GAMMADIR)/src/share/vm
-Plat_File = $(Platform_file)
-CDG = cd $(GENERATED);
-
-ifneq ($(USE_PRECOMPILED_HEADER),0)
-UpdatePCH = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS)
-else
-UpdatePCH = \# precompiled header is not used
-endif
-
-Cached_plat = $(GENERATED)/platform.current
-
-AD_Dir = $(GENERATED)/adfiles
-ADLC = $(AD_Dir)/adlc
-AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
-AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
-AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
-AD_Files = $(AD_Names:%=$(AD_Dir)/%)
-
-# AD_Files_If_Required/COMPILER1 = ad_stuff
-AD_Files_If_Required/COMPILER2 = ad_stuff
-AD_Files_If_Required/TIERED = ad_stuff
-AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE))
-
-# Wierd argument adjustment for "gnumake -j..."
-adjust-mflags = $(GENERATED)/adjust-mflags
-# If SPEC is set, it's from configure and it's already controlling concurrency
-# for us. Skip setting -j with HOTSPOT_BUILD_JOBS.
-ifeq ($(SPEC), )
- MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
-else
- MFLAGS-adjusted = -r $(MFLAGS)
-endif
-
-
-# default target: update lists, make vm
-# done in stages to force sequential order with parallel make
-#
-
-default: vm_build_preliminaries the_vm
- @echo All done.
-
-# This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff dtrace_stuff
- @# We need a null action here, so implicit rules don't get consulted.
-
-$(Cached_plat): $(Plat_File)
- $(CDG) $(CP) $(Plat_File) $(Cached_plat)
-
-# make AD files as necessary
-ad_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f adlc.make $(MFLAGS-adjusted)
-
-# generate JVMTI files from the spec
-jvmti_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
-
-# generate trace files
-trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f trace.make $(MFLAGS-adjusted)
-
-dtrace_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED)
-
-# and the VM: must use other makefile with dependencies included
-
-# We have to go to great lengths to get control over the -jN argument
-# to the recursive invocation of vm.make. The problem is that gnumake
-# resets -jN to -j1 for recursive runs. (How helpful.)
-# Note that the user must specify the desired parallelism level via a
-# command-line or environment variable name HOTSPOT_BUILD_JOBS.
-$(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh
- @+rm -f $@ $@+
- @+cat $< > $@+
- @+chmod +x $@+
- @+mv $@+ $@
-
-the_vm: vm_build_preliminaries $(adjust-mflags)
- +@$(UpdatePCH)
- @$(MAKE) -f vm.make $(MFLAGS-adjusted)
-
-install: the_vm
- @$(MAKE) -f vm.make $@
-
-# next rules support "make foo.[ois]"
-
-%.o %.i %.s:
- +$(UpdatePCH)
- $(MAKE) -f vm.make $(MFLAGS) $@
- #$(MAKE) -f vm.make $@
-
-# this should force everything to be rebuilt
-clean:
- rm -f $(GENERATED)/*.class
- $(MAKE) -f vm.make $(MFLAGS) clean
-
-# just in case it doesn't, this should do it
-realclean:
- $(MAKE) -f vm.make $(MFLAGS) clean
- rm -fr $(GENERATED)
-
-.PHONY: default vm_build_preliminaries
-.PHONY: lists ad_stuff jvmti_stuff the_vm clean realclean
-.PHONY: checks check_os_version install
-
-.NOTPARALLEL:
diff --git a/hotspot/make/linux/makefiles/trace.make b/hotspot/make/linux/makefiles/trace.make
deleted file mode 100644
index 2209716d35b..00000000000
--- a/hotspot/make/linux/makefiles/trace.make
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (trace.make) is included from the trace.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate trace files.
-
-include $(GAMMADIR)/make/linux/makefiles/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-# #########################################################################
-
-HAS_ALT_SRC := false
-ifndef OPENJDK
- ifneq ($(wildcard $(HS_ALT_SRC)/share/vm/trace), )
- HAS_ALT_SRC := true
- endif
-endif
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-TraceOutDir = $(GENERATED)/tracefiles
-
-TraceAltSrcDir = $(HS_ALT_SRC)/share/vm/trace
-TraceSrcDir = $(HS_COMMON_SRC)/share/vm/trace
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(TraceSrcDir) $(TraceAltSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-TraceGeneratedNames = \
- traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
-
-ifeq ($(HAS_ALT_SRC), true)
-TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
-endif
-
-TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
-
-XSLT = $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-TraceXml = $(TraceSrcDir)/trace.xml
-ifeq ($(HAS_ALT_SRC), true)
- TraceXml = $(TraceAltSrcDir)/trace.xml
-endif
-
-XML_DEPS = $(TraceXml) $(TraceSrcDir)/tracetypes.xml \
- $(TraceSrcDir)/trace.dtd $(TraceSrcDir)/xinclude.mod \
- $(TraceSrcDir)/tracerelationdecls.xml $(TraceSrcDir)/traceevents.xml
-ifeq ($(HAS_ALT_SRC), true)
- XML_DEPS += $(TraceAltSrcDir)/traceeventscustom.xml \
- $(TraceAltSrcDir)/traceeventtypes.xml
-endif
-
-.PHONY: all clean cleanall
-
-# #########################################################################
-
-all: $(TraceGeneratedFiles)
-
-GENERATE_CODE= \
- $(QUIETLY) echo $(LOG_INFO) Generating $@; \
- $(XSLT) -IN $(word 1,$^) -XSL $(word 2,$^) -OUT $@
-
-$(TraceOutDir)/traceEventIds.hpp: $(TraceXml) $(TraceSrcDir)/traceEventIds.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceTypes.hpp: $(TraceXml) $(TraceSrcDir)/traceTypes.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-ifeq ($(HAS_ALT_SRC), false)
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-else
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceRequestables.hpp: $(TraceXml) $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceEventControl.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-endif
-
-# #########################################################################
-
-clean cleanall:
- rm $(TraceGeneratedFiles)
diff --git a/hotspot/make/linux/makefiles/vm.make b/hotspot/make/linux/makefiles/vm.make
deleted file mode 100644
index f97884af1da..00000000000
--- a/hotspot/make/linux/makefiles/vm.make
+++ /dev/null
@@ -1,407 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build JVM and related libraries, included from vm.make in the build
-# directory.
-
-# Common build rules.
-MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
-include $(MAKEFILES_DIR)/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-default: build
-
-#----------------------------------------------------------------------
-# Defs
-
-GENERATED = ../generated
-DEP_DIR = $(GENERATED)/dependencies
-
-# reads the generated files defining the set of .o's and the .o .h dependencies
--include $(DEP_DIR)/*.d
-
-# read machine-specific adjustments (%%% should do this via buildtree.make?)
-ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
- include $(MAKEFILES_DIR)/zeroshark.make
-else
- BUILDARCH_MAKE = $(MAKEFILES_DIR)/$(BUILDARCH).make
- ALT_BUILDARCH_MAKE = $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/$(BUILDARCH).make
- include $(if $(wildcard $(ALT_BUILDARCH_MAKE)),$(ALT_BUILDARCH_MAKE),$(BUILDARCH_MAKE))
-endif
-
-# set VPATH so make knows where to look for source files
-# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The adfiles directory contains ad_.[ch]pp.
-# The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles $(GENERATED)/tracefiles $(GENERATED)/extensions
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor.
-Src_Dirs_I += $(GENERATED)
-# The order is important for the precompiled headers to work.
-INCLUDES += $(PRECOMPILED_HEADER_DIR:%=-I%) $(Src_Dirs_I:%=-I%)
-
-# SYMFLAG is used by jsig.make
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # always build with debug info when we can create .debuginfo files
- SYMFLAG = -g
-else
- ifeq (${VERSION}, debug)
- SYMFLAG = -g
- else
- SYMFLAG =
- endif
-endif
-
-# The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
- -DVERSION_MINOR=$(VERSION_MINOR) \
- -DVERSION_SECURITY=$(VERSION_SECURITY) \
- -DVERSION_PATCH=$(VERSION_PATCH) \
- -DVERSION_BUILD=$(VERSION_BUILD)
-VM_VER_DEFS = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
- -DVERSION_STRING="\"$(VERSION_STRING)\"" \
- -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
- $(JDK_VER_DEFS)
-HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
-BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
-VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
-
-CXXFLAGS = \
- ${SYSDEFS} \
- ${INCLUDES} \
- ${BUILD_USER} \
- ${HS_LIB_ARCH} \
- ${VM_DISTRO}
-
-# This is VERY important! The version define must only be supplied to vm_version.o
-# If not, ccache will not re-use the cache at all, since the version string might contain
-# a time and date.
-CXXFLAGS/vm_version.o += ${VM_VER_DEFS}
-
-CXXFLAGS/BYFILE = $(CXXFLAGS/$@)
-
-# File specific flags
-CXXFLAGS += $(CXXFLAGS/BYFILE)
-
-# Large File Support
-ifneq ($(LP64), 1)
-CXXFLAGS/ostream.o += -D_FILE_OFFSET_BITS=64
-endif # ifneq ($(LP64), 1)
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-CFLAGS += $(CFLAGS_WARN/BYFILE)
-
-# Do not use C++ exception handling
-CFLAGS += $(CFLAGS/NOEX)
-
-# Extra flags from gnumake's invocation or environment
-CFLAGS += $(EXTRA_CFLAGS)
-LFLAGS += $(EXTRA_CFLAGS)
-
-# Don't set excutable bit on stack segment
-# the same could be done by separate execstack command
-LFLAGS += -Xlinker -z -Xlinker noexecstack
-
-LIBS += -lm -ldl -lpthread
-
-# By default, link the *.o into the library, not the executable.
-LINK_INTO$(LINK_INTO) = LIBJVM
-
-JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
-
-#----------------------------------------------------------------------
-# jvm_db & dtrace
-include $(MAKEFILES_DIR)/dtrace.make
-
-#----------------------------------------------------------------------
-# JVM
-
-JVM = jvm
-LIBJVM = lib$(JVM).so
-
-LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
-LIBJVM_DIZ = lib$(JVM).diz
-
-SPECIAL_PATHS:=adlc c1 gc opto shark libadt
-
-SOURCE_PATHS=\
- $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
- \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
-
-CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
-CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-
-ifneq ($(INCLUDE_TRACE), false)
-CORE_PATHS+=$(shell if [ -d $(HS_ALT_SRC)/share/vm/jfr ]; then \
- find $(HS_ALT_SRC)/share/vm/jfr -type d; \
- fi)
-endif
-
-CORE_PATHS+=$(GENERATED)/extensions
-
-COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
-COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
-
-COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
-COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
-COMPILER2_PATHS += $(GENERATED)/adfiles
-
-SHARK_PATHS := $(GAMMADIR)/src/share/vm/shark
-
-# Include dirs per type.
-Src_Dirs/CORE := $(CORE_PATHS)
-Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
-Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/ZERO := $(CORE_PATHS)
-Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
-Src_Dirs := $(Src_Dirs/$(TYPE))
-
-COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp c2_\* runtime_\*
-COMPILER1_SPECIFIC_FILES := c1_\*
-SHARK_SPECIFIC_FILES := shark
-ZERO_SPECIFIC_FILES := zero
-
-# Always exclude these.
-Src_Files_EXCLUDE += jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
-
-# Exclude per type.
-Src_Files_EXCLUDE/CORE := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/TIERED := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/ZERO := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/SHARK := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
-
-Src_Files_EXCLUDE += $(Src_Files_EXCLUDE/$(TYPE))
-
-# Special handling of arch model.
-ifeq ($(Platform_arch_model), x86_32)
-Src_Files_EXCLUDE += \*x86_64\*
-endif
-ifeq ($(Platform_arch_model), x86_64)
-Src_Files_EXCLUDE += \*x86_32\*
-endif
-
-Src_Files_BASE += \*.c \*.cpp \*.s
-
-# Alternate vm.make
-# This has to be included here to allow changes to the source
-# directories and excluded files before they are expanded
-# by the definition of Src_Files.
--include $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/vm.make
-
-# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
-define findsrc
- $(notdir $(shell find $(1)/. ! -name . -prune \
- -a \( -name DUMMY $(addprefix -o -name ,$(Src_Files_BASE)) \) \
- -a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
-endef
-
-Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
-
-Obj_Files = $(sort $(addsuffix .o,$(basename $(Src_Files))) $(EXTENDED_JVM_OBJ_FILES))
-
-JVM_OBJ_FILES = $(Obj_Files)
-
-vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
-
-MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers
-
-MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext
-ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","")
-MAPFILE_EXT := $(MAPFILE_EXT_SRC)
-endif
-
-mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def $(MAPFILE_EXT)
- rm -f $@
- awk '{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
- { system ("cat ${MAPFILE_SHARE} $(MAPFILE_EXT) vm.def"); } \
- else \
- { print $$0 } \
- }' > $@ < $(MAPFILE)
-
-mapfile_reorder : mapfile $(REORDERFILE)
- rm -f $@
- cat $^ > $@
-
-VMDEF_PAT = ^_ZTV
-VMDEF_PAT := ^gHotSpotVM|$(VMDEF_PAT)
-VMDEF_PAT := ^UseSharedSpaces$$|$(VMDEF_PAT)
-VMDEF_PAT := ^_ZN9Arguments17SharedArchivePathE$$|$(VMDEF_PAT)
-ifneq ($(VMDEF_PAT_EXT),)
- VMDEF_PAT := $(VMDEF_PAT_EXT)|$(VMDEF_PAT)
-endif
-
-vm.def: $(Res_Files) $(Obj_Files) $(VM_DEF_EXT)
- $(QUIETLY) $(NM) --defined-only $(Obj_Files) | sort -k3 -u | \
- awk '$$3 ~ /$(VMDEF_PAT)/ { print "\t" $$3 ";" }' > $@
-ifneq ($(VM_DEF_EXT),)
- cat $(VM_DEF_EXT) >> $@
-endif
-
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
- STATIC_CXX = false
-else
- ifeq ($(ZERO_LIBARCH), ppc64)
- STATIC_CXX = false
- else
- STATIC_CXX = true
- endif
-endif
-
-ifeq ($(LINK_INTO),AOUT)
- LIBJVM.o =
- LIBJVM_MAPFILE =
- LIBS_VM = $(LIBS)
-else
- LIBJVM.o = $(JVM_OBJ_FILES)
- LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
- LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
- LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
- LFLAGS_VM += -Wl,-z,defs
-
- # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
- # get around library dependency and compatibility issues. Must use gcc not
- # g++ to link.
- ifeq ($(STATIC_CXX), true)
- LFLAGS_VM += $(STATIC_LIBGCC)
- LIBS_VM += $(STATIC_STDCXX)
- else
- LIBS_VM += -lstdc++
- endif
-
- LIBS_VM += $(LIBS)
-endif
-ifeq ($(JVM_VARIANT_ZERO), true)
- LIBS_VM += $(LIBFFI_LIBS)
-endif
-ifeq ($(JVM_VARIANT_ZEROSHARK), true)
- LIBS_VM += $(LIBFFI_LIBS) $(LLVM_LIBS)
- LFLAGS_VM += $(LLVM_LDFLAGS)
-endif
-
-LINK_VM = $(LINK_LIB.CC)
-
-# rule for building precompiled header
-$(PRECOMPILED_HEADER):
- $(QUIETLY) echo $(LOG_INFO) Generating precompiled header $@
- $(QUIETLY) mkdir -p $(PRECOMPILED_HEADER_DIR)
- $(QUIETLY) rm -f $@
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -x c++-header $(PRECOMPILED_HEADER_SRC) -o $@ $(COMPILE_DONE)
-
-# making the library:
-
-ifneq ($(JVM_BASE_ADDR),)
-# By default shared library is linked at base address == 0. Modify the
-# linker script if JVM prefers a different base location. It can also be
-# implemented with 'prelink -r'. But 'prelink' is not (yet) available on
-# our build platform (AS-2.1).
-LD_SCRIPT = libjvm.so.lds
-$(LD_SCRIPT): $(LIBJVM_MAPFILE)
- $(QUIETLY) { \
- rm -rf $@; \
- $(LINK_VM) -Wl,--verbose $(LFLAGS_VM) 2>&1 | \
- sed -e '/^======/,/^======/!d' \
- -e '/^======/d' \
- -e 's/0\( + SIZEOF_HEADERS\)/$(JVM_BASE_ADDR)\1/' \
- > $@; \
- }
-LD_SCRIPT_FLAG = -Wl,-T,$(LD_SCRIPT)
-endif
-
-# With more recent Redhat releases (or the cutting edge version Fedora), if
-# SELinux is configured to be enabled, the runtime linker will fail to apply
-# the text relocation to libjvm.so considering that it is built as a non-PIC
-# DSO. To workaround that, we run chcon to libjvm.so after it is built. See
-# details in bug 6538311.
-$(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE) $(LD_SCRIPT)
- $(QUIETLY) { \
- echo $(LOG_INFO) Linking vm...; \
- $(LINK_LIB.CXX/PRE_HOOK) \
- $(LINK_VM) $(LD_SCRIPT_FLAG) \
- $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \
- $(LINK_LIB.CXX/POST_HOOK) \
- rm -f $@.1; ln -s $@ $@.1; \
- if [ \"$(CROSS_COMPILE_ARCH)\" = \"\" ] ; then \
- if [ -x /usr/sbin/selinuxenabled ] ; then \
- if /usr/sbin/selinuxenabled; then \
- if ! /usr/bin/chcon -t textrel_shlib_t $@; then \
- echo "ERROR: Cannot chcon $@"; \
- fi \
- fi \
- fi \
- fi \
- }
-
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -g $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
- $(RM) $(LIBJVM_DEBUGINFO)
- endif
-endif
-
-DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR)
-DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
-DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO)
-DEST_JVM_DIZ = $(DEST_SUBDIR)/$(LIBJVM_DIZ)
-
-install_jvm: $(LIBJVM)
- @echo "Copying $(LIBJVM) to $(DEST_JVM)"
- $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
- $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
- $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
- $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
-
-#----------------------------------------------------------------------
-# Other files
-
-# Signal interposition library
-include $(MAKEFILES_DIR)/jsig.make
-
-#----------------------------------------------------------------------
-
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) dtraceCheck
-
-install: install_jvm install_jsig
-
-.PHONY: default build install install_jvm $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/$(BUILDARCH).make $(HS_ALT_MAKE)/$(Platform_os_family)/makefiles/vm.make
diff --git a/hotspot/make/linux/makefiles/zero.make b/hotspot/make/linux/makefiles/zero.make
deleted file mode 100644
index 622710f4dfa..00000000000
--- a/hotspot/make/linux/makefiles/zero.make
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2009 Red Hat, Inc.
-# 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.
-#
-#
-
-# Setup for Zero (non-Shark) version of VM
-
-# Select which files to use (in top.make)
-TYPE = ZERO
-
-# Install libjvm.so, etc in in server directory.
-VM_SUBDIR = server
-
-# Disable trace for zero builds
-# NOTE: This is used for simple comparison with the new build system, and
-# should not be merged into mainline with build-infra.
-INCLUDE_TRACE := false
diff --git a/hotspot/make/linux/makefiles/zeroshark.make b/hotspot/make/linux/makefiles/zeroshark.make
deleted file mode 100644
index 4f9a70c98fa..00000000000
--- a/hotspot/make/linux/makefiles/zeroshark.make
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# Copyright 2007, 2008 Red Hat, Inc.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# 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.
-#
-#
-
-# Setup common to Zero (non-Shark) and Shark versions of VM
-
-# Some versions of llvm do not like -Wundef
-ifeq ($(USE_CLANG), true)
- WARNING_FLAGS += -Wno-undef
-endif
-
-# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
-# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
-OPT_CFLAGS/sharedRuntimeTrans.o = $(OPT_CFLAGS/NOOPT)
-
-# Specify that the CPU is little endian, if necessary
-ifeq ($(ZERO_ENDIANNESS), little)
- CFLAGS += -DVM_LITTLE_ENDIAN
-endif
-
-# Specify that the CPU is 64 bit, if necessary
-ifeq ($(ARCH_DATA_MODEL), 64)
- CFLAGS += -D_LP64=1
-endif
diff --git a/hotspot/make/linux/platform_aarch64 b/hotspot/make/linux/platform_aarch64
deleted file mode 100644
index f0bbf337c95..00000000000
--- a/hotspot/make/linux/platform_aarch64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = aarch64
-
-arch_model = aarch64
-
-os_arch = linux_aarch64
-
-os_arch_model = linux_aarch64
-
-lib_arch = aarch64
-
-compiler = gcc
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DAARCH64
diff --git a/hotspot/make/linux/platform_amd64 b/hotspot/make/linux/platform_amd64
deleted file mode 100644
index b612635958e..00000000000
--- a/hotspot/make/linux/platform_amd64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = linux_x86
-
-os_arch_model = linux_x86_64
-
-lib_arch = amd64
-
-compiler = gcc
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DAMD64
diff --git a/hotspot/make/linux/platform_amd64.suncc b/hotspot/make/linux/platform_amd64.suncc
deleted file mode 100644
index 4366549571d..00000000000
--- a/hotspot/make/linux/platform_amd64.suncc
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = linux
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = linux_x86
-
-os_arch_model = linux_x86_64
-
-lib_arch = amd64
-
-compiler = sparcWorks
-
-gnu_dis_arch = amd64
-
-sysdefs = -DLINUX -DSPARC_WORKS -D_GNU_SOURCE -DAMD64
diff --git a/hotspot/make/linux/platform_i486 b/hotspot/make/linux/platform_i486
deleted file mode 100644
index 610ac91ce79..00000000000
--- a/hotspot/make/linux/platform_i486
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = linux_x86
-
-os_arch_model = linux_x86_32
-
-lib_arch = i386
-
-compiler = gcc
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DIA32
diff --git a/hotspot/make/linux/platform_i486.suncc b/hotspot/make/linux/platform_i486.suncc
deleted file mode 100644
index 325a3febd96..00000000000
--- a/hotspot/make/linux/platform_i486.suncc
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = linux
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = linux_x86
-
-os_arch_model = linux_x86_32
-
-lib_arch = i386
-
-compiler = sparcWorks
-
-gnu_dis_arch = i386
-
-sysdefs = -DLINUX -DSPARC_WORKS -D_GNU_SOURCE -DIA32
diff --git a/hotspot/make/linux/platform_ia64 b/hotspot/make/linux/platform_ia64
deleted file mode 100644
index 7474e5bf923..00000000000
--- a/hotspot/make/linux/platform_ia64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = ia64
-
-os_arch = linux_ia64
-
-lib_arch = ia64
-
-compiler = gcc
-
-gnu_dis_arch = ia64
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DIA64 -DCC_INTERP
-
-mark_style = alignment
diff --git a/hotspot/make/linux/platform_ppc64 b/hotspot/make/linux/platform_ppc64
deleted file mode 100644
index 2fd79c4dae9..00000000000
--- a/hotspot/make/linux/platform_ppc64
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = linux
-
-arch = ppc
-
-arch_model = ppc_64
-
-os_arch = linux_ppc
-
-os_arch_model = linux_ppc_64
-
-lib_arch = ppc64
-
-compiler = gcc
-
-gnu_dis_arch = ppc64
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DPPC64
diff --git a/hotspot/make/linux/platform_sparc b/hotspot/make/linux/platform_sparc
deleted file mode 100644
index 8d9e3ee7201..00000000000
--- a/hotspot/make/linux/platform_sparc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = linux_sparc
-
-os_arch_model = linux_sparc
-
-lib_arch = sparc
-
-compiler = gcc
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/make/linux/platform_sparcv9 b/hotspot/make/linux/platform_sparcv9
deleted file mode 100644
index c9f8722c406..00000000000
--- a/hotspot/make/linux/platform_sparcv9
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = linux
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = linux_sparc
-
-os_arch_model = linux_sparc
-
-lib_arch = sparcv9
-
-compiler = gcc
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/make/linux/platform_zero.in b/hotspot/make/linux/platform_zero.in
deleted file mode 100644
index 404ad3f9b58..00000000000
--- a/hotspot/make/linux/platform_zero.in
+++ /dev/null
@@ -1,17 +0,0 @@
-os_family = linux
-
-arch = zero
-
-arch_model = zero
-
-os_arch = linux_zero
-
-os_arch_model = linux_zero
-
-lib_arch = zero
-
-compiler = gcc
-
-gnu_dis_arch = zero
-
-sysdefs = -DLINUX -D_GNU_SOURCE -DCC_INTERP -DZERO -D@ZERO_ARCHDEF@ -DZERO_LIBARCH=\"@ZERO_LIBARCH@\"
diff --git a/hotspot/makefiles/mapfiles/libjsig/mapfile-vers-solaris b/hotspot/make/mapfiles/libjsig/mapfile-vers-solaris
similarity index 100%
rename from hotspot/makefiles/mapfiles/libjsig/mapfile-vers-solaris
rename to hotspot/make/mapfiles/libjsig/mapfile-vers-solaris
diff --git a/hotspot/makefiles/mapfiles/libjvm_db/mapfile-vers b/hotspot/make/mapfiles/libjvm_db/mapfile-vers
similarity index 100%
rename from hotspot/makefiles/mapfiles/libjvm_db/mapfile-vers
rename to hotspot/make/mapfiles/libjvm_db/mapfile-vers
diff --git a/hotspot/makefiles/mapfiles/libjvm_dtrace/mapfile-vers b/hotspot/make/mapfiles/libjvm_dtrace/mapfile-vers
similarity index 100%
rename from hotspot/makefiles/mapfiles/libjvm_dtrace/mapfile-vers
rename to hotspot/make/mapfiles/libjvm_dtrace/mapfile-vers
diff --git a/hotspot/make/openjdk_distro b/hotspot/make/openjdk_distro
deleted file mode 100644
index 520b33d3457..00000000000
--- a/hotspot/make/openjdk_distro
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2007, 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.
-#
-
-#
-# This file format must remain compatible with both
-# GNU Makefile and Microsoft nmake formats.
-#
-
-# Don't put quotes (fail windows build).
-HOTSPOT_VM_DISTRO=OpenJDK
-COMPANY_NAME=
-PRODUCT_NAME=OpenJDK
diff --git a/hotspot/make/pic.make b/hotspot/make/pic.make
deleted file mode 100644
index 9211b5b70d6..00000000000
--- a/hotspot/make/pic.make
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# A list of object files built without the platform specific PIC flags, e.g.
-# -fPIC on linux. Performance measurements show that by compiling GC related
-# code, we could significantly reduce the GC pause time on 32 bit Linux/Unix
-# platforms. See 6454213 for more details.
-include $(GAMMADIR)/make/scm.make
-
-ifneq ($(OSNAME), windows)
- ifndef LP64
- PARTIAL_NONPIC=1
- endif
- PIC_ARCH = ppc arm
- ifneq ("$(filter $(PIC_ARCH),$(BUILDARCH))","")
- PARTIAL_NONPIC=0
- endif
- ifeq ($(PARTIAL_NONPIC),1)
- NONPIC_DIRS = memory oops gc
- NONPIC_DIRS := $(foreach dir,$(NONPIC_DIRS), $(GAMMADIR)/src/share/vm/$(dir))
- # Look for source files under NONPIC_DIRS
- NONPIC_FILES := $(foreach dir,$(NONPIC_DIRS),\
- $(shell find $(dir) \( $(SCM_DIRS) \) -prune -o \
- -name '*.cpp' -print))
- NONPIC_OBJ_FILES := $(notdir $(subst .cpp,.o,$(NONPIC_FILES)))
- endif
-endif
diff --git a/hotspot/make/scm.make b/hotspot/make/scm.make
deleted file mode 100644
index 011492d0516..00000000000
--- a/hotspot/make/scm.make
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# 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.
-#
-
-# Prune out all known SCM (Source Code Management) directories
-# so they will not appear on -I PATHs, when copying directory trees,
-# packaging up .jar files, etc. This applies to all workspaces.
-#
-SCM_DIRS = -name .hg -o -name .svn -o -name CVS -o -name RCS -o -name SCCS -o -name Codemgr_wsdata -o -name deleted_files
diff --git a/hotspot/make/share/makefiles/mapfile-vers b/hotspot/make/share/makefiles/mapfile-vers
deleted file mode 100644
index f7d08e50b98..00000000000
--- a/hotspot/make/share/makefiles/mapfile-vers
+++ /dev/null
@@ -1,180 +0,0 @@
- # JNI
- JNI_CreateJavaVM;
- JNI_GetCreatedJavaVMs;
- JNI_GetDefaultJavaVMInitArgs;
-
- # JVM
- JVM_ActiveProcessorCount;
- JVM_ArrayCopy;
- JVM_AssertionStatusDirectives;
- JVM_CallStackWalk;
- JVM_ClassDepth;
- JVM_ClassLoaderDepth;
- JVM_Clone;
- JVM_ConstantPoolGetClassAt;
- JVM_ConstantPoolGetClassAtIfLoaded;
- JVM_ConstantPoolGetClassRefIndexAt;
- JVM_ConstantPoolGetDoubleAt;
- JVM_ConstantPoolGetFieldAt;
- JVM_ConstantPoolGetFieldAtIfLoaded;
- JVM_ConstantPoolGetFloatAt;
- JVM_ConstantPoolGetIntAt;
- JVM_ConstantPoolGetLongAt;
- JVM_ConstantPoolGetMethodAt;
- JVM_ConstantPoolGetMethodAtIfLoaded;
- JVM_ConstantPoolGetMemberRefInfoAt;
- JVM_ConstantPoolGetNameAndTypeRefInfoAt;
- JVM_ConstantPoolGetNameAndTypeRefIndexAt;
- JVM_ConstantPoolGetSize;
- JVM_ConstantPoolGetStringAt;
- JVM_ConstantPoolGetTagAt;
- JVM_ConstantPoolGetUTF8At;
- JVM_CountStackFrames;
- JVM_CurrentClassLoader;
- JVM_CurrentLoadedClass;
- JVM_CurrentThread;
- JVM_CurrentTimeMillis;
- JVM_DefineClass;
- JVM_DefineClassWithSource;
- JVM_DesiredAssertionStatus;
- JVM_DoPrivileged;
- JVM_DumpAllStacks;
- JVM_DumpThreads;
- JVM_FillInStackTrace;
- JVM_FindClassFromCaller;
- JVM_FindClassFromClass;
- JVM_FindClassFromBootLoader;
- JVM_FindLibraryEntry;
- JVM_FindLoadedClass;
- JVM_FindPrimitiveClass;
- JVM_FindSignal;
- JVM_FreeMemory;
- JVM_GC;
- JVM_GetAllThreads;
- JVM_GetArrayElement;
- JVM_GetArrayLength;
- JVM_GetCPClassNameUTF;
- JVM_GetCPFieldClassNameUTF;
- JVM_GetCPFieldModifiers;
- JVM_GetCPFieldNameUTF;
- JVM_GetCPFieldSignatureUTF;
- JVM_GetCPMethodClassNameUTF;
- JVM_GetCPMethodModifiers;
- JVM_GetCPMethodNameUTF;
- JVM_GetCPMethodSignatureUTF;
- JVM_GetCallerClass;
- JVM_GetClassAccessFlags;
- JVM_GetClassAnnotations;
- JVM_GetClassCPEntriesCount;
- JVM_GetClassCPTypes;
- JVM_GetClassConstantPool;
- JVM_GetClassContext;
- JVM_GetClassDeclaredConstructors;
- JVM_GetClassDeclaredFields;
- JVM_GetClassDeclaredMethods;
- JVM_GetClassFieldsCount;
- JVM_GetClassInterfaces;
- JVM_GetClassMethodsCount;
- JVM_GetClassModifiers;
- JVM_GetClassName;
- JVM_GetClassNameUTF;
- JVM_GetClassSignature;
- JVM_GetClassSigners;
- JVM_GetClassTypeAnnotations;
- JVM_GetDeclaredClasses;
- JVM_GetDeclaringClass;
- JVM_GetSimpleBinaryName;
- JVM_GetEnclosingMethodInfo;
- JVM_GetFieldIxModifiers;
- JVM_GetFieldTypeAnnotations;
- JVM_GetInheritedAccessControlContext;
- JVM_GetInterfaceVersion;
- JVM_GetManagement;
- JVM_GetMethodIxArgsSize;
- JVM_GetMethodIxByteCode;
- JVM_GetMethodIxByteCodeLength;
- JVM_GetMethodIxExceptionIndexes;
- JVM_GetMethodIxExceptionTableEntry;
- JVM_GetMethodIxExceptionTableLength;
- JVM_GetMethodIxExceptionsCount;
- JVM_GetMethodIxLocalsCount;
- JVM_GetMethodIxMaxStack;
- JVM_GetMethodIxModifiers;
- JVM_GetMethodIxNameUTF;
- JVM_GetMethodIxSignatureUTF;
- JVM_GetMethodParameters;
- JVM_GetMethodTypeAnnotations;
- JVM_GetNanoTimeAdjustment;
- JVM_GetPrimitiveArrayElement;
- JVM_GetProtectionDomain;
- JVM_GetStackAccessControlContext;
- JVM_GetStackTraceElements;
- JVM_GetSystemPackage;
- JVM_GetSystemPackages;
- JVM_GetTemporaryDirectory;
- JVM_GetVersionInfo;
- JVM_GetVmArguments;
- JVM_Halt;
- JVM_HoldsLock;
- JVM_IHashCode;
- JVM_InitAgentProperties;
- JVM_InitProperties;
- JVM_InternString;
- JVM_Interrupt;
- JVM_InvokeMethod;
- JVM_IsArrayClass;
- JVM_IsConstructorIx;
- JVM_IsInterface;
- JVM_IsInterrupted;
- JVM_IsPrimitiveClass;
- JVM_IsSameClassPackage;
- JVM_IsSupportedJNIVersion;
- JVM_IsThreadAlive;
- JVM_IsVMGeneratedMethodIx;
- JVM_LatestUserDefinedLoader;
- JVM_LoadLibrary;
- JVM_MaxObjectInspectionAge;
- JVM_MaxMemory;
- JVM_MonitorNotify;
- JVM_MonitorNotifyAll;
- JVM_MonitorWait;
- JVM_MoreStackWalk;
- JVM_NanoTime;
- JVM_NativePath;
- JVM_NewArray;
- JVM_NewInstanceFromConstructor;
- JVM_NewMultiArray;
- JVM_RaiseSignal;
- JVM_RawMonitorCreate;
- JVM_RawMonitorDestroy;
- JVM_RawMonitorEnter;
- JVM_RawMonitorExit;
- JVM_RegisterSignal;
- JVM_ReleaseUTF;
- JVM_ResumeThread;
- JVM_SetArrayElement;
- JVM_SetClassSigners;
- JVM_SetNativeThreadName;
- JVM_SetPrimitiveArrayElement;
- JVM_SetThreadPriority;
- JVM_Sleep;
- JVM_StartThread;
- JVM_StopThread;
- JVM_SuspendThread;
- JVM_SupportsCX8;
- JVM_ToStackTraceElement;
- JVM_TotalMemory;
- JVM_UnloadLibrary;
- JVM_Yield;
-
- # Module related API's
- JVM_AddModuleExports;
- JVM_AddModuleExportsToAll;
- JVM_AddModuleExportsToAllUnnamed;
- JVM_AddModulePackage;
- JVM_AddReadsModule;
- JVM_CanReadModule;
- JVM_DefineModule;
- JVM_IsExportedToModule;
- JVM_SetBootLoaderUnnamedModule;
- JVM_GetModuleByPackageName;
diff --git a/hotspot/make/solaris/Makefile b/hotspot/make/solaris/Makefile
deleted file mode 100644
index 4a89bb3fcf6..00000000000
--- a/hotspot/make/solaris/Makefile
+++ /dev/null
@@ -1,286 +0,0 @@
-#
-# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile creates a build tree and lights off a build.
-# You can go back into the build tree and perform rebuilds or
-# incremental builds as desired. Be sure to reestablish
-# environment variable settings for LD_LIBRARY_PATH and JAVA_HOME.
-
-# The make process now relies on java and javac. These can be
-# specified either implicitly on the PATH, by setting the
-# (JDK-inherited) ALT_BOOTDIR environment variable to full path to a
-# JDK in which bin/java and bin/javac are present and working (e.g.,
-# /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited)
-# default BOOTDIR path value. Note that one of ALT_BOOTDIR
-# or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc.
-# from the PATH.
-
-ifeq ($(GAMMADIR),)
-include ../../make/defs.make
-else
-include $(GAMMADIR)/make/defs.make
-endif
-include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make
-
-ifndef CC_INTERP
- ifndef FORCE_TIERED
- FORCE_TIERED=1
- endif
-endif
-
-ifdef LP64
- ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","")
- _JUNK_ := $(shell echo >&2 \
- $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!")
- @exit 1
- endif
-endif
-
-# The following renders pathnames in generated Makefiles valid on
-# machines other than the machine containing the build tree.
-#
-# For example, let's say my build tree lives on /files12 on
-# exact.east.sun.com. This logic will cause GAMMADIR to begin with
-# /net/exact/files12/...
-#
-# We only do this on SunOS variants, for a couple of reasons:
-# * It is extremely rare that source trees exist on other systems
-# * It has been claimed that the Linux automounter is flakey, so
-# changing GAMMADIR in a way that exercises the automounter could
-# prove to be a source of unreliability in the build process.
-# Obviously, this Makefile is only relevant on SunOS boxes to begin
-# with, but the SunOS conditionalization will make it easier to
-# combine Makefiles in the future (assuming we ever do that).
-
-ifeq ($(OSNAME),solaris)
-
- # prepend current directory to relative pathnames.
- NEW_GAMMADIR := \
- $(shell echo $(GAMMADIR) | \
- sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \
- )
- unexport NEW_GAMMADIR
-
- # If NEW_GAMMADIR doesn't already start with "/net/":
- ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),)
- # prepend /net/$(HOST)
- # remove /net/$(HOST) if name already began with /home/
- # remove /net/$(HOST) if name already began with /java/
- # remove /net/$(HOST) if name already began with /lab/
- NEW_GAMMADIR := \
- $(shell echo $(NEW_GAMMADIR) | \
- sed -e "s=^\(.*\)=/net/$(HOST)\1=" \
- -e "s=^/net/$(HOST)/home/=/home/=" \
- -e "s=^/net/$(HOST)/java/=/java/=" \
- -e "s=^/net/$(HOST)/lab/=/lab/=" \
- )
- # Don't use the new value for GAMMADIR unless a file with the new
- # name actually exists.
- ifneq ($(wildcard $(NEW_GAMMADIR)),)
- GAMMADIR := $(NEW_GAMMADIR)
- endif
- endif
-
-endif
-
-
-# There is a (semi-) regular correspondence between make targets and actions:
-#
-# Target Tree Type Build Dir
-#
-# debug compiler2 __compiler2/debug
-# fastdebug compiler2 __compiler2/fastdebug
-# optimized compiler2 __compiler2/optimized
-# product compiler2 __compiler2/product
-#
-# debug1 compiler1 __compiler1/debug
-# fastdebug1 compiler1 __compiler1/fastdebug
-# optimized1 compiler1 __compiler1/optimized
-# product1 compiler1 __compiler1/product
-#
-# debugcore core __core/debug
-# fastdebugcore core __core/fastdebug
-# optimizedcore core __core/optimized
-# productcore core __core/product
-#
-# What you get with each target:
-#
-# debug* - debug compile with asserts enabled
-# fastdebug* - optimized compile, but with asserts enabled
-# optimized* - optimized compile, no asserts
-# product* - the shippable thing: optimized compile, no asserts, -DPRODUCT
-
-# This target list needs to be coordinated with the usage message
-# in the build.sh script:
-TARGETS = debug fastdebug optimized product
-
-SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs
-SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
-SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
-SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
-SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
-
-TARGETS_C2 = $(TARGETS)
-TARGETS_C1 = $(addsuffix 1,$(TARGETS))
-TARGETS_TIERED = $(addsuffix tiered,$(TARGETS))
-TARGETS_CORE = $(addsuffix core,$(TARGETS))
-
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-BUILDTREE_VARS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
-
-BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
-
-#-------------------------------------------------------------------------------
-
-# Could make everything by default, but that would take a while.
-all:
- @echo "Try '$(MAKE) ...' where is one or more of"
- @echo " $(TARGETS_C2)"
- @echo " $(TARGETS_C1)"
- @echo " $(TARGETS_CORE)"
-
-checks: check_os_version check_j2se_version
-
-# We do not want people accidentally building on old systems (e.g. Linux 2.2.x,
-# Solaris 2.5.1, 2.6).
-# Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok.
-
-SUPPORTED_OS_VERSION = 5.7 5.8 5.9 5.10 5.11
-OS_VERSION := $(shell uname -r)
-EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
-
-check_os_version:
-ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
- $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
-endif
-
-# jvmti.make requires XSLT (J2SE 1.4.x or newer):
-XSLT_CHECK = $(RUN.JAVAP) javax.xml.transform.TransformerFactory
-# If not found then fail fast.
-check_j2se_version:
- $(QUIETLY) if ! $(XSLT_CHECK) > /dev/null 2>&1; then \
- $(RUN.JAVA) -version; \
- echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \
- "to bootstrap this build" 1>&2; \
- exit 1; \
- fi
-
-$(SUBDIRS_TIERED): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered
-
-$(SUBDIRS_C2): $(BUILDTREE_MAKE)
-ifeq ($(FORCE_TIERED),1)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=tiered FORCE_TIERED=1
-else
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler2
-endif
-
-$(SUBDIRS_C1): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=compiler1
-
-$(SUBDIRS_CORE): $(BUILDTREE_MAKE)
- $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- +$(BUILDTREE) VARIANT=core
-
-# Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
-
-$(TARGETS_C2): $(SUBDIRS_C2)
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_TIERED): $(SUBDIRS_TIERED)
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_C1): $(SUBDIRS_C1)
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-$(TARGETS_CORE): $(SUBDIRS_CORE)
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
-ifdef INSTALL
- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
-endif
-
-# Just build the tree, and nothing else:
-tree: $(SUBDIRS_C2)
-tree1: $(SUBDIRS_C1)
-treecore: $(SUBDIRS_CORE)
-
-# Doc target. This is the same for all build options.
-# Hence create a docs directory beside ...$(ARCH)_[...]
-# We specify 'BUILD_FLAVOR=product' so that the proper
-# ENABLE_FULL_DEBUG_SYMBOLS value is used.
-docs: checks
- $(QUIETLY) mkdir -p $(SUBDIR_DOCS)
- $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) BUILD_FLAVOR=product jvmtidocs
-
-# Synonyms for win32-like targets.
-compiler2: debug product
-
-compiler1: debug1 product1
-
-core: debugcore productcore
-
-warn_jvmg_deprecated:
- echo "Warning: The jvmg target has been replaced with debug"
- echo "Warning: Please update your usage"
-
-jvmg: warn_jvmg_deprecated debug
-
-jvmg1: warn_jvmg_deprecated debug1
-
-jvmgcore: warn_jvmg_deprecated debugcore
-
-clean_docs:
- rm -rf $(SUBDIR_DOCS)
-
-clean_compiler1 clean_compiler2 clean_core:
- rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
-
-clean: clean_compiler2 clean_compiler1 clean_core clean_docs
-
-include $(GAMMADIR)/make/cscope.make
-
-#-------------------------------------------------------------------------------
-
-.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE)
-.PHONY: tree tree1 treecore
-.PHONY: all compiler1 compiler2 core
-.PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs
-.PHONY: checks check_os_version check_j2se_version
-
-.NOTPARALLEL:
diff --git a/hotspot/make/solaris/adlc_updater b/hotspot/make/solaris/adlc_updater
deleted file mode 100644
index 8b1df724e60..00000000000
--- a/hotspot/make/solaris/adlc_updater
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /bin/sh
-#
-# This file is used by adlc.make to selectively update generated
-# adlc files. Because source and target diretories are relative
-# paths, this file is copied to the target build directory before
-# use.
-#
-# adlc-updater
-#
-fix_lines() {
- # repair bare #line directives in $1 to refer to $2
- # and add an override of __FILE__ with just the basename on the
- # first line of the file.
- nawk < $1 > $1+ -v F2=$2 '
- BEGIN { print "#line 1 \"" F2 "\""; }
- /^#line 999999$/ {print "#line " (NR+1) " \"" F2 "\""; next}
- {print}
- '
- mv $1+ $1
-}
-fix_lines $2/$1 $1
-[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
-( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
diff --git a/hotspot/make/solaris/makefiles/adjust-mflags.sh b/hotspot/make/solaris/makefiles/adjust-mflags.sh
deleted file mode 100644
index 97bc02db7f1..00000000000
--- a/hotspot/make/solaris/makefiles/adjust-mflags.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#! /bin/sh
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# This script is used only from top.make.
-# The macro $(MFLAGS-adjusted) calls this script to
-# adjust the "-j" arguments to take into account
-# the HOTSPOT_BUILD_JOBS variable. The default
-# handling of the "-j" argument by gnumake does
-# not meet our needs, so we must adjust it ourselves.
-
-# This argument adjustment applies to two recursive
-# calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make.
-# One invokes adlc.make, and the other invokes vm.make.
-# The adjustment propagates the desired concurrency
-# level down to the sub-make (of the adlc or vm).
-# The default behavior of gnumake is to run all
-# sub-makes without concurrency ("-j1").
-
-# Also, we use a make variable rather than an explicit
-# "-j" argument to control this setting, so that
-# the concurrency setting (which must be tuned separately
-# for each MP system) can be set via an environment variable.
-# The recommended setting is 1.5x to 2x the number of available
-# CPUs on the MP system, which is large enough to keep the CPUs
-# busy (even though some jobs may be I/O bound) but not too large,
-# we may presume, to overflow the system's swap space.
-
-set -eu
-
-default_build_jobs=4
-
-case $# in
-[12]) true;;
-*) >&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;;
-esac
-
-MFLAGS=$1
-HOTSPOT_BUILD_JOBS=${2-}
-
-# Normalize any -jN argument to the form " -j${HBJ}"
-MFLAGS=`
- echo "$MFLAGS" \
- | sed '
- s/^-/ -/
- s/ -\([^ I][^ I]*\)j/ -\1 -j/
- s/ -j[0-9][0-9]*/ -j/
- s/ -j\([^ ]\)/ -j -\1/
- s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
- ' `
-
-case ${HOTSPOT_BUILD_JOBS} in \
-
-'') case ${MFLAGS} in
- *\ -j*)
- >&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile."
- >&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment."
- esac;;
-
-?*) case ${MFLAGS} in
- *\ -j*) true;;
- *) MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";;
- esac;;
-esac
-
-echo "${MFLAGS}"
diff --git a/hotspot/make/solaris/makefiles/adlc.make b/hotspot/make/solaris/makefiles/adlc.make
deleted file mode 100644
index 730a5a36eca..00000000000
--- a/hotspot/make/solaris/makefiles/adlc.make
+++ /dev/null
@@ -1,257 +0,0 @@
-#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (adlc.make) is included from the adlc.make in the
-# build directories.
-# It knows how to compile, link, and run the adlc.
-
-include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-# #########################################################################
-
-# OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make:
-GENERATED = ../generated
-OUTDIR = $(GENERATED)/adfiles
-
-ARCH = $(Platform_arch)
-OS = $(Platform_os_family)
-
-SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad
-
-ifeq ("${Platform_arch_model}", "${Platform_arch}")
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad)
-else
- SOURCES.AD = \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \
- $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad)
-endif
-
-EXEC = $(OUTDIR)/adlc
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor
-Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
-
-# set flags for adlc compilation
-CXXFLAGS = $(SYSDEFS) $(INCLUDES)
-
-# Force assertions on.
-CXXFLAGS += -DASSERT
-
-ifndef USE_GCC
- # We need libCstd.so for adlc
- CFLAGS += -library=Cstd -g
- LFLAGS += -library=Cstd -g
-endif
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-CFLAGS_WARN = +w
-# Compiler warnings are treated as errors
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
- WARNINGS_ARE_ERRORS ?= -xwe
-endif
-
-CFLAGS_WARN += $(WARNINGS_ARE_ERRORS)
-
-# When using compiler version 5.13 (Solaris Studio 12.4), calls to explicitly
-# instantiated template functions trigger this warning when +w is active.
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 513), 1)
- CFLAGS_WARN += -erroff=notemsource
-endif
-CFLAGS += $(CFLAGS_WARN)
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-# Enable the following CFLAGS addition if you need to compare the
-# built ELF objects.
-#
-# The -g option makes static data global and the "-Qoption ccfe
-# -xglobalstatic" option tells the compiler to not globalize static
-# data using a unique globalization prefix. Instead force the use
-# of a static globalization prefix based on the source filepath so
-# the objects from two identical compilations are the same.
-#CFLAGS += -Qoption ccfe -xglobalstatic
-endif # Platform_compiler == sparcWorks
-
-OBJECTNAMES = \
- adlparse.o \
- archDesc.o \
- arena.o \
- dfa.o \
- dict2.o \
- filebuff.o \
- forms.o \
- formsopt.o \
- formssel.o \
- main.o \
- adlc-opcodes.o \
- output_c.o \
- output_h.o \
-
-OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%)
-
-GENERATEDNAMES = \
- ad_$(Platform_arch_model).cpp \
- ad_$(Platform_arch_model).hpp \
- ad_$(Platform_arch_model)_clone.cpp \
- ad_$(Platform_arch_model)_expand.cpp \
- ad_$(Platform_arch_model)_format.cpp \
- ad_$(Platform_arch_model)_gen.cpp \
- ad_$(Platform_arch_model)_misc.cpp \
- ad_$(Platform_arch_model)_peephole.cpp \
- ad_$(Platform_arch_model)_pipeline.cpp \
- adGlobals_$(Platform_arch_model).hpp \
- dfa_$(Platform_arch_model).cpp \
-
-GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%)
-
-# #########################################################################
-
-all: $(EXEC)
-
-$(EXEC) : $(OBJECTS)
- @echo $(LOG_INFO) Making adlc
- $(QUIETLY) $(LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS)
-
-# Random dependencies:
-$(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp
-
-# The source files refer to ostream.h, which sparcworks calls iostream.h
-$(OBJECTS): ostream.h
-
-ostream.h :
- @echo >$@ '#include '
-
-dump:
- : OUTDIR=$(OUTDIR)
- : OBJECTS=$(OBJECTS)
- : products = $(GENERATEDFILES)
-
-all: $(GENERATEDFILES)
-
-$(GENERATEDFILES): refresh_adfiles
-
-# Get a unique temporary directory name, so multiple makes can run in parallel.
-# Note that product files are updated via "mv", which is atomic.
-TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$)
-
-# Debuggable by default
-CFLAGS += -g
-
-# Pass -D flags into ADLC.
-ADLCFLAGS += $(SYSDEFS)
-
-# Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO.
-ADLCFLAGS += -q -T
-
-# Normally, debugging is done directly on the ad_*.cpp files.
-# But -g will put #line directives in those files pointing back to .ad.
-ADLCFLAGS += -g
-
-ifdef LP64
-ADLCFLAGS += -D_LP64
-else
-ADLCFLAGS += -U_LP64
-endif
-
-#
-# adlc_updater is a simple sh script, under sccs control. It is
-# used to selectively update generated adlc files. This should
-# provide a nice compilation speed improvement.
-#
-ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS)
-ADLC_UPDATER = adlc_updater
-$(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER)
- $(QUIETLY) cp $< $@; chmod +x $@
-
-# This action refreshes all generated adlc files simultaneously.
-# The way it works is this:
-# 1) create a scratch directory to work in.
-# 2) if the current working directory does not have $(ADLC_UPDATER), copy it.
-# 3) run the compiled adlc executable. This will create new adlc files in the scratch directory.
-# 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files.
-# 5) If we actually updated any files, echo a notice.
-#
-refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER)
- @rm -rf $(TEMPDIR); mkdir $(TEMPDIR)
- $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \
- -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \
- || { rm -rf $(TEMPDIR); exit 1; }
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR)
- $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \
- || echo $(LOG_INFO) "Rescanned $(SOURCE.AD) but encountered no changes."
- $(QUIETLY) rm -rf $(TEMPDIR)
-
-
-# #########################################################################
-
-$(SOURCE.AD): $(SOURCES.AD)
- $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD)
-
-#PROCESS_AD_FILES = cat
-# Pass through #line directives, in case user enables -g option above:
-PROCESS_AD_FILES = awk '{ \
- if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \
- if (need_lineno && $$0 !~ /\/\//) \
- { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \
- print }'
-
-$(OUTDIR)/%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# Some object files are given a prefix, to disambiguate
-# them from objects of the same name built for the VM.
-$(OUTDIR)/adlc-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) -o $@ $< $(COMPILE_DONE)
-
-# #########################################################################
-
-clean :
- rm $(OBJECTS)
-
-cleanall :
- rm $(OBJECTS) $(EXEC)
-
-# #########################################################################
-
-.PHONY: all dump refresh_adfiles clean cleanall
diff --git a/hotspot/make/solaris/makefiles/amd64.make b/hotspot/make/solaris/makefiles/amd64.make
deleted file mode 100644
index 3eb6dee9b92..00000000000
--- a/hotspot/make/solaris/makefiles/amd64.make
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-#
-# Special case flags for compilers and compiler versions on amd64.
-#
-ifeq ("${Platform_compiler}", "sparcWorks")
-
-# Temporary until SS10 C++ compiler is fixed
-OPT_CFLAGS/generateOptoStub.o = -xO2
-# Temporary util SS12u1 C++ compiler is fixed
-OPT_CFLAGS/c1_LinearScan.o = -xO2
-
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/generateOptoStub.o += -g0 -xs
- OPT_CFLAGS/c1_LinearScan.o += -g0 -xs
-endif
-
-else
-
-ifeq ("${Platform_compiler}", "gcc")
-# gcc
-# The serviceability agent relies on frame pointer (%rbp) to walk thread stack
-CFLAGS += -fno-omit-frame-pointer
-
-else
-# error
-_JUNK2_ := $(shell echo >&2 \
- "*** ERROR: this compiler is not yet supported by this code base!")
- @exit 1
-endif
-endif
diff --git a/hotspot/make/solaris/makefiles/build_vm_def.sh b/hotspot/make/solaris/makefiles/build_vm_def.sh
deleted file mode 100644
index 7f86953ddf3..00000000000
--- a/hotspot/make/solaris/makefiles/build_vm_def.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-/usr/ccs/bin/nm -p $* \
- | awk '{
- if ($2 == "U") next
- if ($3 ~ /^__1c.*__vtbl_$/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";"
- if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";"
- if ($3 ~ /^__1cJArgumentsRSharedArchivePath_$/) print "\t" $3 ";"
- }' \
- | sort -u
diff --git a/hotspot/make/solaris/makefiles/buildtree.make b/hotspot/make/solaris/makefiles/buildtree.make
deleted file mode 100644
index 905eaa06ec5..00000000000
--- a/hotspot/make/solaris/makefiles/buildtree.make
+++ /dev/null
@@ -1,354 +0,0 @@
-#
-# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Usage:
-#
-# $(MAKE) -f buildtree.make ARCH=arch BUILDARCH=buildarch LIBARCH=libarch
-# GAMMADIR=dir OS_FAMILY=os VARIANT=variant
-#
-# The macros ARCH, GAMMADIR, OS_FAMILY and VARIANT must be defined in the
-# environment or on the command-line:
-#
-# ARCH - sparc, i486, ... HotSpot cpu and os_cpu source directory
-# BUILDARCH - build directory
-# LIBARCH - the corresponding directory in JDK/JRE
-# GAMMADIR - top of workspace
-# OS_FAMILY - operating system
-# VARIANT - core, compiler1, compiler2, or tiered
-# VERSION_STRING - the JDK version string as specified by JEP-223
-# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
-#
-# Builds the directory trees with makefiles plus some convenience files in
-# each directory:
-#
-# Makefile - for "make foo"
-# flags.make - with macro settings
-# vm.make - to support making "$(MAKE) -v vm.make" in makefiles
-# adlc.make -
-# trace.make - generate tracing event and type definitions
-# jvmti.make - generate JVMTI bindings from the spec (JSR-163)
-#
-# The makefiles are split this way so that "make foo" will run faster by not
-# having to read the dependency files for the vm.
-
--include $(SPEC)
-include $(GAMMADIR)/make/scm.make
-include $(GAMMADIR)/make/defs.make
-include $(GAMMADIR)/make/altsrc.make
-
-
-# 'gmake MAKE_VERBOSE=y' or 'gmake QUIETLY=' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-
-### maye ARCH_XXX instead?
-ifdef USE_GCC
-PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).gcc
-GCC_LIB = /usr/local/lib
-else
-PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
-GCC_LIB =
-endif
-
-ifdef FORCE_TIERED
-ifeq ($(VARIANT),tiered)
-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_compiler2
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT)
-endif
-else
-PLATFORM_DIR = $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT)
-endif
-
-#
-# We do two levels of exclusion in the shared directory.
-# TOPLEVEL excludes are pruned, they are not recursively searched,
-# but lower level directories can be named without fear of collision.
-# ALWAYS excludes are excluded at any level in the directory tree.
-#
-
-ALWAYS_EXCLUDE_DIRS = $(SCM_DIRS)
-
-ifeq ($(VARIANT),tiered)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name agent
-else
-ifeq ($(VARIANT),compiler2)
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name c1 -o -name agent
-else
-# compiler1 and core use the same exclude list
-TOPLEVEL_EXCLUDE_DIRS = $(ALWAYS_EXCLUDE_DIRS) -o -name adlc -o -name opto -o -name libadt -o -name agent
-endif
-endif
-
-# Get things from the platform file.
-COMPILER = $(shell sed -n 's/^compiler[ ]*=[ ]*//p' $(PLATFORM_FILE))
-
-SIMPLE_DIRS = \
- $(PLATFORM_DIR)/generated/dependencies \
- $(PLATFORM_DIR)/generated/adfiles \
- $(PLATFORM_DIR)/generated/jvmtifiles \
- $(PLATFORM_DIR)/generated/tracefiles
-
-TARGETS = debug fastdebug optimized product
-SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
-
-# For dependencies and recursive makes.
-BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
-
-BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make dtrace.make
-
-BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
- ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
-
-# Define variables to be set in flags.make.
-# Default values are set in make/defs.make.
-
-# Set BUILD_USER from system-dependent hints: $LOGNAME, $(whoami)
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
-endif
-ifndef HOTSPOT_BUILD_USER
- HOTSPOT_BUILD_USER := $(shell whoami)
-endif
-# Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
-# or make/hotspot_distro.
-ifndef HOTSPOT_VM_DISTRO
- ifeq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- include $(GAMMADIR)/make/hotspot_distro
- else
- include $(GAMMADIR)/make/openjdk_distro
- endif
-endif
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-ifndef OPENJDK
- ifneq ($(call if-has-altsrc,$(HS_COMMON_SRC)/,true,false),true)
- OPENJDK=true
- endif
-endif
-
-BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
-
-BUILDTREE = \
- $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
-
-BUILDTREE_COMMENT = echo "\# Generated by $(BUILDTREE_MAKE)"
-
-all: $(SUBMAKE_DIRS)
-
-# Run make in each subdirectory recursively.
-$(SUBMAKE_DIRS): $(SIMPLE_DIRS) FORCE
- $(QUIETLY) [ -d $@ ] || { mkdir -p $@; }
- +$(QUIETLY) cd $@ && $(BUILDTREE) TARGET=$(@F)
- $(QUIETLY) touch $@
-
-$(SIMPLE_DIRS):
- $(QUIETLY) mkdir -p $@
-
-# Convenience macro which takes a source relative path, applies $(1) to the
-# absolute path, and then replaces $(GAMMADIR) in the result with a
-# 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 $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "Platform_file = $(PLATFORM_FILE)" | sed 's|$(GAMMADIR)|$$(GAMMADIR)|'; \
- sed -n '/=/s/^ */Platform_/p' < $(PLATFORM_FILE); \
- echo; \
- echo "GAMMADIR = $(GAMMADIR)"; \
- echo "SYSDEFS = \$$(Platform_sysdefs)"; \
- echo "SRCARCH = $(ARCH)"; \
- echo "BUILDARCH = $(BUILDARCH)"; \
- echo "LIBARCH = $(LIBARCH)"; \
- echo "TARGET = $(TARGET)"; \
- echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
- echo "VERSION_STRING = $(VERSION_STRING)"; \
- 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)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_\$$(Platform_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_ARCH_MODEL_\$$(Platform_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_\$$(Platform_os_arch)"; \
- echo "TARGET_DEFINES += -DTARGET_OS_ARCH_MODEL_\$$(Platform_os_arch_model)"; \
- echo "TARGET_DEFINES += -DTARGET_COMPILER_\$$(Platform_compiler)"; \
- echo "CFLAGS += \$$(TARGET_DEFINES)"; \
- echo; \
- echo "Src_Dirs_V = \\"; \
- sed 's/$$/ \\/;s|$(GAMMADIR)|$$(GAMMADIR)|' ../shared_dirs.lst; \
- echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- echo; \
- echo "Src_Dirs_I = \\"; \
- echo "$(call gamma-path,altsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/prims) \\"; \
- echo "$(call gamma-path,altsrc,share/vm) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm) \\"; \
- echo "$(call gamma-path,altsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,commonsrc,share/vm/precompiled) \\"; \
- echo "$(call gamma-path,altsrc,cpu/$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,cpu/$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os_cpu/$(OS_FAMILY)_$(ARCH)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/$(OS_FAMILY)/vm) \\"; \
- echo "$(call gamma-path,altsrc,os/posix/vm) \\"; \
- echo "$(call gamma-path,commonsrc,os/posix/vm)"; \
- [ -n "$(CFLAGS_BROWSE)" ] && \
- echo && echo "CFLAGS_BROWSE = $(CFLAGS_BROWSE)"; \
- [ -n "$(ENABLE_FULL_DEBUG_SYMBOLS)" ] && \
- echo && echo "ENABLE_FULL_DEBUG_SYMBOLS = $(ENABLE_FULL_DEBUG_SYMBOLS)"; \
- [ -n "$(OBJCOPY)" ] && \
- echo && echo "OBJCOPY = $(OBJCOPY)"; \
- [ -n "$(STRIP_POLICY)" ] && \
- echo && echo "STRIP_POLICY = $(STRIP_POLICY)"; \
- [ -n "$(ZIP_DEBUGINFO_FILES)" ] && \
- echo && echo "ZIP_DEBUGINFO_FILES = $(ZIP_DEBUGINFO_FILES)"; \
- [ -n "$(ZIPEXE)" ] && \
- echo && echo "ZIPEXE = $(ZIPEXE)"; \
- [ -n "$(HS_ALT_MAKE)" ] && \
- echo && echo "HS_ALT_MAKE = $(HS_ALT_MAKE)"; \
- [ -n "$(HOTSPOT_EXTRA_SYSDEFS)" ] && \
- echo && \
- echo "HOTSPOT_EXTRA_SYSDEFS\$$(HOTSPOT_EXTRA_SYSDEFS) = $(HOTSPOT_EXTRA_SYSDEFS)" && \
- echo "SYSDEFS += \$$(HOTSPOT_EXTRA_SYSDEFS)"; \
- echo; \
- [ -n "$(SPEC)" ] && \
- echo "include $(SPEC)"; \
- echo "CP ?= cp"; \
- echo "MV ?= mv"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(VARIANT).make"; \
- echo "include \$$(GAMMADIR)/make/excludeSrc.make"; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(COMPILER).make"; \
- ) > $@
-
-flags_vm.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(TARGET).make"; \
- ) > $@
-
-../shared_dirs.lst: $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
- @echo $(LOG_INFO) Creating directory list $@
- $(QUIETLY) if [ -d $(HS_ALT_SRC)/share/vm ]; then \
- find $(HS_ALT_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@; \
- fi;
- $(QUIETLY) find $(HS_COMMON_SRC)/share/vm/* -prune \
- -type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
- \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; >> $@
-
-Makefile: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/top.make"; \
- ) > $@
-
-vm.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo include flags_vm.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-adlc.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-jvmti.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-trace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-dtrace.make: $(BUILDTREE_MAKE)
- @echo $(LOG_INFO) Creating $@ ...
- $(QUIETLY) ( \
- $(BUILDTREE_COMMENT); \
- echo; \
- echo include flags.make; \
- echo; \
- echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
- ) > $@
-
-FORCE:
-
-.PHONY: all FORCE
-
-.NOTPARALLEL:
diff --git a/hotspot/make/solaris/makefiles/compiler1.make b/hotspot/make/solaris/makefiles/compiler1.make
deleted file mode 100644
index d303bfc1ca4..00000000000
--- a/hotspot/make/solaris/makefiles/compiler1.make
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making client version of VM
-
-TYPE=COMPILER1
-
-VM_SUBDIR = client
-
-# We don't support the JVMCI in a client VM.
-INCLUDE_JVMCI := false
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/solaris/makefiles/compiler2.make b/hotspot/make/solaris/makefiles/compiler2.make
deleted file mode 100644
index c881079882e..00000000000
--- a/hotspot/make/solaris/makefiles/compiler2.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making server version of VM
-
-TYPE=COMPILER2
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/solaris/makefiles/core.make b/hotspot/make/solaris/makefiles/core.make
deleted file mode 100644
index 64400556fcc..00000000000
--- a/hotspot/make/solaris/makefiles/core.make
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 1998, 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.
-#
-#
-
-# Sets make macros for making core version of VM
-
-# Select which files to use (in top.make)
-TYPE=CORE
-
-# There is no "core" directory in JDK. Install core build in server directory.
-VM_SUBDIR = server
-
-# Note: macros.hpp defines CORE
diff --git a/hotspot/make/solaris/makefiles/debug.make b/hotspot/make/solaris/makefiles/debug.make
deleted file mode 100644
index 3fba8e1239d..00000000000
--- a/hotspot/make/solaris/makefiles/debug.make
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(DEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-
-ifeq ($(COMPILER_REV_NUMERIC),508)
- # SS11 SEGV when compiling with -g and -xarch=v8, using different backend
- DEBUG_CFLAGS/compileBroker.o = $(DEBUG_CFLAGS) -xO0
- DEBUG_CFLAGS/jvmtiTagMap.o = $(DEBUG_CFLAGS) -xO0
-endif
-endif
-
-# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
-CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfiles
-MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers \
- $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-debug
-
-# This mapfile is only needed when compiling with dtrace support,
-# and mustn't be otherwise.
-MAPFILE_DTRACE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-$(TYPE)
-
-VERSION = debug
-SYSDEFS += -DASSERT
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/solaris/makefiles/defs.make b/hotspot/make/solaris/makefiles/defs.make
deleted file mode 100644
index f6b913ab460..00000000000
--- a/hotspot/make/solaris/makefiles/defs.make
+++ /dev/null
@@ -1,279 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The common definitions for hotspot solaris builds.
-# Include the top level defs.make under make directory instead of this one.
-# This file is included into make/defs.make.
-
-define print_info
- ifneq ($$(LOG_LEVEL), warn)
- $$(shell echo >&2 "INFO: $1")
- endif
-endef
-
-# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
-SLASH_JAVA ?= /java
-ARCH:=$(shell uname -p)
-PATH_SEP = :
-ifeq ($(LP64), 1)
- ARCH_DATA_MODEL=64
-else
- ARCH_DATA_MODEL=32
-endif
-
-ifeq ($(ARCH),sparc)
- ifeq ($(ARCH_DATA_MODEL), 64)
- MAKE_ARGS += LP64=1
- PLATFORM=solaris-sparcv9
- VM_PLATFORM=solaris_sparcv9
- else
- PLATFORM=solaris-sparc
- VM_PLATFORM=solaris_sparc
- endif
- HS_ARCH=sparc
-else
- ifeq ($(ARCH_DATA_MODEL), 64)
- MAKE_ARGS += LP64=1
- PLATFORM=solaris-amd64
- VM_PLATFORM=solaris_amd64
- HS_ARCH=x86
- else
- PLATFORM=solaris-i586
- VM_PLATFORM=solaris_i486
- HS_ARCH=x86
- endif
-endif
-
-# On 32 bit solaris we build server and client, on 64 bit just server.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ARCH_DATA_MODEL), 32)
- JVM_VARIANTS:=client,server
- JVM_VARIANT_CLIENT:=true
- JVM_VARIANT_SERVER:=true
- else
- JVM_VARIANTS:=server
- JVM_VARIANT_SERVER:=true
- endif
-endif
-
-# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-# builds is enabled with debug info files ZIP'ed to save space. For
-# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-# debug build without debug info isn't very useful.
-# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-#
-# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-# disabled for a BUILD_FLAVOR == product build.
-#
-# Note: Use of a different variable name for the FDS override option
-# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-# in options via environment variables, use of distinct variables
-# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-# product build, the FULL_DEBUG_SYMBOLS environment variable will be
-# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-# the same variable name is used, then different values can be picked
-# up by different parts of the build. Just to be clear, we only need
-# two variable names because the incoming option value can be
-# overridden in some situations, e.g., a BUILD_FLAVOR != product
-# build.
-
-# Due to the multiple sub-make processes that occur this logic gets
-# executed multiple times. We reduce the noise by at least checking that
-# BUILD_FLAVOR has been set.
-ifneq ($(BUILD_FLAVOR),)
- ifeq ($(BUILD_FLAVOR), product)
- FULL_DEBUG_SYMBOLS ?= 1
- ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
- else
- # debug variants always get Full Debug Symbols (if available)
- ENABLE_FULL_DEBUG_SYMBOLS = 1
- endif
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # Default OBJCOPY comes from the SUNWbinutils package:
- DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
- OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
- ifneq ($(ALT_OBJCOPY),)
- $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
- OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
- endif
-
- ifneq ($(OBJCOPY),)
- # OBJCOPY version check:
- # - version number is last blank separate word on first line
- # - version number formats that have been seen:
- # - .
- # - ..
- #
- # Full Debug Symbols on Solaris needs version 2.21.1 or newer.
- #
- OBJCOPY_VERS_CHK := $(shell \
- $(OBJCOPY) --version \
- | sed -n \
- -e 's/.* //' \
- -e '/^[01]\./b bad' \
- -e '/^2\./{' \
- -e ' s/^2\.//' \
- -e ' /^[0-9]$$/b bad' \
- -e ' /^[0-9]\./b bad' \
- -e ' /^1[0-9]$$/b bad' \
- -e ' /^1[0-9]\./b bad' \
- -e ' /^20\./b bad' \
- -e ' /^21\.0$$/b bad' \
- -e ' /^21\.0\./b bad' \
- -e '}' \
- -e ':good' \
- -e 's/.*/VALID_VERSION/p' \
- -e 'q' \
- -e ':bad' \
- -e 's/.*/BAD_VERSION/p' \
- -e 'q' \
- )
- ifeq ($(OBJCOPY_VERS_CHK),BAD_VERSION)
- _JUNK_ := $(shell \
- echo >&2 "WARNING: $(OBJCOPY) --version info:"; \
- $(OBJCOPY) --version | sed -n -e 's/^/WARNING: /p' -e 'q' >&2; \
- echo >&2 "WARNING: an objcopy version of 2.21.1 or newer" \
- "is needed to create valid .debuginfo files."; \
- echo >&2 "WARNING: ignoring above objcopy command."; \
- echo >&2 "WARNING: patch 149063-01 or newer contains the" \
- "correct Solaris 10 SPARC version."; \
- echo >&2 "WARNING: patch 149064-01 or newer contains the" \
- "correct Solaris 10 X86 version."; \
- echo >&2 "WARNING: Solaris 11 Update 1 contains the" \
- "correct version."; \
- )
- OBJCOPY=
- endif
- endif
-
- ifeq ($(OBJCOPY),)
- $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files."))
- ENABLE_FULL_DEBUG_SYMBOLS=0
- $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
- else
- $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
-
- # Library stripping policies for .debuginfo configs:
- # all_strip - strips everything from the library
- # min_strip - strips most stuff from the library; leaves minimum symbols
- # no_strip - does not strip the library at all
- #
- # Oracle security policy requires "all_strip". A waiver was granted on
- # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
- #
- # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
- #
- STRIP_POLICY ?= min_strip
-
- $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
- ZIP_DEBUGINFO_FILES ?= 1
-
- $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
- endif
- endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-endif # BUILD_FLAVOR
-
-JDK_INCLUDE_SUBDIR=solaris
-
-# Library suffix
-LIBRARY_SUFFIX=so
-
-EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
-
-# client and server subdirectories have symbolic links to ../libjsig.$(LIBRARY_SUFFIX)
-EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.diz
- else
- EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.debuginfo
- endif
-endif
-
-EXPORT_SERVER_DIR = $(EXPORT_LIB_ARCH_DIR)/server
-EXPORT_CLIENT_DIR = $(EXPORT_LIB_ARCH_DIR)/client
-
-ifeq ($(JVM_VARIANT_SERVER),true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
- endif
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.diz
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.diz
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.diz
- endif
- else
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.debuginfo
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.debuginfo
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.debuginfo
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.debuginfo
- endif
- endif
- endif
-endif
-ifeq ($(JVM_VARIANT_CLIENT),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
- endif
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.diz
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.diz
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.diz
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.diz
- endif
- else
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.debuginfo
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.debuginfo
- ifeq ($(ARCH_DATA_MODEL),32)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.debuginfo
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.debuginfo
- endif
- endif
- endif
-endif
diff --git a/hotspot/make/solaris/makefiles/dtrace.make b/hotspot/make/solaris/makefiles/dtrace.make
deleted file mode 100644
index 2c65059a213..00000000000
--- a/hotspot/make/solaris/makefiles/dtrace.make
+++ /dev/null
@@ -1,387 +0,0 @@
-#
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build jvm_db/dtrace, used by vm.make
-
-# We build libjvm_dtrace/libjvm_db/dtrace for COMPILER1 and COMPILER2
-# but not for CORE configuration.
-
-ifneq ("${TYPE}", "CORE")
-
-ifdef USE_GCC
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled for gcc builds"
-
-else
-
-DtraceOutDir = $(GENERATED)/dtracefiles
-
-JVM_DB = libjvm_db
-LIBJVM_DB = libjvm_db.so
-
-LIBJVM_DB_DEBUGINFO = libjvm_db.debuginfo
-LIBJVM_DB_DIZ = libjvm_db.diz
-
-JVM_DTRACE = jvm_dtrace
-LIBJVM_DTRACE = libjvm_dtrace.so
-
-LIBJVM_DTRACE_DEBUGINFO = libjvm_dtrace.debuginfo
-LIBJVM_DTRACE_DIZ = libjvm_dtrace.diz
-
-JVMOFFS = JvmOffsets
-JVMOFFS.o = $(JVMOFFS).o
-GENOFFS = generate$(JVMOFFS)
-
-DTRACE_SRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/dtrace
-DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
-DTRACE = dtrace
-DTRACE.o = $(DTRACE).o
-DTRACE_JHELPER = dtrace_jhelper
-DTRACE_JHELPER.o = $(DTRACE_JHELPER).o
-
-# to remove '-g' option which causes link problems
-# also '-z nodefs' is used as workaround
-GENOFFS_CFLAGS = $(shell echo $(CFLAGS) | sed -e 's/ -g / /g' -e 's/ -g0 / /g';)
-
-ifdef LP64
-DTRACE_OPTS = -64 -D_LP64
-endif
-
-# making libjvm_db
-
-# Use mapfile with libjvm_db.so
-LIBJVM_DB_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jvm_db
-LFLAGS_JVM_DB += $(MAPFLAG:FILENAME=$(LIBJVM_DB_MAPFILE))
-
-# Use mapfile with libjvm_dtrace.so
-LIBJVM_DTRACE_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jvm_dtrace
-LFLAGS_JVM_DTRACE += $(MAPFLAG:FILENAME=$(LIBJVM_DTRACE_MAPFILE))
-
-ifdef USE_GCC
-LFLAGS_JVM_DB += -D_REENTRANT $(PICFLAG)
-LFLAGS_JVM_DTRACE += -D_REENTRANT $(PICFLAG)
-else
-LFLAGS_JVM_DB += -mt $(PICFLAG) -xnolib
-LFLAGS_JVM_DTRACE += -mt $(PICFLAG) -xnolib -ldl
-endif
-
-ISA = $(subst i386,i486,$(shell isainfo -n))
-
-# Making 64/libjvm_db.so: 64-bit version of libjvm_db.so which handles 32-bit libjvm.so
-ifneq ("${ISA}","${BUILDARCH}")
-
-XLIBJVM_DIR = 64
-XLIBJVM_DB = $(XLIBJVM_DIR)/$(LIBJVM_DB)
-XLIBJVM_DTRACE = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE)
-
-XLIBJVM_DB_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DB_DEBUGINFO)
-XLIBJVM_DB_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DB_DIZ)
-XLIBJVM_DTRACE_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DEBUGINFO)
-XLIBJVM_DTRACE_DIZ = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DIZ)
-
-$(XLIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS).h $(LIBJVM_DB_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
- $(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. -I$(GENERATED) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -lc
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DB_DEBUGINFO)
-# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
-# in the link name:
- ( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB) )
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
-# in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) )
- $(RM) $(XLIBJVM_DB_DEBUGINFO)
- endif
-endif
-
-$(XLIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
- $(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. $(EXTRA_CFLAGS) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c \
- $(EXTRA_LDFLAGS) -lc -lthread -ldoor
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DTRACE_DEBUGINFO)
-# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
-# in the link name:
- ( cd $(XLIBJVM_DIR) && $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE) )
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
-# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
-# in the archived name:
- ( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO))
- $(RM) $(XLIBJVM_DTRACE_DEBUGINFO)
- endif
-endif
-
-endif # ifneq ("${ISA}","${BUILDARCH}")
-
-ifdef USE_GCC
-LFLAGS_GENOFFS += -D_REENTRANT
-else
-LFLAGS_GENOFFS += -mt -xnolib -norunpath
-endif
-
-lib$(GENOFFS).so: $(DTRACE_SRCDIR)/$(GENOFFS).cpp $(DTRACE_SRCDIR)/$(GENOFFS).h \
- $(LIBJVM.o)
- $(QUIETLY) $(CXX) $(CXXFLAGS) $(GENOFFS_CFLAGS) $(SHARED_FLAG) $(PICFLAG) \
- $(LFLAGS_GENOFFS) -o $@ $(DTRACE_SRCDIR)/$(GENOFFS).cpp -lc
-
-$(GENOFFS): $(DTRACE_SRCDIR)/$(GENOFFS)Main.c lib$(GENOFFS).so
- $(QUIETLY) $(LINK.CXX) -z nodefs -o $@ $(DTRACE_SRCDIR)/$(GENOFFS)Main.c \
- ./lib$(GENOFFS).so
-
-CONDITIONALLY_UPDATE_JVMOFFS_TARGET = \
- if cmp -s $@ $@.tmp; then \
- rm -f $@.tmp; \
- else \
- rm -f $@ && mv $@.tmp $@ && echo Updated $@; \
- fi
-
-# $@.tmp is created first to avoid an empty $(JVMOFFS).h if an error occurs.
-$(JVMOFFS).h: $(GENOFFS)
- $(QUIETLY) LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ./$(GENOFFS) -header > $@.tmp
- $(QUIETLY) $(CONDITIONALLY_UPDATE_JVMOFFS_TARGET)
-
-$(JVMOFFS)Index.h: $(GENOFFS)
- $(QUIETLY) LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ./$(GENOFFS) -index > $@.tmp
- $(QUIETLY) $(CONDITIONALLY_UPDATE_JVMOFFS_TARGET)
-
-$(JVMOFFS).cpp: $(GENOFFS) $(JVMOFFS).h $(JVMOFFS)Index.h
- $(QUIETLY) LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ./$(GENOFFS) -table > $@.tmp
- $(QUIETLY) $(CONDITIONALLY_UPDATE_JVMOFFS_TARGET)
-
-$(JVMOFFS.o): $(JVMOFFS).h $(JVMOFFS).cpp
- $(QUIETLY) $(CXX) -c -I. -o $@ $(ARCHFLAG) -D$(TYPE) $(JVMOFFS).cpp
-
-$(LIBJVM_DB): $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS.o) $(XLIBJVM_DB) $(LIBJVM_DB_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. -I$(GENERATED) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -lc
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DB_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO)
- $(RM) $(LIBJVM_DB_DEBUGINFO)
- endif
-endif
-
-$(LIBJVM_DTRACE): $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(XLIBJVM_DTRACE) $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)
- @echo $(LOG_INFO) Making $@
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) -D$(TYPE) -I. $(EXTRA_CFLAGS) \
- $(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c \
- $(EXTRA_LDFLAGS) -lc -lthread -ldoor
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DTRACE_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO)
- $(RM) $(LIBJVM_DTRACE_DEBUGINFO)
- endif
-endif
-
-$(DTRACE).d: $(DTRACE_COMMON_SRCDIR)/hotspot.d $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d \
- $(DTRACE_COMMON_SRCDIR)/hs_private.d
- $(QUIETLY) cat $^ > $@
-
-$(DTRACE_JHELPER).d: $(DTRACE_SRCDIR)/jhelper.d
- $(QUIETLY) cat $^ > $@
-
-DTraced_Files = ciEnv.o \
- classLoadingService.o \
- compileBroker.o \
- hashtable.o \
- instanceKlass.o \
- java.o \
- jni.o \
- jvm.o \
- memoryManager.o \
- nmethod.o \
- objectMonitor.o \
- runtimeService.o \
- sharedRuntime.o \
- synchronizer.o \
- thread.o \
- unsafe.o \
- vmThread.o \
- vmCMSOperations.o \
- vmPSOperations.o \
- vmGCOperations.o \
-
-# Dtrace is available, so we build $(DTRACE.o)
-$(DTRACE.o): $(DTRACE).d $(DTraced_Files)
- @echo $(LOG_INFO) Compiling $(DTRACE).d
-
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \
- $(sort $(DTraced_Files)) ||\
- STATUS=$$?;\
- if [ x"$$STATUS" = x"1" ]; then \
- if [ x`uname -r` = x"5.10" -a \
- x`uname -p` = x"sparc" ]; then\
- echo "*****************************************************************";\
- echo "* If you are building server compiler, and the error message is ";\
- echo "* \"incorrect ELF machine type...\", you have run into solaris bug ";\
- echo "* 6213962, \"dtrace -G doesn't work on sparcv8+ object files\".";\
- echo "* Either patch/upgrade your system (>= S10u1_15), or set the ";\
- echo "* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable ";\
- echo "* dtrace probes for this build.";\
- echo "*****************************************************************";\
- elif [ x`uname -r` = x"5.10" ]; then\
- echo "*****************************************************************";\
- echo "* If you are seeing 'syntax error near \"umpiconninfo_t\"' on Solaris";\
- echo "* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, ";\
- echo "* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES";\
- echo "* to disable dtrace probes for this build.";\
- echo "*****************************************************************";\
- else \
- echo "*****************************************************************";\
- echo "* If you cannot fix dtrace build issues, try to ";\
- echo "* set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES";\
- echo "* to disable dtrace probes for this build.";\
- echo "*****************************************************************";\
- fi; \
- fi;\
- exit $$STATUS
- # Since some DTraced_Files are in LIBJVM.o and they are touched by this
- # command, and libgenerateJvmOffsets.so depends on LIBJVM.o, 'make' will
- # think it needs to rebuild libgenerateJvmOffsets.so and thus JvmOffsets*
- # files, but it doesn't, so we touch the necessary files to prevent later
- # recompilation. Note: we only touch the necessary files if they already
- # exist in order to close a race where an empty file can be created
- # before the real build rule is executed.
- # But, we can't touch the *.h files: This rule depends
- # on them, and that would cause an infinite cycle of rebuilding.
- # Neither the *.h or *.ccp files need to be touched, since they have
- # rules which do not update them when the generator file has not
- # changed their contents.
- $(QUIETLY) if [ -f lib$(GENOFFS).so ]; then touch lib$(GENOFFS).so; fi
- $(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi
- $(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi
-
-
-$(DtraceOutDir):
- mkdir $(DtraceOutDir)
-
-$(DtraceOutDir)/hotspot.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot.d
-
-$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d
-
-$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hs_private.d
-
-dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
-
-# The jhelper.d and hotspot probes are separated into two different SUNW_dof sections.
-# Now the jhelper.d is built without the -Xlazyload flag.
-$(DTRACE_JHELPER.o) : $(DTRACE_JHELPER).d $(JVMOFFS).h $(JVMOFFS)Index.h
- @echo $(LOG_INFO) Compiling $(DTRACE_JHELPER).d
- $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -o $@ -s $(DTRACE_JHELPER).d
-
-.PHONY: dtraceCheck
-
-SYSTEM_DTRACE_PROG = /usr/sbin/dtrace
-PATCH_DTRACE_PROG = /opt/SUNWdtrd/sbin/dtrace
-systemDtraceFound := $(wildcard ${SYSTEM_DTRACE_PROG})
-patchDtraceFound := $(wildcard ${PATCH_DTRACE_PROG})
-
-ifneq ("$(patchDtraceFound)", "")
-DTRACE_PROG=$(PATCH_DTRACE_PROG)
-DTRACE_INCL=-I/opt/SUNWdtrd/include
-else
-ifneq ("$(systemDtraceFound)", "")
-DTRACE_PROG=$(SYSTEM_DTRACE_PROG)
-else
-
-endif # ifneq ("$(systemDtraceFound)", "")
-endif # ifneq ("$(patchDtraceFound)", "")
-
-ifneq ("${DTRACE_PROG}", "")
-ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")
-
-DTRACE_OBJS = $(DTRACE.o) $(JVMOFFS.o) $(DTRACE_JHELPER.o)
-CFLAGS += $(DTRACE_INCL) -DDTRACE_ENABLED
-MAPFILE_DTRACE_OPT = $(MAPFILE_DTRACE)
-
-dtraceCheck:
-
-else # manually disabled
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled via environment variable"
-
-endif # ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")
-
-else # No dtrace program found
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled: not supported by system"
-
-endif # ifneq ("${dtraceFound}", "")
-
-endif # ifdef USE_GCC
-
-else # CORE build
-
-dtraceCheck:
- $(QUIETLY) echo $(LOG_INFO) "**NOTICE** Dtrace support disabled for CORE builds"
-
-endif # ifneq ("${TYPE}", "CORE")
diff --git a/hotspot/make/solaris/makefiles/fastdebug.make b/hotspot/make/solaris/makefiles/fastdebug.make
deleted file mode 100644
index 3719c3edbda..00000000000
--- a/hotspot/make/solaris/makefiles/fastdebug.make
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# 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
-# 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.
-#
-#
-
-# Sets make macros for making debug version of VM
-
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-# They may also specify FASTDEBUG_CFLAGS, but it defaults to DEBUG_CFLAGS.
-
-FASTDEBUG_CFLAGS$(FASTDEBUG_CFLAGS) = $(DEBUG_CFLAGS)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-OPT_CFLAGS/SLOWER = -xO2
-
-ifeq ($(COMPILER_REV_NUMERIC), 510)
-# Avoid apparent crash because of corrupted methodHandle in a tail call
-OPT_CFLAGS/simpleThresholdPolicy.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
-# CC 5.10 has bug XXXXX with -xO4
-OPT_CFLAGS/jvmtiClassFileReconstituter.o = $(OPT_CFLAGS/SLOWER)
-endif # COMPILER_REV_NUMERIC == 510
-
-ifeq ($(COMPILER_REV_NUMERIC), 509)
-# To avoid jvm98 crash
-OPT_CFLAGS/instanceKlass.o = $(OPT_CFLAGS/SLOWER)
-endif # COMPILER_NUMERIC_REV == 509
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-# dtrace cannot handle tail call optimization (6672627, 6693876)
-OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
-# this hangs in iropt now (7113504)
-OPT_CFLAGS/compileBroker.o = $(OPT_CFLAGS/SLOWER)
-endif # COMPILER_NUMERIC_REV >= 509
-
-ifeq ($(COMPILER_REV_NUMERIC), 505)
-# CC 5.5 has bug 4908364 with -xO4 (Fixed in 5.6)
-OPT_CFLAGS/library_call.o = $(OPT_CFLAGS/SLOWER)
-endif # COMPILER_REV_NUMERIC == 505
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \<= 504), 1)
-# Compilation of *_.cpp can take an hour or more at O3. Use O2
-# See comments at top of sparc.make.
-OPT_CFLAGS/ad_$(Platform_arch_model).o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/dfa_$(Platform_arch_model).o = $(OPT_CFLAGS/SLOWER)
-endif # COMPILER_REV_NUMERIC <= 504
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 505), 1)
-# Same problem with Solaris/x86 compiler (both 5.0 and 5.2) on ad_x86_{32,64}.cpp.
-# CC build time is also too long for ad_$(Platform_arch_model)_{gen,misc}.o
-OPT_CFLAGS/ad_$(Platform_arch_model).o = -c
-OPT_CFLAGS/ad_$(Platform_arch_model)_gen.o = -c
-OPT_CFLAGS/ad_$(Platform_arch_model)_misc.o = -c
-ifeq ($(Platform_arch), x86)
-# Same problem for the wrapper roosts: jni.o jvm.o
-OPT_CFLAGS/jni.o = -c
-OPT_CFLAGS/jvm.o = -c
-# Same problem in parse2.o (probably the Big Switch over bytecodes)
-OPT_CFLAGS/parse2.o = -c
-endif # Platform_arch == x86
-endif
-
-# Frame size > 100k if we allow inlining via -g0!
-DEBUG_CFLAGS/bytecodeInterpreter.o = -g
-DEBUG_CFLAGS/bytecodeInterpreterWithChecks.o = -g
-ifeq ($(Platform_arch), x86)
-# ube explodes on x86
-OPT_CFLAGS/bytecodeInterpreter.o = -xO1
-OPT_CFLAGS/bytecodeInterpreterWithChecks.o = -xO1
-endif # Platform_arch == x86
-
-endif # Platform_compiler == sparcWorks
-
-# Workaround for a bug in dtrace. If ciEnv::post_compiled_method_load_event()
-# is inlined, the resulting dtrace object file needs a reference to this
-# function, whose symbol name is too long for dtrace. So disable inlining
-# for this method for now. (fix this when dtrace bug 6258412 is fixed)
-OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS) -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# The following lines are copied from debug.make, except that we
-# consult FASTDEBUG_CFLAGS instead of DEBUG_CFLAGS.
-# Compiler specific DEBUG_CFLAGS are passed in from gcc.make, sparcWorks.make
-DEBUG_CFLAGS/DEFAULT= $(FASTDEBUG_CFLAGS)
-DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
-CFLAGS += $(DEBUG_CFLAGS/BYFILE)
-
-# Linker mapfiles
-MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers \
- $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-debug
-
-# This mapfile is only needed when compiling with dtrace support,
-# and mustn't be otherwise.
-MAPFILE_DTRACE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-$(TYPE)
-
-VERSION = optimized
-SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
-PICFLAGS = DEFAULT
diff --git a/hotspot/make/solaris/makefiles/gcc.make b/hotspot/make/solaris/makefiles/gcc.make
deleted file mode 100644
index d31237acbf1..00000000000
--- a/hotspot/make/solaris/makefiles/gcc.make
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-# 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
-# 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.
-#
-#
-
-#------------------------------------------------------------------------
-# CC, CXX & AS
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- CXX = g++
- CC = gcc
- AS = $(CC) -c
- MCS = /usr/ccs/bin/mcs
-endif
-
-Compiler = gcc
-
-# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
-# prints the numbers (e.g. "2.95", "3.2.1")
-CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
-CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
-CC_VER_MICRO := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f3)
-
-# Check for the versions of C++ and C compilers ($CXX and $CC) used.
-
-# Get the last thing on the line that looks like x.x+ (x is a digit).
-COMPILER_REV := \
-$(shell $(CXX) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
-CC_COMPILER_REV := \
-$(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
-
-
-# check for precompiled headers support
-ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
-# Allow the user to turn off precompiled headers from the command line.
-ifneq ($(USE_PRECOMPILED_HEADER),0)
-PRECOMPILED_HEADER_DIR=.
-PRECOMPILED_HEADER_SRC=$(GAMMADIR)/src/share/vm/precompiled/precompiled.hpp
-PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/precompiled.hpp.gch
-endif
-endif
-
-
-#------------------------------------------------------------------------
-# Compiler flags
-
-# position-independent code
-PICFLAG = -fPIC
-
-VM_PICFLAG/LIBJVM = $(PICFLAG)
-VM_PICFLAG/AOUT =
-VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
-
-CFLAGS += $(VM_PICFLAG)
-CFLAGS += -fno-rtti
-CFLAGS += -fno-exceptions
-CFLAGS += -D_REENTRANT
-CFLAGS += -fcheck-new
-
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-
-ARCHFLAG/sparc = -m32 -mcpu=v9
-ARCHFLAG/sparcv9 = -m64 -mcpu=v9
-ARCHFLAG/i486 = -m32 -march=i586
-ARCHFLAG/amd64 = -m64 -march=k8
-
-
-# Optional sub-directory in /usr/lib where BUILDARCH libraries are kept.
-ISA_DIR=$(ISA_DIR/$(BUILDARCH))
-ISA_DIR/amd64=/amd64
-ISA_DIR/i486=
-ISA_DIR/sparcv9=/64
-
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-ASFLAGS += $(ARCHFLAG)
-
-ifeq ($(BUILDARCH), amd64)
-ASFLAGS += -march=k8 -march=amd64
-LFLAGS += -march=k8
-endif
-
-
-# Use C++ Interpreter
-ifdef CC_INTERP
- CFLAGS += -DCC_INTERP
-endif
-
-# Keep temporary files (.ii, .s)
-ifdef NEED_ASM
- CFLAGS += -save-temps
-else
- CFLAGS += -pipe
-endif
-
-
-# Compiler warnings are treated as errors
-WARNINGS_ARE_ERRORS ?= -Werror
-
-# Enable these warnings. See 'info gcc' about details on these options
-WARNING_FLAGS = -Wpointer-arith -Wconversion -Wsign-compare -Wundef -Wformat=2
-CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(WARNING_FLAGS)
-
-# Special cases
-CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@))
-
-# optimization control flags (Used by fastdebug and release variants)
-OPT_CFLAGS/NOOPT=-O0
-OPT_CFLAGS/DEBUG=-O0
-OPT_CFLAGS/SIZE=-Os
-OPT_CFLAGS/SPEED=-O3
-
-OPT_CFLAGS_DEFAULT ?= SPEED
-
-# Hotspot uses very unstrict aliasing turn this optimization off
-# This option is added to CFLAGS rather than OPT_CFLAGS
-# so that OPT_CFLAGS overrides get this option too.
-CFLAGS += -fno-strict-aliasing
-
-ifdef OPT_CFLAGS
- ifneq ("$(origin OPT_CFLAGS)", "command line")
- $(error " Use OPT_EXTRAS instead of OPT_CFLAGS to add extra flags to OPT_CFLAGS.")
- endif
-endif
-
-OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS)
-
-# The gcc compiler segv's on ia64 when compiling bytecodeInterpreter.cpp
-# if we use expensive-optimizations
-# Note: all ia64 setting reflect the ones for linux
-# No actial testing was performed: there is no Solaris on ia64 presently
-ifeq ($(BUILDARCH), ia64)
-OPT_CFLAGS/bytecodeInterpreter.o += -fno-expensive-optimizations
-endif
-
-# Work around some compiler bugs.
-ifeq ($(USE_CLANG), true)
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 2), 1)
- OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT)
- endif
-else
- # Do not allow GCC 4.1.1
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 1 \& $(CC_VER_MICRO) = 1), 1)
- $(error "GCC $(CC_VER_MAJOR).$(CC_VER_MINOR).$(CC_VER_MICRO) not supported because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=27724")
- endif
- # 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
- ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)
- OPT_CFLAGS/mulnode.o += $(OPT_CFLAGS/NOOPT)
- endif
-endif
-
-# Flags for generating make dependency flags.
-ifneq ($(CC_VER_MAJOR), 2)
-DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-ifeq ($(USE_PRECOMPILED_HEADER),0)
-CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-endif
-
-#------------------------------------------------------------------------
-# Linker flags
-
-# statically link libstdc++.so, work with gcc but ignored by g++
-STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
-
-
-ifdef USE_GNULD
- # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x.
- ifneq ($(CC_VER_MAJOR), 2)
- STATIC_LIBGCC += -static-libgcc
- endif
-
- # Enable linker optimization
- LFLAGS += -Xlinker -O1
-
- ifneq (, findstring(debug,$(BUILD_FLAVOR)))
- # for relocations read-only
- LFLAGS += -Xlinker -z -Xlinker relro
-
- ifeq ($(BUILD_FLAVOR), debug)
- # disable incremental relocations linking
- LFLAGS += -Xlinker -z -Xlinker now
- endif
- endif
-
- ifeq ($(BUILDARCH), ia64)
- # Note: all ia64 setting reflect the ones for linux
- # No actual testing was performed: there is no Solaris on ia64 presently
- LFLAGS += -Wl,-relax
- endif
-
- # Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
- MAPFLAG = -Xlinker --version-script=FILENAME
-else
- MAPFLAG = -Xlinker -M -Xlinker FILENAME
-endif
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -Xlinker -soname=SONAME
-
-# Build shared library
-SHARED_FLAG = -shared
-
-#------------------------------------------------------------------------
-# Debug flags
-
-# Allow no optimizations.
-DEBUG_CFLAGS=-O0
-
-# Enable debug symbols
-DEBUG_CFLAGS += -g
-
-# Enable bounds checking.
-ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) )" "1"
- # stack smashing checks.
- DEBUG_CFLAGS += -fstack-protector-all --param ssp-buffer-size=1
-endif
diff --git a/hotspot/make/solaris/makefiles/hp.make b/hotspot/make/solaris/makefiles/hp.make
deleted file mode 100644
index d0b10265560..00000000000
--- a/hotspot/make/solaris/makefiles/hp.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP
-
-CFLAGS += -DCOMPILER2
diff --git a/hotspot/make/solaris/makefiles/hp1.make b/hotspot/make/solaris/makefiles/hp1.make
deleted file mode 100644
index 2e37a6ead33..00000000000
--- a/hotspot/make/solaris/makefiles/hp1.make
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-# Sets make macros for making premium version of VM
-
-TYPE=HP1
-
-CFLAGS += -DCOMPILER1
diff --git a/hotspot/make/solaris/makefiles/i486.make b/hotspot/make/solaris/makefiles/i486.make
deleted file mode 100644
index c2e6ff8395a..00000000000
--- a/hotspot/make/solaris/makefiles/i486.make
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 1998, 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.
-#
-#
-
-# Must also specify if CPU is little endian
-CFLAGS += -DVM_LITTLE_ENDIAN
-
-# TLS helper, assembled from .s file
-
-#
-# Special case flags for compilers and compiler versions on i486.
-#
-ifeq ("${Platform_compiler}", "sparcWorks")
-# ILD is gone as of SS11 (5.8), not supported in SS10 (5.7)
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 507), 1)
- #
- # Bug in ild causes it to fail randomly. Until we get a fix we can't
- # use ild.
- #
- ILDFLAG/debug = -xildoff
-endif
-endif
diff --git a/hotspot/make/solaris/makefiles/jsig.make b/hotspot/make/solaris/makefiles/jsig.make
deleted file mode 100644
index 392f78c1651..00000000000
--- a/hotspot/make/solaris/makefiles/jsig.make
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build signal interposition library, used by vm.make
-
-# libjsig.so: signal interposition library
-JSIG = jsig
-LIBJSIG = lib$(JSIG).so
-
-LIBJSIG_DEBUGINFO = lib$(JSIG).debuginfo
-LIBJSIG_DIZ = lib$(JSIG).diz
-
-JSIGSRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/vm
-
-DEST_JSIG = $(JDK_LIBDIR)/$(LIBJSIG)
-DEST_JSIG_DEBUGINFO = $(JDK_LIBDIR)/$(LIBJSIG_DEBUGINFO)
-DEST_JSIG_DIZ = $(JDK_LIBDIR)/$(LIBJSIG_DIZ)
-
-LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
-
-LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
-
-ifdef USE_GCC
-LFLAGS_JSIG += -D_REENTRANT
-else
-LFLAGS_JSIG += -mt -xnolib
-endif
-
-$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
- @echo $(LOG_INFO) Making signal interposition lib...
- $(QUIETLY) $(CC) $(SYMFLAG) $(ARCHFLAG) $(SHARED_FLAG) $(PICFLAG) \
- $(EXTRA_CFLAGS) \
- $(LFLAGS_JSIG) $(EXTRA_LDFLAGS) \
- -o $@ $(JSIGSRCDIR)/jsig.c -ldl
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJSIG_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJSIG_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJSIG_DIZ) $(LIBJSIG_DEBUGINFO)
- $(RM) $(LIBJSIG_DEBUGINFO)
- endif
-endif
-
-install_jsig: $(LIBJSIG)
- @echo "Copying $(LIBJSIG) to $(DEST_JSIG)"
- $(QUIETLY) test ! -f $(LIBJSIG_DEBUGINFO) || \
- $(CP) -f $(LIBJSIG_DEBUGINFO) $(DEST_JSIG_DEBUGINFO)
- $(QUIETLY) test ! -f $(LIBJSIG_DIZ) || \
- $(CP) -f $(LIBJSIG_DIZ) $(DEST_JSIG_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJSIG) $(DEST_JSIG) && echo "Done"
-
-.PHONY: install_jsig
diff --git a/hotspot/make/solaris/makefiles/jvmti.make b/hotspot/make/solaris/makefiles/jvmti.make
deleted file mode 100644
index 93b9f6ed885..00000000000
--- a/hotspot/make/solaris/makefiles/jvmti.make
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Copyright (c) 2003, 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.
-#
-#
-
-# This makefile (jvmti.make) is included from the jvmti.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate jvmti.
-
-include $(GAMMADIR)/make/solaris/makefiles/rules.make
-
-# #########################################################################
-
-GENERATED = ../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-
-JvmtiSrcDir = $(GAMMADIR)/src/share/vm/prims
-InterpreterSrcDir = $(GAMMADIR)/src/share/vm/interpreter
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(JvmtiSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-JvmtiGeneratedNames = \
- jvmtiEnv.hpp \
- jvmtiEnter.cpp \
- jvmtiEnterTrace.cpp \
- jvmtiEnvRecommended.cpp\
- bytecodeInterpreterWithChecks.cpp\
- jvmti.h \
-
-JvmtiEnvFillSource = $(JvmtiSrcDir)/jvmtiEnvFill.java
-JvmtiEnvFillClass = $(JvmtiOutDir)/jvmtiEnvFill.class
-
-JvmtiGenSource = $(JvmtiSrcDir)/jvmtiGen.java
-JvmtiGenClass = $(JvmtiOutDir)/jvmtiGen.class
-
-JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
-
-XSLT = $(QUIETLY) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-.PHONY: all jvmtidocs clean cleanall
-
-# #########################################################################
-
-all: $(JvmtiGeneratedFiles)
-
-both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
-
-$(JvmtiGenClass): $(JvmtiGenSource)
- $(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
-
-$(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
- $(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-
-$(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
-
-$(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
-
-$(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
-
-$(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
- $(QUIETLY) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
-
-$(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
-
-$(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
-
-jvmtidocs: $(JvmtiOutDir)/jvmti.html
-
-$(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
- @echo $(LOG_INFO) Generating $@
- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
-
-# #########################################################################
-
-clean :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-cleanall :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-# #########################################################################
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers b/hotspot/make/solaris/makefiles/mapfile-vers
deleted file mode 100644
index 3de0dd99af5..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_handle_solaris_signal;
-
- # miscellaneous functions
- jio_fprintf;
- jio_printf;
- jio_snprintf;
- jio_vfprintf;
- jio_vsnprintf;
-
- # Needed because there is no JVM interface for this.
- sysThreadAvailableStackWithSlack;
-
- # This is for Forte Analyzer profiling support.
- AsyncGetCallTrace;
-
- # INSERT VTABLE SYMBOLS HERE
-
- local:
- *;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER1 b/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER1
deleted file mode 100644
index f3a02560561..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER1
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-
-#
-# Copyright (c) 2003, 2012, 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.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- # Dtrace support
- __1cJCodeCacheG_heaps_;
- __1cIUniverseO_collectedHeap_;
- __1cGMethodG__vtbl_;
- __1cHnmethodG__vtbl_;
- __1cICodeBlobG__vtbl_;
- __1cKBufferBlobG__vtbl_;
- __1cLRuntimeStubG__vtbl_;
- __1cNSafepointBlobG__vtbl_;
- __1cSDeoptimizationBlobG__vtbl_;
-
- __JvmOffsets;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER2 b/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER2
deleted file mode 100644
index 383ba3cc9a9..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER2
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-
-#
-# Copyright (c) 2003, 2012, 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.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- # Dtrace support
- __1cJCodeCacheG_heaps_;
- __1cIUniverseO_collectedHeap_;
- __1cGMethodG__vtbl_;
- __1cHnmethodG__vtbl_;
- __1cICodeBlobG__vtbl_;
- __1cKBufferBlobG__vtbl_;
- __1cLRuntimeStubG__vtbl_;
- __1cNSafepointBlobG__vtbl_;
- __1cSDeoptimizationBlobG__vtbl_;
-
- __1cNExceptionBlobG__vtbl_;
- __1cQUncommonTrapBlobG__vtbl_;
-
- __JvmOffsets;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-CORE b/hotspot/make/solaris/makefiles/mapfile-vers-CORE
deleted file mode 100644
index ed5896ba709..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-CORE
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-
-#
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-TIERED b/hotspot/make/solaris/makefiles/mapfile-vers-TIERED
deleted file mode 100644
index 2f2c69d477e..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-TIERED
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-
-#
-# Copyright (c) 2006, 2012, 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.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
- # Dtrace support
- __1cJCodeCacheG_heaps_;
- __1cIUniverseO_collectedHeap_;
- __1cGMethodG__vtbl_;
- __1cHnmethodG__vtbl_;
- __1cICodeBlobG__vtbl_;
- __1cKBufferBlobG__vtbl_;
- __1cLRuntimeStubG__vtbl_;
- __1cNSafepointBlobG__vtbl_;
- __1cSDeoptimizationBlobG__vtbl_;
- __1cNExceptionBlobG__vtbl_;
- __1cQUncommonTrapBlobG__vtbl_;
-
- __JvmOffsets;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-debug b/hotspot/make/solaris/makefiles/mapfile-vers-debug
deleted file mode 100644
index f6b63d5a4bf..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-debug
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-
-#
-# Copyright (c) 2000, 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.
-#
-#
-
-# Define public interface.
-
-SUNWprivate_1.1 {
- global:
-
- # miscellaneous
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-jsig b/hotspot/make/solaris/makefiles/mapfile-vers-jsig
deleted file mode 100644
index 8a675046b6e..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-jsig
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-
-#
-# Copyright (c) 2005, 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.
-#
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
- global:
- JVM_begin_signal_setting;
- JVM_end_signal_setting;
- JVM_get_libjsig_version;
- JVM_get_signal_action;
- sigaction;
- signal;
- sigset;
- local:
- *;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-jvm_db b/hotspot/make/solaris/makefiles/mapfile-vers-jvm_db
deleted file mode 100644
index 9ee418d01a2..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-jvm_db
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-
-#
-# Copyright (c) 2005, 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.
-#
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
- global:
- Jagent_create;
- Jagent_destroy;
- Jframe_iter;
- #Jget_vframe;
- #Jlookup_by_regs;
- local:
- *;
-};
diff --git a/hotspot/make/solaris/makefiles/mapfile-vers-jvm_dtrace b/hotspot/make/solaris/makefiles/mapfile-vers-jvm_dtrace
deleted file mode 100644
index f9aaa19ba9d..00000000000
--- a/hotspot/make/solaris/makefiles/mapfile-vers-jvm_dtrace
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-
-#
-# Copyright (c) 2006, 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.
-#
-#
-
-# Define library interface for JVM-DTrace interface
-
-SUNWprivate_1.1 {
- global:
- jvm_attach;
- jvm_get_last_error;
- jvm_enable_dtprobes;
- jvm_detach;
- local:
- *;
-};
diff --git a/hotspot/make/solaris/makefiles/optimized.make b/hotspot/make/solaris/makefiles/optimized.make
deleted file mode 100644
index f353628aec8..00000000000
--- a/hotspot/make/solaris/makefiles/optimized.make
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Copyright (c) 1998, 2012, 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.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-ifeq ("${Platform_compiler}", "sparcWorks")
-
-ifeq ($(COMPILER_REV_NUMERIC), 510)
-# CC 5.10 has bug XXXXX with -xO4
-OPT_CFLAGS/jvmtiClassFileReconstituter.o = $(OPT_CFLAGS/O2)
-endif # COMPILER_REV_NUMERIC == 510
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-# dtrace cannot handle tail call optimization (6672627, 6693876)
-OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
-endif # COMPILER_NUMERIC_REV >= 509
-
-# Workaround SS11 bug 6345274 (all platforms) (Fixed in SS11 patch and SS12)
-ifeq ($(COMPILER_REV_NUMERIC),508)
-OPT_CFLAGS/ciTypeFlow.o = $(OPT_CFLAGS/O2)
-endif # COMPILER_REV_NUMERIC == 508
-
-endif # Platform_compiler == sparcWorks
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-
-# Linker mapfiles
-MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers
-
-# This mapfile is only needed when compiling with dtrace support,
-# and mustn't be otherwise.
-MAPFILE_DTRACE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-$(TYPE)
-
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-VERSION = optimized
diff --git a/hotspot/make/solaris/makefiles/product.make b/hotspot/make/solaris/makefiles/product.make
deleted file mode 100644
index b36159fdcc8..00000000000
--- a/hotspot/make/solaris/makefiles/product.make
+++ /dev/null
@@ -1,103 +0,0 @@
-#
-# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Sets make macros for making optimized version of HotSpot VM
-# (This is the "product", not the "release" version.)
-
-# Compiler specific OPT_CFLAGS are passed in from gcc.make, sparcWorks.make
-OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
-OPT_CFLAGS/BYFILE = $(OPT_CFLAGS/$@)$(OPT_CFLAGS/DEFAULT$(OPT_CFLAGS/$@))
-
-# Workaround for a bug in dtrace. If ciEnv::post_compiled_method_load_event()
-# is inlined, the resulting dtrace object file needs a reference to this
-# function, whose symbol name is too long for dtrace. So disable inlining
-# for this method for now. (fix this when dtrace bug 6258412 is fixed)
-ifndef USE_GCC
-OPT_CFLAGS/ciEnv.o = $(OPT_CFLAGS) -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/ciEnv.o += -g0 -xs
-endif
-endif
-
-# Need extra inlining to get oop_ps_push_contents functions to perform well enough.
-ifndef USE_GCC
-OPT_CFLAGS/psPromotionManager.o = $(OPT_CFLAGS) -W2,-Ainline:inc=1000
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/psPromotionManager.o += -g0 -xs
-endif
-endif
-
-# (OPT_CFLAGS/SLOWER is also available, to alter compilation of buggy files)
-ifeq ("${Platform_compiler}", "sparcWorks")
-
-ifeq ($(COMPILER_REV_NUMERIC), 510)
-# CC 5.10 has bug XXXXX with -xO4
-OPT_CFLAGS/jvmtiClassFileReconstituter.o = $(OPT_CFLAGS/O2)
-# Avoid apparent crash because of corrupted methodHandle in a tail call
-OPT_CFLAGS/simpleThresholdPolicy.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
-endif # COMPILER_REV_NUMERIC == 510
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-# dtrace cannot handle tail call optimization (6672627, 6693876)
-OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
-# The -g0 -xs flag is added to OPT_CFLAGS in sparcWorks.make, but lost in case of
-# per-file overrides of OPT_CFLAGS. Restore it here. This is mainly needed
-# to provide a good baseline to compare the new build against.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/jni.o += -g0 -xs
-endif
-endif # COMPILER_NUMERIC_REV >= 509
-
-# Workaround SS11 bug 6345274 (all platforms) (Fixed in SS11 patch and SS12)
-ifeq ($(COMPILER_REV_NUMERIC),508)
-OPT_CFLAGS/ciTypeFlow.o = $(OPT_CFLAGS/O2)
-endif # COMPILER_REV_NUMERIC == 508
-
-endif # Platform_compiler == sparcWorks
-
-# If you set HOTSPARC_GENERIC=yes, you disable all OPT_CFLAGS settings
-CFLAGS$(HOTSPARC_GENERIC) += $(OPT_CFLAGS/BYFILE)
-# Set the environment variable HOTSPARC_GENERIC to "true"
-# to inhibit the effect of the previous line on CFLAGS.
-
-# Linker mapfiles
-MAPFILE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers
-
-ifndef USE_GCC
-# This mapfile is only needed when compiling with dtrace support,
-# and mustn't be otherwise.
-MAPFILE_DTRACE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-$(TYPE)
-
-endif
-
-# If we can create .debuginfo files, then the VM is stripped in vm.make
-# and this macro is not used.
-# LINK_LIB.CXX/POST_HOOK += $(STRIP_LIB.CXX/POST_HOOK)
-
-SYSDEFS += -DPRODUCT
-VERSION = optimized
diff --git a/hotspot/make/solaris/makefiles/reorder_CORE_amd64 b/hotspot/make/solaris/makefiles/reorder_CORE_amd64
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/hotspot/make/solaris/makefiles/rules.make b/hotspot/make/solaris/makefiles/rules.make
deleted file mode 100644
index a35b9dacd8c..00000000000
--- a/hotspot/make/solaris/makefiles/rules.make
+++ /dev/null
@@ -1,200 +0,0 @@
-#
-# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# Common rules/macros for the vm, adlc.
-
-# Tell make that .cpp is important
-.SUFFIXES: .cpp $(SUFFIXES)
-
-DEMANGLER = c++filt
-DEMANGLE = $(DEMANGLER) < $@ > .$@ && $(MV) -f .$@ $@
-
-# $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++).
-CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
-CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
-
-AS.S = $(AS) $(ASFLAGS)
-
-COMPILE.CC = $(CC_COMPILE) -c
-GENASM.CC = $(CC_COMPILE) -S
-LINK.CC = $(CC) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_LIB.CC = $(CC) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CC = $(CC_COMPILE) -E
-
-COMPILE.CXX = $(CXX_COMPILE) -c
-GENASM.CXX = $(CXX_COMPILE) -S
-LINK.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS) $(PROF_AOUT_FLAGS)
-LINK_NOPROF.CXX = $(CXX) $(LFLAGS) $(AOUT_FLAGS)
-LINK_LIB.CXX = $(CXX) $(LFLAGS) $(SHARED_FLAG)
-PREPROCESS.CXX = $(CXX_COMPILE) -E
-
-# Effect of REMOVE_TARGET is to delete out-of-date files during "gnumake -k".
-REMOVE_TARGET = rm -f $@
-
-# Note use of ALT_BOOTDIR to explicitly specify location of java and
-# javac; this is the same environment variable used in the J2SE build
-# process for overriding the default spec, which is BOOTDIR.
-# Note also that we fall back to using JAVA_HOME if neither of these is
-# specified.
-
-ifdef ALT_BOOTDIR
-
-RUN.JAVA = $(ALT_BOOTDIR)/bin/java
-RUN.JAVAP = $(ALT_BOOTDIR)/bin/javap
-RUN.JAVAH = $(ALT_BOOTDIR)/bin/javah
-RUN.JAR = $(ALT_BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(ALT_BOOTDIR)/bin/javac
-COMPILE.RMIC = $(ALT_BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(ALT_BOOTDIR)
-
-else
-
-ifdef BOOTDIR
-
-RUN.JAVA = $(BOOTDIR)/bin/java
-RUN.JAVAP = $(BOOTDIR)/bin/javap
-RUN.JAVAH = $(BOOTDIR)/bin/javah
-RUN.JAR = $(BOOTDIR)/bin/jar
-COMPILE.JAVAC = $(BOOTDIR)/bin/javac
-COMPILE.RMIC = $(BOOTDIR)/bin/rmic
-BOOT_JAVA_HOME = $(BOOTDIR)
-
-else
-
-ifdef JAVA_HOME
-
-RUN.JAVA = $(JAVA_HOME)/bin/java
-RUN.JAVAP = $(JAVA_HOME)/bin/javap
-RUN.JAVAH = $(JAVA_HOME)/bin/javah
-RUN.JAR = $(JAVA_HOME)/bin/jar
-COMPILE.JAVAC = $(JAVA_HOME)/bin/javac
-COMPILE.RMIC = $(JAVA_HOME)/bin/rmic
-BOOT_JAVA_HOME = $(JAVA_HOME)
-
-else
-
-# take from the PATH, if ALT_BOOTDIR, BOOTDIR and JAVA_HOME are not defined
-
-RUN.JAVA = java
-RUN.JAVAP = javap
-RUN.JAVAH = javah
-RUN.JAR = jar
-COMPILE.JAVAC = javac
-COMPILE.RMIC = rmic
-
-endif
-endif
-endif
-
-COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-
-SUM = /usr/bin/sum
-
-# 'gmake MAKE_VERBOSE=y' gives all the gory details.
-QUIETLY$(MAKE_VERBOSE) = @
-RUN.JAR$(MAKE_VERBOSE) += >/dev/null
-
-# Settings for javac
-JAVAC_FLAGS = -g -encoding ascii
-
-# Prefer BOOT_JDK_SOURCETARGET if it's set (typically by the top build system)
-# Fall back to the values here if it's not set (hotspot only builds)
-ifeq ($(BOOT_JDK_SOURCETARGET),)
-BOOTSTRAP_SOURCETARGET := -source 8 -target 8
-else
-BOOTSTRAP_SOURCETARGET := $(BOOT_JDK_SOURCETARGET)
-endif
-
-BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) $(BOOTSTRAP_SOURCETARGET)
-
-# With parallel makes, print a message at the end of compilation.
-ifeq ($(findstring j,$(MFLAGS)),j)
-COMPILE_DONE = && { echo Done with $<; }
-endif
-
-# Include NONPIC_OBJ_FILES definition
-ifndef LP64
-include $(GAMMADIR)/make/pic.make
-endif
-
-include $(GAMMADIR)/make/altsrc.make
-
-# Sun compiler for 64 bit Solaris does not support building non-PIC object files.
-ifdef LP64
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
-else
-%.o: %.cpp
- @echo $(LOG_INFO) Compiling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
- $(subst $(VM_PICFLAG), ,$(COMPILE.CXX)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
- $(COMPILE.CXX) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
-endif
-
-%.o: %.s
- @echo $(LOG_INFO) Assembling $<
- $(QUIETLY) $(REMOVE_TARGET)
- $(QUIETLY) $(AS.S) -o $@ $< $(COMPILE_DONE)
-
-%.s: %.cpp
- @echo $(LOG_INFO) Generating assembly for $<
- $(QUIETLY) $(GENASM.CXX) -o $@ $<
- $(QUIETLY) $(DEMANGLE) $(COMPILE_DONE)
-
-# Intermediate files (for debugging macros)
-%.i: %.cpp
- @echo $(LOG_INFO) Preprocessing $< to $@
- $(QUIETLY) $(PREPROCESS.CXX) $< > $@ $(COMPILE_DONE)
-
-# Override gnumake built-in rules which do sccs get operations badly.
-# (They put the checked out code in the current directory, not in the
-# directory of the original file.) Since this is a symptom of a teamware
-# failure, and since not all problems can be detected by gnumake due
-# to incomplete dependency checking... just complain and stop.
-%:: s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-%:: SCCS/s.%
- @echo "========================================================="
- @echo File $@
- @echo is out of date with respect to its SCCS file.
- @echo This file may be from an unresolved Teamware conflict.
- @echo This is also a symptom of a Teamware bringover/putback failure
- @echo in which SCCS files are updated but not checked out.
- @echo Check for other out of date files in your workspace.
- @echo "========================================================="
- @exit 666
-
-.PHONY: default
diff --git a/hotspot/make/solaris/makefiles/sparc.make b/hotspot/make/solaris/makefiles/sparc.make
deleted file mode 100644
index ff507f2fab8..00000000000
--- a/hotspot/make/solaris/makefiles/sparc.make
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# Copyright (c) 1998, 2012, 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.
-#
-#
-
-Obj_Files += solaris_sparc.o
-ASFLAGS += $(AS_ARCHFLAG)
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 505), 1)
-# For 5.2 ad_sparc file is compiled with -O2 %%%% remove when adlc is fixed
-OPT_CFLAGS/ad_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/dfa_sparc.o = $(OPT_CFLAGS/SLOWER)
-# CC drops core on systemDictionary.o in -xO4 mode
-OPT_CFLAGS/systemDictionary.o = $(OPT_CFLAGS/SLOWER)
-# SC5.0 bug 4284168
-OPT_CFLAGS/carRememberedSet.o = $(OPT_CFLAGS/O2)
-# Temporarily drop the optimization level for compiling
-# jniHandles.cpp to O3 from O4; see bug 4309181
-OPT_CFLAGS/jniHandles.o = $(OPT_CFLAGS/O2)
-# CC brings an US-II to its knees compiling the vmStructs asserts under -xO4
-OPT_CFLAGS/vmStructs.o = $(OPT_CFLAGS/O2)
-endif # COMPILER_REV_NUMERIC < 505
-else
-# Options for gcc
-OPT_CFLAGS/ad_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/dfa_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/systemDictionary.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/carRememberedSet.o = $(OPT_CFLAGS/O2)
-OPT_CFLAGS/jniHandles.o = $(OPT_CFLAGS/O2)
-OPT_CFLAGS/vmStructs.o = $(OPT_CFLAGS/O2)
-endif
-
-# File-specific adjustments to the PICFLAG, applicable only to SPARC,
-# which has a very tight limit on global constant references.
-
-# Old files which seemed hot at one point or another:
-#PICFLAG/runtime.o = $(PICFLAG/BETTER)
-#PICFLAG/generateOopMap.o = $(PICFLAG/BETTER)
-#PICFLAG/thread.o = $(PICFLAG/BETTER)
-#PICFLAG/parse2.o = $(PICFLAG/BETTER)
-#PICFLAG/parse1.o = $(PICFLAG/BETTER)
-#PICFLAG/universe.o = $(PICFLAG/BETTER)
-#PICFLAG/safepoint.o = $(PICFLAG/BETTER)
-#PICFLAG/parse3.o = $(PICFLAG/BETTER)
-#PICFLAG/compile.o = $(PICFLAG/BETTER)
-#PICFLAG/codeBlob.o = $(PICFLAG/BETTER)
-#PICFLAG/mutexLocker.o = $(PICFLAG/BETTER)
-#PICFLAG/nativeInst_sparc.o = $(PICFLAG/BETTER)
-#PICFLAG/methodLiveness.o = $(PICFLAG/BETTER)
-#PICFLAG/synchronizer.o = $(PICFLAG/BETTER)
-#PICFLAG/method.o = $(PICFLAG/BETTER)
-#PICFLAG/space.o = $(PICFLAG/BETTER)
-#PICFLAG/interpreterRT_sparc.o = $(PICFLAG/BETTER)
-#PICFLAG/generation.o = $(PICFLAG/BETTER)
-#PICFLAG/markSweep.o = $(PICFLAG/BETTER)
-#PICFLAG/parseHelper.o = $(PICFLAG/BETTER)
-
-# Confirmed by function-level profiling:
-PICFLAG/scavenge.o = $(PICFLAG/BETTER)
-PICFLAG/instanceKlass.o = $(PICFLAG/BETTER)
-PICFLAG/frame.o = $(PICFLAG/BETTER)
-PICFLAG/phaseX.o = $(PICFLAG/BETTER)
-PICFLAG/lookupCache.o = $(PICFLAG/BETTER)
-PICFLAG/chaitin.o = $(PICFLAG/BETTER)
-PICFLAG/type.o = $(PICFLAG/BETTER)
-PICFLAG/jvm.o = $(PICFLAG/BETTER)
-PICFLAG/jni.o = $(PICFLAG/BETTER)
-PICFLAG/matcher.o = $(PICFLAG/BETTER)
-
-# New from module-level profiling (trustworthy?):
-PICFLAG/rememberedSet.o = $(PICFLAG/BETTER)
-PICFLAG/frame_sparc.o = $(PICFLAG/BETTER)
-PICFLAG/live.o = $(PICFLAG/BETTER)
-PICFLAG/vectset.o = $(PICFLAG/BETTER)
-PICFLAG/objArrayKlass.o = $(PICFLAG/BETTER)
-PICFLAG/do_call.o = $(PICFLAG/BETTER)
-PICFLAG/loopnode.o = $(PICFLAG/BETTER)
-PICFLAG/cfgnode.o = $(PICFLAG/BETTER)
-PICFLAG/ifg.o = $(PICFLAG/BETTER)
-PICFLAG/vframe.o = $(PICFLAG/BETTER)
-PICFLAG/postaloc.o = $(PICFLAG/BETTER)
-PICFLAG/carRememberedSet.o = $(PICFLAG/BETTER)
-PICFLAG/gcm.o = $(PICFLAG/BETTER)
-PICFLAG/coalesce.o = $(PICFLAG/BETTER)
-PICFLAG/oop.o = $(PICFLAG/BETTER)
-PICFLAG/oopMap.o = $(PICFLAG/BETTER)
-PICFLAG/resourceArea.o = $(PICFLAG/BETTER)
-PICFLAG/node.o = $(PICFLAG/BETTER)
-PICFLAG/dict.o = $(PICFLAG/BETTER)
-PICFLAG/domgraph.o = $(PICFLAG/BETTER)
-PICFLAG/dfa_sparc.o = $(PICFLAG/BETTER)
-PICFLAG/block.o = $(PICFLAG/BETTER)
-PICFLAG/javaClasses.o = $(PICFLAG/BETTER)
-
-# New hot files:
-PICFLAG/classes.o = $(PICFLAG/BETTER)
-#PICFLAG/ad_sparc.o = $(PICFLAG/BETTER)
-PICFLAG/nmethod.o = $(PICFLAG/BETTER)
-PICFLAG/relocInfo.o = $(PICFLAG/BETTER)
-PICFLAG/codeBuffer_sparc.o = $(PICFLAG/BETTER)
-PICFLAG/callnode.o = $(PICFLAG/BETTER)
-PICFLAG/multnode.o = $(PICFLAG/BETTER)
-PICFLAG/os_solaris.o = $(PICFLAG/BETTER)
-PICFLAG/typeArrayKlass.o = $(PICFLAG/BETTER)
diff --git a/hotspot/make/solaris/makefiles/sparcWorks.make b/hotspot/make/solaris/makefiles/sparcWorks.make
deleted file mode 100644
index 5c66b2f3d20..00000000000
--- a/hotspot/make/solaris/makefiles/sparcWorks.make
+++ /dev/null
@@ -1,565 +0,0 @@
-#
-# Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# If a SPEC is not set already, then use these defaults.
-ifeq ($(SPEC),)
- # Compiler-specific flags for sparcworks.
- CC = cc
- CXX = CC
-
- # Note that this 'as' is an older version of the Sun Studio 'fbe', and will
- # use the older style options. The 'fbe' options will match 'cc' and 'CC'.
- AS = /usr/ccs/bin/as
-
- NM = /usr/ccs/bin/nm
- NAWK = /bin/nawk
-
- MCS = /usr/ccs/bin/mcs
- STRIP = /usr/ccs/bin/strip
-endif
-
-# Check for the versions of C++ and C compilers ($CXX and $CC) used.
-
-# Get the last thing on the line that looks like x.x+ (x is a digit).
-COMPILER_REV := \
-$(shell $(CXX) -V 2>&1 | sed -n 's/^.*[ ,\t]C++[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p')
-CC_COMPILER_REV := \
-$(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p')
-
-# Pick which compiler is validated
-# Validated compiler for JDK9 is SS12.4 (5.13)
-VALIDATED_COMPILER_REVS := 5.13
-VALIDATED_CC_COMPILER_REVS := 5.13
-
-# Warning messages about not using the above validated versions
-ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS})
-ifeq ($(filter ${ENFORCE_COMPILER_REV},${COMPILER_REV}),)
-PRINTABLE_CC_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_COMPILER_REV})
-dummy_var_to_enforce_compiler_rev := $(shell \
- echo >&2 WARNING: You are using CC version ${COMPILER_REV} and \
- should be using version ${PRINTABLE_CC_REVS}.; \
- echo >&2 Set ENFORCE_COMPILER_REV=${COMPILER_REV} to avoid this \
- warning.)
-endif
-
-ENFORCE_CC_COMPILER_REV${ENFORCE_CC_COMPILER_REV} := $(strip ${VALIDATED_CC_COMPILER_REVS})
-ifeq ($(filter ${ENFORCE_CC_COMPILER_REV},${CC_COMPILER_REV}),)
-PRINTABLE_C_REVS := $(subst $(shell echo ' '), or ,${ENFORCE_CC_COMPILER_REV})
-dummy_var_to_enforce_c_compiler_rev := $(shell \
- echo >&2 WARNING: You are using cc version ${CC_COMPILER_REV} and \
- should be using version ${PRINTABLE_C_REVS}.; \
- echo >&2 Set ENFORCE_CC_COMPILER_REV=${CC_COMPILER_REV} to avoid this \
- warning.)
-endif
-
-COMPILER_REV_NUMERIC := $(shell echo $(COMPILER_REV) | awk -F. '{ print $$1 * 100 + $$2 }')
-
-# Fail the build if __fabsf is used. __fabsf exists only in Solaris 8 2/04
-# and newer; objects with a dependency on this symbol will not run on older
-# Solaris 8.
-JVM_FAIL_IF_UNDEFINED = __fabsf
-
-JVM_CHECK_SYMBOLS = $(NM) -u -p $(LIBJVM.o) | \
- $(NAWK) -v f="${JVM_FAIL_IF_UNDEFINED}" \
- 'BEGIN { c=split(f,s); rc=0; } \
- /:$$/ { file = $$1; } \
- /[^:]$$/ { for(n=1;n<=c;++n) { \
- if($$1==s[n]) { \
- printf("JVM_CHECK_SYMBOLS: %s contains illegal symbol %s\n", \
- file,$$1); \
- rc=1; \
- } \
- } \
- } \
- END { exit rc; }'
-
-LINK_LIB.CXX/PRE_HOOK += $(JVM_CHECK_SYMBOLS) || exit 1;
-
-# New architecture options started in SS12 (5.9), we need both styles to build.
-# The older arch options for SS11 (5.8) or older and also for /usr/ccs/bin/as.
-# Note: default for 32bit sparc is now the same as v8plus, so the
-# settings below have changed all 32bit sparc builds to be v8plus.
-ARCHFLAG_OLD/sparc = -xarch=v8plus
-ARCHFLAG_NEW/sparc = -m32 -xarch=sparc
-ARCHFLAG_OLD/sparcv9 = -xarch=v9
-ARCHFLAG_NEW/sparcv9 = -m64 -xarch=sparc
-ARCHFLAG_OLD/i486 =
-ARCHFLAG_NEW/i486 = -m32
-ARCHFLAG_OLD/amd64 = -xarch=amd64
-ARCHFLAG_NEW/amd64 = -m64
-
-# Select the ARCHFLAGs and other SS12 (5.9) options
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
- ARCHFLAG/sparc = $(ARCHFLAG_NEW/sparc)
- ARCHFLAG/sparcv9 = $(ARCHFLAG_NEW/sparcv9)
- ARCHFLAG/i486 = $(ARCHFLAG_NEW/i486)
- ARCHFLAG/amd64 = $(ARCHFLAG_NEW/amd64)
-else
- ARCHFLAG/sparc = $(ARCHFLAG_OLD/sparc)
- ARCHFLAG/sparcv9 = $(ARCHFLAG_OLD/sparcv9)
- ARCHFLAG/i486 = $(ARCHFLAG_OLD/i486)
- ARCHFLAG/amd64 = $(ARCHFLAG_OLD/amd64)
-endif
-
-# ARCHFLAGS for the current build arch
-ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
-AS_ARCHFLAG = $(ARCHFLAG_OLD/$(BUILDARCH))
-
-# Optional sub-directory in /usr/lib where BUILDARCH libraries are kept.
-ISA_DIR=$(ISA_DIR/$(BUILDARCH))
-ISA_DIR/sparcv9=/sparcv9
-ISA_DIR/amd64=/amd64
-
-# Use these to work around compiler bugs:
-OPT_CFLAGS/SLOWER=-xO3
-OPT_CFLAGS/O2=-xO2
-OPT_CFLAGS/NOOPT=-xO1
-
-# Flags for creating the dependency files.
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-DEPFLAGS = -xMMD -xMF $(DEP_DIR)/$(@:%=%.d)
-endif
-
-# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
-CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
-
-# Compiler warnings are treated as errors
-WARNINGS_ARE_ERRORS ?= -xwe
-CFLAGS_WARN = $(WARNINGS_ARE_ERRORS)
-
-################################################
-# Begin current (>=5.9) Forte compiler options #
-#################################################
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
-ifeq ($(Platform_arch), x86)
-OPT_CFLAGS/NO_TAIL_CALL_OPT = -Wu,-O~yz
-OPT_CCFLAGS/NO_TAIL_CALL_OPT = -Qoption ube -O~yz
-OPT_CFLAGS/stubGenerator_x86_32.o = $(OPT_CFLAGS) -xspace
-OPT_CFLAGS/stubGenerator_x86_64.o = $(OPT_CFLAGS) -xspace
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/stubGenerator_x86_32.o += -g0 -xs
- OPT_CFLAGS/stubGenerator_x86_64.o += -g0 -xs
-endif
-endif # Platform_arch == x86
-ifeq ("${Platform_arch}", "sparc")
-OPT_CFLAGS/stubGenerator_sparc.o = $(OPT_CFLAGS) -xspace
-# The debug flag is added to OPT_CFLAGS, but lost in case of per-file overrides
-# of OPT_CFLAGS. Restore it here.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS/stubGenerator_sparc.o += -g0 -xs
-endif
-endif
-endif # COMPILER_REV_NUMERIC >= 509
-
-#################################################
-# Begin current (>=5.6) Forte compiler options #
-#################################################
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 506), 1)
-
-ifeq ("${Platform_arch}", "sparc")
-
-# We MUST allow data alignment of 4 for sparc (sparcv9 is ok at 8s)
-ifndef LP64
-CFLAGS += -xmemalign=4s
-endif
-
-endif
-
-endif
-
-#################################################
-# Begin current (>=5.5) Forte compiler options #
-#################################################
-
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1)
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LIB_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-
-ifeq ("${Platform_arch}", "sparc")
-
-# Flags for Optimization
-
-# [phh] Commented out pending verification that we do indeed want
-# to potentially bias against u1 and u3 targets.
-#CFLAGS += -xchip=ultra2
-
-OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
-
-endif # sparc
-
-ifeq ("${Platform_arch_model}", "x86_32")
-
-OPT_CFLAGS=-xtarget=pentium -xO4 $(EXTRA_OPT_CFLAGS)
-
-endif # 32bit x86
-
-ifeq ("${Platform_arch_model}", "x86_64")
-
-ASFLAGS += $(AS_ARCHFLAG)
-CFLAGS += $(ARCHFLAG/amd64)
-# this one seemed useless
-LFLAGS_VM += $(ARCHFLAG/amd64)
-# this one worked
-LFLAGS += $(ARCHFLAG/amd64)
-AOUT_FLAGS += $(ARCHFLAG/amd64)
-
-# -xO3 is faster than -xO4 on specjbb with SS10 compiler
-OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
-
-endif # 64bit x86
-
-# Inline functions
-CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_${Platform_arch}/vm/solaris_${Platform_arch_model}.il
-
-# no more exceptions
-CFLAGS/NOEX=-features=no%except
-
-
-# avoid compilation problems arising from fact that C++ compiler tries
-# to search for external template definition by just compiling additional
-# source files in th same context
-CFLAGS += -template=no%extdef
-
-# Reduce code bloat by reverting back to 5.0 behavior for static initializers
-CFLAGS += -features=no%split_init
-
-# Use -D_Crun_inline_placement so we don't get references to
-# __1c2n6FIpv_0_ or void*operator new(unsigned,void*)
-# This avoids the hard requirement of the newer Solaris C++ runtime patches.
-# NOTE: This is an undocumented feature of the SS10 compiler. See 6306698.
-CFLAGS += -D_Crun_inline_placement
-
-# PIC is safer for SPARC, and is considerably slower
-# a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
-PICFLAG = -KPIC
-PICFLAG/DEFAULT = $(PICFLAG)
-# [RGV] Need to figure which files to remove to get link to work
-#PICFLAG/BETTER = -pic
-PICFLAG/BETTER = $(PICFLAG/DEFAULT)
-PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -M FILENAME
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -h SONAME
-
-# Build shared library
-SHARED_FLAG = -G
-
-# We don't need libCstd.so and librwtools7.so, only libCrun.so
-CFLAGS += -library=%none
-LFLAGS += -library=%none
-
-LFLAGS += -mt
-
-endif # COMPILER_REV_NUMERIC >= 505
-
-######################################
-# End 5.5 Forte compiler options #
-######################################
-
-######################################
-# Begin 5.2 Forte compiler options #
-######################################
-
-ifeq ($(COMPILER_REV_NUMERIC), 502)
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LIB_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-
-ifeq ("${Platform_arch}", "sparc")
-
-# Flags for Optimization
-
-# [phh] Commented out pending verification that we do indeed want
-# to potentially bias against u1 and u3 targets.
-#CFLAGS += -xchip=ultra2
-
-ifdef LP64
-# SC5.0 tools on v9 are flakey at -xO4
-# [phh] Is this still true for 6.1?
-OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS)
-else
-OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
-endif
-
-endif # sparc
-
-ifeq ("${Platform_arch_model}", "x86_32")
-
-OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
-
-# SC5.0 tools on x86 are flakey at -xO4
-# [phh] Is this still true for 6.1?
-OPT_CFLAGS+=-xO3
-
-endif # 32bit x86
-
-# no more exceptions
-CFLAGS/NOEX=-noex
-
-# Inline functions
-CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_${Platform_arch}/vm/solaris_${Platform_arch_model}.il
-
-# Reduce code bloat by reverting back to 5.0 behavior for static initializers
-CFLAGS += -Qoption ccfe -one_static_init
-
-# PIC is safer for SPARC, and is considerably slower
-# a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
-PICFLAG = -KPIC
-PICFLAG/DEFAULT = $(PICFLAG)
-# [RGV] Need to figure which files to remove to get link to work
-#PICFLAG/BETTER = -pic
-PICFLAG/BETTER = $(PICFLAG/DEFAULT)
-PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
-
-# Use $(MAPFLAG:FILENAME=real_file_name) to specify a map file.
-MAPFLAG = -M FILENAME
-
-# Use $(SONAMEFLAG:SONAME=soname) to specify the intrinsic name of a shared obj
-SONAMEFLAG = -h SONAME
-
-# Build shared library
-SHARED_FLAG = -G
-
-# Would be better if these weren't needed, since we link with CC, but
-# at present removing them causes run-time errors
-LFLAGS += -library=Crun
-LIBS += -library=Crun -lCrun
-
-endif # COMPILER_REV_NUMERIC == 502
-
-##################################
-# End 5.2 Forte compiler options #
-##################################
-
-##################################
-# Begin old 5.1 compiler options #
-##################################
-ifeq ($(COMPILER_REV_NUMERIC), 501)
-
-_JUNK_ := $(shell echo >&2 \
- "*** ERROR: sparkWorks.make incomplete for 5.1 compiler")
- @exit 1
-endif
-##################################
-# End old 5.1 compiler options #
-##################################
-
-##################################
-# Begin old 5.0 compiler options #
-##################################
-
-ifeq (${COMPILER_REV_NUMERIC}, 500)
-
-# Had to hoist this higher apparently because of other changes. Must
-# come before -xarch specification.
-# NOTE: native says optimize for the machine doing the compile, bad news.
-CFLAGS += -xtarget=native
-
-CFLAGS += $(ARCHFLAG)
-AOUT_FLAGS += $(ARCHFLAG)
-LIB_FLAGS += $(ARCHFLAG)
-LFLAGS += $(ARCHFLAG)
-
-CFLAGS += -library=iostream
-LFLAGS += -library=iostream -library=Crun
-LIBS += -library=iostream -library=Crun -lCrun
-
-# Flags for Optimization
-ifdef LP64
-# SC5.0 tools on v9 are flakey at -xO4
-OPT_CFLAGS=-xO3 $(EXTRA_OPT_CFLAGS)
-else
-OPT_CFLAGS=-xO4 $(EXTRA_OPT_CFLAGS)
-endif
-
-ifeq ("${Platform_arch}", "sparc")
-
-CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.il
-
-endif # sparc
-
-ifeq ("${Platform_arch_model}", "x86_32")
-OPT_CFLAGS=-xtarget=pentium $(EXTRA_OPT_CFLAGS)
-ifeq ("${COMPILER_REV_NUMERIC}", "500")
-# SC5.0 tools on x86 are flakey at -xO4
-OPT_CFLAGS+=-xO3
-else
-OPT_CFLAGS+=-xO4
-endif
-
-CFLAGS += $(GAMMADIR)/src/os_cpu/solaris_x86/vm/solaris_x86_32.il
-
-endif # 32bit x86
-
-# The following options run into misaligned ldd problem (raj)
-#OPT_CFLAGS = -fast -O4 $(ARCHFLAG/sparc) -xchip=ultra
-
-# no more exceptions
-CFLAGS/NOEX=-noex
-
-# PIC is safer for SPARC, and is considerably slower
-# a file foo.o which wants to compile -pic can set "PICFLAG/foo.o = -PIC"
-PICFLAG = -PIC
-PICFLAG/DEFAULT = $(PICFLAG)
-# [RGV] Need to figure which files to remove to get link to work
-#PICFLAG/BETTER = -pic
-PICFLAG/BETTER = $(PICFLAG/DEFAULT)
-PICFLAG/BYFILE = $(PICFLAG/$@)$(PICFLAG/DEFAULT$(PICFLAG/$@))
-
-endif # COMPILER_REV_NUMERIC = 500
-
-################################
-# End old 5.0 compiler options #
-################################
-
-ifeq ("${COMPILER_REV_NUMERIC}", "402")
-# 4.2 COMPILERS SHOULD NO LONGER BE USED
-_JUNK_ := $(shell echo >&2 \
- "*** ERROR: SC4.2 compilers are not supported by this code base!")
- @exit 1
-endif
-
-# do not include shared lib path in a.outs
-AOUT_FLAGS += -norunpath
-LFLAGS_VM = -norunpath -z noversion
-
-# need position-indep-code for shared libraries
-# (ild appears to get errors on PIC code, so we'll try non-PIC for debug)
-ifeq ($(PICFLAGS),DEFAULT)
-VM_PICFLAG/LIBJVM = $(PICFLAG/DEFAULT)
-else
-VM_PICFLAG/LIBJVM = $(PICFLAG/BYFILE)
-endif
-VM_PICFLAG/AOUT =
-
-VM_PICFLAG = $(VM_PICFLAG/$(LINK_INTO))
-CFLAGS += $(VM_PICFLAG)
-
-# less dynamic linking (no PLTs, please)
-#LIB_FLAGS += $(LINK_MODE)
-# %%%%% despite -znodefs, -Bsymbolic gets link errors -- Rose
-
-LINK_MODE = $(LINK_MODE/$(VERSION))
-LINK_MODE/debug =
-LINK_MODE/optimized = -Bsymbolic -znodefs
-
-# Have thread local errnos
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1)
-CFLAGS += -mt
-else
-CFLAGS += -D_REENTRANT
-endif
-
-ifdef CC_INTERP
-# C++ Interpreter
-CFLAGS += -DCC_INTERP
-endif
-
-# Flags for Debugging
-# The -g0 setting allows the C++ frontend to inline, which is a big win.
-# The -xs setting disables 'lazy debug info' which puts everything in
-# the .so instead of requiring the '.o' files.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- OPT_CFLAGS += -g0 -xs
-endif
-DEBUG_CFLAGS = -g
-FASTDEBUG_CFLAGS = -g0
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- DEBUG_CFLAGS += -xs
- FASTDEBUG_CFLAGS += -xs
-endif
-
-# Enable the following CFLAGS additions if you need to compare the
-# built ELF objects.
-#
-# The -g option makes static data global and the "-Qoption ccfe
-# -xglobalstatic" option tells the compiler to not globalize static
-# data using a unique globalization prefix. Instead force the use of
-# a static globalization prefix based on the source filepath so the
-# objects from two identical compilations are the same.
-# EXTRA_CFLAGS only covers vm_version.cpp for some reason
-#EXTRA_CFLAGS += -Qoption ccfe -xglobalstatic
-#OPT_CFLAGS += -Qoption ccfe -xglobalstatic
-#DEBUG_CFLAGS += -Qoption ccfe -xglobalstatic
-#FASTDEBUG_CFLAGS += -Qoption ccfe -xglobalstatic
-
-ifeq (${COMPILER_REV_NUMERIC}, 502)
-COMPILER_DATE := $(shell $(CXX) -V 2>&1 | sed -n '/^.*[ ]C++[ ]\([1-9]\.[0-9][0-9]*\)/p' | awk '{ print $$NF; }')
-ifeq (${COMPILER_DATE}, 2001/01/31)
-# disable -g0 in fastdebug since SC6.1 dated 2001/01/31 seems to be buggy
-# use an innocuous value because it will get -g if it's empty
-FASTDEBUG_CFLAGS = -c
-endif
-endif
-
-# Uncomment or 'gmake CFLAGS_BROWSE=-sbfast' to get source browser information.
-# CFLAGS_BROWSE = -sbfast
-CFLAGS += $(CFLAGS_BROWSE)
-
-# ILD is gone as of SS11 (5.8), not supportted in SS10 (5.7)
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 507), 1)
- # use ild when debugging (but when optimizing we want reproducible results)
- ILDFLAG = $(ILDFLAG/$(VERSION))
- ILDFLAG/debug = -xildon
- ILDFLAG/optimized =
- AOUT_FLAGS += $(ILDFLAG)
-endif
-
-# Where to put the *.o files (a.out, or shared library)?
-LINK_INTO = $(LINK_INTO/$(VERSION))
-LINK_INTO/debug = LIBJVM
-LINK_INTO/optimized = LIBJVM
-
-# We link the debug version into the a.out because:
-# 1. ild works on a.out but not shared libraries, and using ild
-# can cut rebuild times by 25% for small changes. (ILD is gone in SS11)
-# 2. dbx cannot gracefully set breakpoints in shared libraries
-#
-
-# apply this setting to link into the shared library even in the debug version:
-ifdef LP64
-LINK_INTO = LIBJVM
-else
-#LINK_INTO = LIBJVM
-endif
-
-# Also, strip debug and line number information (worth about 1.7Mb).
-# If we can create .debuginfo files, then the VM is stripped in vm.make
-# and this macro is not used.
-STRIP_LIB.CXX/POST_HOOK = $(STRIP) -x $@ || exit 1;
-# STRIP_LIB.CXX/POST_HOOK is incorporated into LINK_LIB.CXX/POST_HOOK
-# in certain configurations, such as product.make. Other configurations,
-# such as debug.make, do not include the strip operation.
diff --git a/hotspot/make/solaris/makefiles/sparcv9.make b/hotspot/make/solaris/makefiles/sparcv9.make
deleted file mode 100644
index ae2fad447f9..00000000000
--- a/hotspot/make/solaris/makefiles/sparcv9.make
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (c) 1999, 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.
-#
-#
-
-ASFLAGS += $(AS_ARCHFLAG)
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \< 505), 1)
-# When optimized fully, stubGenerator_sparc.cpp
-# has bogus code for the routine
-# StubGenerator::generate_flush_callers_register_windows()
-OPT_CFLAGS/stubGenerator_sparc.o = $(OPT_CFLAGS/SLOWER)
-
-# For now ad_sparc file is compiled with -O2 %%%% remove when adlc is fixed
-OPT_CFLAGS/ad_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/dfa_sparc.o = $(OPT_CFLAGS/SLOWER)
-
-# CC brings an US-II to its knees compiling the vmStructs asserts under -xO4
-OPT_CFLAGS/vmStructs.o = $(OPT_CFLAGS/O2)
-endif
-
-else
-#Options for gcc
-OPT_CFLAGS/stubGenerator_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/ad_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/dfa_sparc.o = $(OPT_CFLAGS/SLOWER)
-OPT_CFLAGS/vmStructs.o = $(OPT_CFLAGS/O2)
-endif
diff --git a/hotspot/make/solaris/makefiles/tiered.make b/hotspot/make/solaris/makefiles/tiered.make
deleted file mode 100644
index da79ade9fdc..00000000000
--- a/hotspot/make/solaris/makefiles/tiered.make
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 2006, 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.
-#
-#
-
-# Sets make macros for making tiered version of VM
-
-TYPE=TIERED
-
-VM_SUBDIR = server
-
-CFLAGS += -DCOMPILER2 -DCOMPILER1
diff --git a/hotspot/make/solaris/makefiles/top.make b/hotspot/make/solaris/makefiles/top.make
deleted file mode 100644
index 0786477af79..00000000000
--- a/hotspot/make/solaris/makefiles/top.make
+++ /dev/null
@@ -1,141 +0,0 @@
-#
-# Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# top.make is included in the Makefile in the build directories.
-# It DOES NOT include the vm dependency info in order to be faster.
-# Its main job is to implement the incremental form of make lists.
-# It also:
-# -builds and runs adlc via adlc.make
-# -generates JVMTI source and docs via jvmti.make (JSR-163)
-
-# It assumes the following flags are set:
-# CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Jvm_Obj_Files
-
-# -- D. Ungar (5/97) from a file by Bill Bush
-
-# Don't override the built-in $(MAKE).
-# Instead, use "gmake" (or "gnumake") from the command line. --Rose
-#MAKE = gmake
-
-include $(GAMMADIR)/make/altsrc.make
-
-GENERATED = ../generated
-VM = $(GAMMADIR)/src/share/vm
-Plat_File = $(Platform_file)
-CDG = cd $(GENERATED);
-
-Cached_plat = $(GENERATED)/platform.current
-
-AD_Dir = $(GENERATED)/adfiles
-ADLC = $(AD_Dir)/adlc
-AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad)
-AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc)
-AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp
-AD_Files = $(AD_Names:%=$(AD_Dir)/%)
-
-# AD_Files_If_Required/COMPILER1 = ad_stuff
-AD_Files_If_Required/COMPILER2 = ad_stuff
-AD_Files_If_Required/TIERED = ad_stuff
-AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE))
-
-# Wierd argument adjustment for "gnumake -j..."
-adjust-mflags = $(GENERATED)/adjust-mflags
-# If SPEC is set, it's from configure and it's already controlling concurrency
-# for us. Skip setting -j with HOTSPOT_BUILD_JOBS.
-ifeq ($(SPEC), )
- MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"`
-else
- MFLAGS-adjusted = -r $(MFLAGS)
-endif
-
-
-# default target: update lists, make vm
-# done in stages to force sequential order with parallel make
-#
-
-default: vm_build_preliminaries the_vm
- @echo All done.
-
-# This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff dtrace_stuff
- @# We need a null action here, so implicit rules don't get consulted.
-
-$(Cached_plat): $(Plat_File)
- $(CDG) $(CP) $(Plat_File) $(Cached_plat)
-
-# make AD files as necessary
-ad_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f adlc.make $(MFLAGS-adjusted)
-
-# generate JVMTI files from the spec
-jvmti_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f jvmti.make $(MFLAGS-adjusted)
-
-# generate trace files
-trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f trace.make $(MFLAGS-adjusted)
-
-dtrace_stuff: $(Cached_plat) $(adjust-mflags)
- @$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED)
-
-# and the VM: must use other makefile with dependencies included
-
-# We have to go to great lengths to get control over the -jN argument
-# to the recursive invocation of vm.make. The problem is that gnumake
-# resets -jN to -j1 for recursive runs. (How helpful.)
-# Note that the user must specify the desired parallelism level via a
-# command-line or environment variable name HOTSPOT_BUILD_JOBS.
-$(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh
- @+rm -f $@ $@+
- @+cat $< > $@+
- @+chmod +x $@+
- @+mv $@+ $@
-
-the_vm: vm_build_preliminaries $(adjust-mflags)
- @$(MAKE) -f vm.make $(MFLAGS-adjusted)
-
-install: the_vm
- @$(MAKE) -f vm.make $@
-
-# next rules support "make foo.[oi]"
-
-%.o %.i %.s:
- $(MAKE) -f vm.make $(MFLAGS) $@
- #$(MAKE) -f vm.make $@
-
-# this should force everything to be rebuilt
-clean:
- rm -f $(GENERATED)/*.class
- $(MAKE) -f vm.make $(MFLAGS) clean
-
-# just in case it doesn't, this should do it
-realclean:
- $(MAKE) -f vm.make $(MFLAGS) clean
- rm -fr $(GENERATED)
-
-.PHONY: default vm_build_preliminaries
-.PHONY: lists ad_stuff jvmti_stuff trace_stuff the_vm clean realclean
-.PHONY: checks check_os_version install
-
-.NOTPARALLEL:
diff --git a/hotspot/make/solaris/makefiles/trace.make b/hotspot/make/solaris/makefiles/trace.make
deleted file mode 100644
index effe34061ce..00000000000
--- a/hotspot/make/solaris/makefiles/trace.make
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (trace.make) is included from the trace.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate trace files.
-
-include $(GAMMADIR)/make/solaris/makefiles/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-# #########################################################################
-
-HAS_ALT_SRC := false
-ifndef OPENJDK
- ifneq ($(wildcard $(HS_ALT_SRC)/share/vm/trace), )
- HAS_ALT_SRC := true
- endif
-endif
-
-TOPDIR = $(shell echo `pwd`)
-GENERATED = $(TOPDIR)/../generated
-JvmtiOutDir = $(GENERATED)/jvmtifiles
-TraceOutDir = $(GENERATED)/tracefiles
-
-TraceAltSrcDir = $(HS_ALT_SRC)/share/vm/trace
-TraceSrcDir = $(HS_COMMON_SRC)/share/vm/trace
-
-# set VPATH so make knows where to look for source files
-Src_Dirs_V += $(TraceSrcDir) $(TraceAltSrcDir)
-VPATH += $(Src_Dirs_V:%=%:)
-
-TraceGeneratedNames = \
- traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
-
-ifeq ($(HAS_ALT_SRC), true)
-TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
-endif
-
-TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
-
-XSLT = $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-TraceXml = $(TraceSrcDir)/trace.xml
-ifeq ($(HAS_ALT_SRC), true)
- TraceXml = $(TraceAltSrcDir)/trace.xml
-endif
-
-XML_DEPS = $(TraceXml) $(TraceSrcDir)/tracetypes.xml \
- $(TraceSrcDir)/trace.dtd $(TraceSrcDir)/xinclude.mod \
- $(TraceSrcDir)/tracerelationdecls.xml $(TraceSrcDir)/traceevents.xml
-ifeq ($(HAS_ALT_SRC), true)
- XML_DEPS += $(TraceAltSrcDir)/traceeventscustom.xml \
- $(TraceAltSrcDir)/traceeventtypes.xml
-endif
-
-.PHONY: all clean cleanall
-
-# #########################################################################
-
-all: $(TraceGeneratedFiles)
-
-GENERATE_CODE= \
- $(QUIETLY) echo $(LOG_INFO) Generating $@; \
- $(XSLT) -IN $(word 1,$^) -XSL $(word 2,$^) -OUT $@
-
-$(TraceOutDir)/traceEventIds.hpp: $(TraceXml) $(TraceSrcDir)/traceEventIds.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceTypes.hpp: $(TraceXml) $(TraceSrcDir)/traceTypes.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-ifeq ($(HAS_ALT_SRC), false)
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-else
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceRequestables.hpp: $(TraceXml) $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-$(TraceOutDir)/traceEventControl.hpp: $(TraceXml) $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
- $(GENERATE_CODE)
-
-endif
-
-# #########################################################################
-
-clean cleanall:
- rm $(TraceGeneratedFiles)
diff --git a/hotspot/make/solaris/makefiles/vm.make b/hotspot/make/solaris/makefiles/vm.make
deleted file mode 100644
index 270a8ceeda1..00000000000
--- a/hotspot/make/solaris/makefiles/vm.make
+++ /dev/null
@@ -1,352 +0,0 @@
-#
-# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Rules to build JVM and related libraries, included from vm.make in the build
-# directory.
-
-# Common build rules.
-MAKEFILES_DIR=$(GAMMADIR)/make/$(Platform_os_family)/makefiles
-include $(MAKEFILES_DIR)/rules.make
-include $(GAMMADIR)/make/altsrc.make
-
-default: build
-
-#----------------------------------------------------------------------
-# Defs
-
-GENERATED = ../generated
-DEP_DIR = $(GENERATED)/dependencies
-
-# reads the generated files defining the set of .o's and the .o .h dependencies
--include $(DEP_DIR)/*.d
-
-# read machine-specific adjustments (%%% should do this via buildtree.make?)
-include $(MAKEFILES_DIR)/$(BUILDARCH).make
-
-# set VPATH so make knows where to look for source files
-# Src_Dirs_V is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-# The adfiles directory contains ad_.[ch]pp.
-# The jvmtifiles directory contains jvmti*.[ch]pp
-Src_Dirs_V += $(GENERATED)/adfiles $(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-VPATH += $(Src_Dirs_V:%=%:)
-
-# set INCLUDES for C preprocessor
-Src_Dirs_I += $(GENERATED)
-INCLUDES += $(Src_Dirs_I:%=-I%)
-
-# SYMFLAG is used by {dtrace,jsig}.make.
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- # always build with debug info when we can create .debuginfo files
- # and disable 'lazy debug info' so the .so has everything.
- SYMFLAG = -g -xs
-else
- ifeq (${VERSION}, debug)
- SYMFLAG = -g
- else
- SYMFLAG =
- endif
-endif
-
-# The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS = -DVERSION_MAJOR=$(VERSION_MAJOR) \
- -DVERSION_MINOR=$(VERSION_MINOR) \
- -DVERSION_SECURITY=$(VERSION_SECURITY) \
- -DVERSION_PATCH=$(VERSION_PATCH) \
- -DVERSION_BUILD=$(VERSION_BUILD)
-VM_VER_DEFS = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
- -DVERSION_STRING="\"$(VERSION_STRING)\"" \
- -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
- $(JDK_VER_DEFS)
-HS_LIB_ARCH = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
-BUILD_USER = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
-VM_DISTRO = -DHOTSPOT_VM_DISTRO="\"$(HOTSPOT_VM_DISTRO)\""
-
-CXXFLAGS = \
- ${SYSDEFS} \
- ${INCLUDES} \
- ${BUILD_USER} \
- ${HS_LIB_ARCH} \
- ${VM_DISTRO}
-
-# This is VERY important! The version define must only be supplied to vm_version.o
-# If not, ccache will not re-use the cache at all, since the version string might contain
-# a time and date.
-CXXFLAGS/vm_version.o += ${VM_VER_DEFS}
-
-CXXFLAGS/BYFILE = $(CXXFLAGS/$@)
-
-# File specific flags
-CXXFLAGS += $(CXXFLAGS/BYFILE)
-
-# Large File Support
-ifneq ($(LP64), 1)
-CXXFLAGS/ostream.o += -D_FILE_OFFSET_BITS=64
-endif # ifneq ($(LP64), 1)
-
-# CFLAGS_WARN holds compiler options to suppress/enable warnings.
-CFLAGS += $(CFLAGS_WARN)
-
-# Do not use C++ exception handling
-CFLAGS += $(CFLAGS/NOEX)
-
-# Extra flags from gnumake's invocation or environment
-CFLAGS += $(EXTRA_CFLAGS)
-
-# Math Library (libm.so), do not use -lm.
-# There might be two versions of libm.so on the build system:
-# libm.so.1 and libm.so.2, and we want libm.so.1.
-# Depending on the Solaris release being used to build with,
-# /usr/lib/libm.so could point at a libm.so.2, so we are
-# explicit here so that the libjvm.so you have built will work on an
-# older Solaris release that might not have libm.so.2.
-# This is a critical factor in allowing builds on Solaris 10 or newer
-# to run on Solaris 8 or 9.
-#
-LIBM=/usr/lib$(ISA_DIR)/libm.so.1
-
-ifeq ("${Platform_compiler}", "sparcWorks")
-# The whole megilla:
-ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 505), 1)
-# Old Comment: List the libraries in the order the compiler was designed for
-# Not sure what the 'designed for' comment is referring too above.
-# The order may not be too significant anymore, but I have placed this
-# older libm before libCrun, just to make sure it's found and used first.
-LIBS += -lsocket -lsched -ldl $(LIBM) -lCrun -lthread -ldoor -lc -ldemangle -lnsl
-else
-ifeq ($(COMPILER_REV_NUMERIC), 502)
-# SC6.1 has it's own libm.so: specifying anything else provokes a name conflict.
-LIBS += -ldl -lthread -lsocket -lm -lsched -ldoor -ldemangle
-else
-LIBS += -ldl -lthread -lsocket $(LIBM) -lsched -ldoor -ldemangle
-endif # 502
-endif # 505
-else
-LIBS += -lsocket -lsched -ldl $(LIBM) -lthread -lc -ldemangle
-endif # sparcWorks
-
-LIBS += -lkstat -lrt
-
-# By default, link the *.o into the library, not the executable.
-LINK_INTO$(LINK_INTO) = LIBJVM
-
-JDK_LIBDIR = $(JAVA_HOME)/lib/$(LIBARCH)
-
-#----------------------------------------------------------------------
-# jvm_db & dtrace
-include $(MAKEFILES_DIR)/dtrace.make
-
-#----------------------------------------------------------------------
-# JVM
-
-JVM = jvm
-LIBJVM = lib$(JVM).so
-
-LIBJVM_DEBUGINFO = lib$(JVM).debuginfo
-LIBJVM_DIZ = lib$(JVM).diz
-
-SPECIAL_PATHS:=adlc c1 dist gc opto shark libadt
-
-SOURCE_PATHS=\
- $(shell find $(HS_COMMON_SRC)/share/vm/* -type d \! \
- \( -name DUMMY $(foreach dir,$(SPECIAL_PATHS),-o -name $(dir)) \))
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/$(Platform_os_family)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os/posix/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm
-SOURCE_PATHS+=$(HS_COMMON_SRC)/os_cpu/$(Platform_os_arch)/vm
-
-CORE_PATHS=$(foreach path,$(SOURCE_PATHS),$(call altsrc,$(path)) $(path))
-CORE_PATHS+=$(GENERATED)/jvmtifiles $(GENERATED)/tracefiles
-
-ifneq ($(INCLUDE_TRACE), false)
-CORE_PATHS+=$(shell if [ -d $(HS_ALT_SRC)/share/vm/jfr ]; then \
- find $(HS_ALT_SRC)/share/vm/jfr -type d; \
- fi)
-endif
-
-COMPILER1_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/c1)
-COMPILER1_PATHS += $(HS_COMMON_SRC)/share/vm/c1
-
-COMPILER2_PATHS := $(call altsrc,$(HS_COMMON_SRC)/share/vm/opto)
-COMPILER2_PATHS += $(call altsrc,$(HS_COMMON_SRC)/share/vm/libadt)
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/opto
-COMPILER2_PATHS += $(HS_COMMON_SRC)/share/vm/libadt
-COMPILER2_PATHS += $(GENERATED)/adfiles
-
-# Include dirs per type.
-Src_Dirs/CORE := $(CORE_PATHS)
-Src_Dirs/COMPILER1 := $(CORE_PATHS) $(COMPILER1_PATHS)
-Src_Dirs/COMPILER2 := $(CORE_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/TIERED := $(CORE_PATHS) $(COMPILER1_PATHS) $(COMPILER2_PATHS)
-Src_Dirs/ZERO := $(CORE_PATHS)
-Src_Dirs/SHARK := $(CORE_PATHS) $(SHARK_PATHS)
-Src_Dirs := $(Src_Dirs/$(TYPE))
-
-COMPILER2_SPECIFIC_FILES := opto libadt bcEscapeAnalyzer.cpp c2_\* runtime_\*
-COMPILER1_SPECIFIC_FILES := c1_\*
-SHARK_SPECIFIC_FILES := shark
-ZERO_SPECIFIC_FILES := zero
-
-# Always exclude these.
-Src_Files_EXCLUDE += dtrace jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp
-
-# Exclude per type.
-Src_Files_EXCLUDE/CORE := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER1 := $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/COMPILER2 := $(COMPILER1_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/TIERED := $(ZERO_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES)
-Src_Files_EXCLUDE/ZERO := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(SHARK_SPECIFIC_FILES) ciTypeFlow.cpp
-Src_Files_EXCLUDE/SHARK := $(COMPILER1_SPECIFIC_FILES) $(COMPILER2_SPECIFIC_FILES) $(ZERO_SPECIFIC_FILES)
-
-Src_Files_EXCLUDE += $(Src_Files_EXCLUDE/$(TYPE))
-
-# Special handling of arch model.
-ifeq ($(Platform_arch_model), x86_32)
-Src_Files_EXCLUDE += \*x86_64\*
-endif
-ifeq ($(Platform_arch_model), x86_64)
-Src_Files_EXCLUDE += \*x86_32\*
-endif
-
-# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
-define findsrc
- $(notdir $(shell find $(1)/. ! -name . -prune \
- -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
- -a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
-endef
-
-Src_Files := $(foreach e,$(Src_Dirs),$(call findsrc,$(e)))
-
-Obj_Files = $(sort $(addsuffix .o,$(basename $(Src_Files))))
-
-JVM_OBJ_FILES = $(Obj_Files) $(DTRACE_OBJS)
-
-vm_version.o: $(filter-out vm_version.o,$(JVM_OBJ_FILES))
-
-MAPFILE_SHARE := $(GAMMADIR)/make/share/makefiles/mapfile-vers
-
-MAPFILE_EXT_SRC := $(HS_ALT_MAKE)/share/makefiles/mapfile-ext
-ifneq ("$(wildcard $(MAPFILE_EXT_SRC))","")
-MAPFILE_EXT := $(MAPFILE_EXT_SRC)
-endif
-
-mapfile : $(MAPFILE) $(MAPFILE_SHARE) vm.def $(MAPFILE_EXT)
- rm -f $@
- cat $(MAPFILE) $(MAPFILE_DTRACE_OPT) \
- | $(NAWK) '{ \
- if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") { \
- system ("cat ${MAPFILE_SHARE} $(MAPFILE_EXT) vm.def"); \
- } else { \
- print $$0; \
- } \
- }' > $@
-
-mapfile_extended : mapfile $(MAPFILE_DTRACE_OPT)
- rm -f $@
- cat $^ > $@
-
-vm.def: $(Obj_Files)
- sh $(GAMMADIR)/make/solaris/makefiles/build_vm_def.sh *.o > $@
-
-
-ifeq ($(LINK_INTO),AOUT)
- LIBJVM.o =
- LIBJVM_MAPFILE =
- LIBS_VM = $(LIBS)
-else
- LIBJVM.o = $(JVM_OBJ_FILES)
- LIBJVM_MAPFILE$(LDNOMAP) = mapfile_extended
- LFLAGS_VM$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
- LFLAGS_VM += $(SONAMEFLAG:SONAME=$(LIBJVM))
- LFLAGS_VM += -Wl,-z,defs
-ifndef USE_GCC
- LIBS_VM = $(LIBS)
-else
- # JVM is statically linked with libgcc[_s] and libstdc++; this is needed to
- # get around library dependency and compatibility issues. Must use gcc not
- # g++ to link.
- LFLAGS_VM += $(STATIC_LIBGCC)
- LIBS_VM += $(STATIC_STDCXX) $(LIBS)
-endif
-endif
-
-LFLAGS_VM += $(EXTRA_LDFLAGS)
-
-ifdef USE_GCC
-LINK_VM = $(LINK_LIB.CC)
-else
-LINK_VM = $(LINK_LIB.CXX)
-endif
-# making the library:
-$(LIBJVM): $(LIBJVM.o) $(LIBJVM_MAPFILE)
-ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),)
- @echo $(LOG_INFO) Linking vm...
- $(QUIETLY) $(LINK_LIB.CXX/PRE_HOOK)
- $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM)
- $(QUIETLY) $(LINK_LIB.CXX/POST_HOOK)
- $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1
-ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(LIBJVM_DEBUGINFO)
- $(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
- ifeq ($(STRIP_POLICY),all_strip)
- $(QUIETLY) $(STRIP) $@
- else
- ifeq ($(STRIP_POLICY),min_strip)
- $(QUIETLY) $(STRIP) -x $@
- # implied else here is no stripping at all
- endif
- endif
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- $(ZIPEXE) -q -y $(LIBJVM_DIZ) $(LIBJVM_DEBUGINFO)
- $(RM) $(LIBJVM_DEBUGINFO)
- endif
-endif
-endif # filter -sbfast -xsbfast
-
-
-DEST_SUBDIR = $(JDK_LIBDIR)/$(VM_SUBDIR)
-DEST_JVM = $(DEST_SUBDIR)/$(LIBJVM)
-DEST_JVM_DEBUGINFO = $(DEST_SUBDIR)/$(LIBJVM_DEBUGINFO)
-DEST_JVM_DIZ = $(DEST_SUBDIR)/$(LIBJVM_DIZ)
-
-install_jvm: $(LIBJVM)
- @echo "Copying $(LIBJVM) to $(DEST_JVM)"
- $(QUIETLY) test ! -f $(LIBJVM_DEBUGINFO) || \
- $(CP) -f $(LIBJVM_DEBUGINFO) $(DEST_JVM_DEBUGINFO)
- $(QUIETLY) test ! -f $(LIBJVM_DIZ) || \
- $(CP) -f $(LIBJVM_DIZ) $(DEST_JVM_DIZ)
- $(QUIETLY) $(CP) -f $(LIBJVM) $(DEST_JVM) && echo "Done"
-
-#----------------------------------------------------------------------
-# Other files
-
-# Signal interposition library
-include $(MAKEFILES_DIR)/jsig.make
-
-#----------------------------------------------------------------------
-
-build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) $(LIBJVM_DTRACE) dtraceCheck
-
-install: install_jvm install_jsig
-
-.PHONY: default build install install_jvm
diff --git a/hotspot/make/solaris/platform_amd64 b/hotspot/make/solaris/platform_amd64
deleted file mode 100644
index f85242b1d30..00000000000
--- a/hotspot/make/solaris/platform_amd64
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = solaris_x86
-
-os_arch_model = solaris_x86_64
-
-lib_arch = amd64
-
-compiler = sparcWorks
-
-sysdefs = -DSOLARIS -DSPARC_WORKS -DAMD64
diff --git a/hotspot/make/solaris/platform_amd64.gcc b/hotspot/make/solaris/platform_amd64.gcc
deleted file mode 100644
index ebd495bca40..00000000000
--- a/hotspot/make/solaris/platform_amd64.gcc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = x86
-
-arch_model = x86_64
-
-os_arch = solaris_x86
-
-os_arch_model = solaris_x86_64
-
-lib_arch = amd64
-
-compiler = gcc
-
-sysdefs = -DSOLARIS -D_GNU_SOURCE -DAMD64
diff --git a/hotspot/make/solaris/platform_i486 b/hotspot/make/solaris/platform_i486
deleted file mode 100644
index 91d4c5e7a64..00000000000
--- a/hotspot/make/solaris/platform_i486
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = solaris_x86
-
-os_arch_model = solaris_x86_32
-
-lib_arch = i386
-
-compiler = sparcWorks
-
-sysdefs = -DSOLARIS -DSPARC_WORKS -DIA32
diff --git a/hotspot/make/solaris/platform_i486.gcc b/hotspot/make/solaris/platform_i486.gcc
deleted file mode 100644
index 61d55e1b59e..00000000000
--- a/hotspot/make/solaris/platform_i486.gcc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = x86
-
-arch_model = x86_32
-
-os_arch = solaris_x86
-
-os_arch_model = solaris_x86_32
-
-lib_arch = i386
-
-compiler = gcc
-
-sysdefs = -DSOLARIS -D_GNU_SOURCE -DIA32
diff --git a/hotspot/make/solaris/platform_sparc b/hotspot/make/solaris/platform_sparc
deleted file mode 100644
index 424088ef53f..00000000000
--- a/hotspot/make/solaris/platform_sparc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = solaris_sparc
-
-os_arch_model = solaris_sparc
-
-lib_arch = sparc
-
-compiler = sparcWorks
-
-sysdefs = -DSOLARIS -DSPARC_WORKS -DSPARC
diff --git a/hotspot/make/solaris/platform_sparc.gcc b/hotspot/make/solaris/platform_sparc.gcc
deleted file mode 100644
index 9a900f49384..00000000000
--- a/hotspot/make/solaris/platform_sparc.gcc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = solaris_sparc
-
-os_arch_model = solaris_sparc
-
-lib_arch = sparc
-
-compiler = gcc
-
-sysdefs = -DSOLARIS -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/make/solaris/platform_sparcv9 b/hotspot/make/solaris/platform_sparcv9
deleted file mode 100644
index a17dd08d29d..00000000000
--- a/hotspot/make/solaris/platform_sparcv9
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = solaris_sparc
-
-os_arch_model = solaris_sparc
-
-lib_arch = sparcv9
-
-compiler = sparcWorks
-
-sysdefs = -DSOLARIS -DSPARC_WORKS -DSPARC
diff --git a/hotspot/make/solaris/platform_sparcv9.gcc b/hotspot/make/solaris/platform_sparcv9.gcc
deleted file mode 100644
index 2824381774b..00000000000
--- a/hotspot/make/solaris/platform_sparcv9.gcc
+++ /dev/null
@@ -1,15 +0,0 @@
-os_family = solaris
-
-arch = sparc
-
-arch_model = sparc
-
-os_arch = solaris_sparc
-
-os_arch_model = solaris_sparc
-
-lib_arch = sparcv9
-
-compiler = gcc
-
-sysdefs = -DSOLARIS -D_GNU_SOURCE -DSPARC
diff --git a/hotspot/src/share/tools/ProjectCreator/ArgsParser.java b/hotspot/make/src/classes/build/tools/projectcreator/ArgsParser.java
similarity index 96%
rename from hotspot/src/share/tools/ProjectCreator/ArgsParser.java
rename to hotspot/make/src/classes/build/tools/projectcreator/ArgsParser.java
index ca5d0a337f1..97dff3e460d 100644
--- a/hotspot/src/share/tools/ProjectCreator/ArgsParser.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/ArgsParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
class ArgIterator {
String[] args;
int i;
diff --git a/hotspot/src/share/tools/ProjectCreator/BuildConfig.java b/hotspot/make/src/classes/build/tools/projectcreator/BuildConfig.java
similarity index 94%
rename from hotspot/src/share/tools/ProjectCreator/BuildConfig.java
rename to hotspot/make/src/classes/build/tools/projectcreator/BuildConfig.java
index 0ce7ecf039e..81e555233e2 100644
--- a/hotspot/src/share/tools/ProjectCreator/BuildConfig.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/BuildConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
@@ -37,7 +39,7 @@ class BuildConfig {
if (ci == null) {
String comp = (String)getField(null, "CompilerVersion");
try {
- ci = (CompilerInterface)Class.forName("CompilerInterface" + comp).newInstance();
+ ci = (CompilerInterface)Class.forName("build.tools.projectcreator.CompilerInterface" + comp).newInstance();
} catch (Exception cnfe) {
System.err.println("Cannot find support for compiler " + comp);
throw new RuntimeException(cnfe.toString());
@@ -66,6 +68,8 @@ class BuildConfig {
String buildSpace = getFieldString(null, "BuildSpace");
String outDir = buildBase;
String jdkTargetRoot = getFieldString(null, "JdkTargetRoot");
+ String makeBinary = getFieldString(null, "MakeBinary");
+ String makeOutput = expandFormat(getFieldString(null, "MakeOutput"));
put("Id", flavourBuild);
put("OutputDir", outDir);
@@ -74,6 +78,8 @@ class BuildConfig {
put("BuildSpace", buildSpace);
put("OutputDll", outDir + Util.sep + outDll);
put("JdkTargetRoot", jdkTargetRoot);
+ put("MakeBinary", makeBinary);
+ put("MakeOutput", makeOutput);
context = new String [] {flavourBuild, flavour, build, null};
}
@@ -148,9 +154,11 @@ class BuildConfig {
String relativeAltSrcInclude =
getFieldString(null, "RelativeAltSrcInclude");
Vector v = getFieldVector(null, "AltRelativeInclude");
- for (String pathPart : v) {
- if (path.contains(relativeAltSrcInclude + Util.sep + pathPart)) {
- return true;
+ if (v != null) {
+ for (String pathPart : v) {
+ if (path.contains(relativeAltSrcInclude + Util.sep + pathPart)) {
+ return true;
+ }
}
}
return false;
@@ -360,8 +368,7 @@ class BuildConfig {
static boolean appliesToTieredBuild(String cfg) {
return (cfg != null &&
- (cfg.startsWith("compiler1") ||
- cfg.startsWith("compiler2")));
+ cfg.startsWith("server"));
}
// Filters out the IgnoreFile and IgnorePaths since they are
@@ -372,7 +379,7 @@ class BuildConfig {
static String getTieredBuildCfg(String cfg) {
assert appliesToTieredBuild(cfg) : "illegal configuration " + cfg;
- return "tiered" + cfg.substring(9);
+ return "server";
}
static Object getField(String cfg, String field) {
@@ -524,7 +531,7 @@ class C1DebugConfig extends GenericDebugNonKernelConfig {
}
C1DebugConfig() {
- initNames("compiler1", "debug", "jvm.dll");
+ initNames("client", "debug", "jvm.dll");
init(getIncludes(), getDefines());
}
}
@@ -535,7 +542,7 @@ class C1FastDebugConfig extends GenericDebugNonKernelConfig {
}
C1FastDebugConfig() {
- initNames("compiler1", "fastdebug", "jvm.dll");
+ initNames("client", "fastdebug", "jvm.dll");
init(getIncludes(), getDefines());
}
}
@@ -546,7 +553,7 @@ class TieredDebugConfig extends GenericDebugNonKernelConfig {
}
TieredDebugConfig() {
- initNames("tiered", "debug", "jvm.dll");
+ initNames("server", "debug", "jvm.dll");
init(getIncludes(), getDefines());
}
}
@@ -557,7 +564,7 @@ class TieredFastDebugConfig extends GenericDebugNonKernelConfig {
}
TieredFastDebugConfig() {
- initNames("tiered", "fastdebug", "jvm.dll");
+ initNames("server", "fastdebug", "jvm.dll");
init(getIncludes(), getDefines());
}
}
@@ -576,14 +583,14 @@ abstract class ProductConfig extends BuildConfig {
class C1ProductConfig extends ProductConfig {
C1ProductConfig() {
- initNames("compiler1", "product", "jvm.dll");
+ initNames("client", "product", "jvm.dll");
init(getIncludes(), getDefines());
}
}
class TieredProductConfig extends ProductConfig {
TieredProductConfig() {
- initNames("tiered", "product", "jvm.dll");
+ initNames("server", "product", "jvm.dll");
init(getIncludes(), getDefines());
}
}
diff --git a/hotspot/src/share/tools/ProjectCreator/FileTreeCreator.java b/hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreator.java
similarity index 66%
rename from hotspot/src/share/tools/ProjectCreator/FileTreeCreator.java
rename to hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreator.java
index a81132c7029..385903e676f 100644
--- a/hotspot/src/share/tools/ProjectCreator/FileTreeCreator.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreator.java
@@ -1,3 +1,29 @@
+/*
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package build.tools.projectcreator;
+
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
diff --git a/hotspot/src/share/tools/ProjectCreator/FileTreeCreatorVC10.java b/hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreatorVC10.java
similarity index 98%
rename from hotspot/src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
rename to hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreatorVC10.java
index cb0fe33577e..fb7a77f7256 100644
--- a/hotspot/src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/FileTreeCreatorVC10.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
import static java.nio.file.FileVisitResult.CONTINUE;
import java.io.IOException;
diff --git a/hotspot/src/share/tools/ProjectCreator/ProjectCreator.java b/hotspot/make/src/classes/build/tools/projectcreator/ProjectCreator.java
similarity index 98%
rename from hotspot/src/share/tools/ProjectCreator/ProjectCreator.java
rename to hotspot/make/src/classes/build/tools/projectcreator/ProjectCreator.java
index f1e16ea8a45..d5478230a42 100644
--- a/hotspot/src/share/tools/ProjectCreator/ProjectCreator.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/ProjectCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
public class ProjectCreator {
public static void usage() {
diff --git a/hotspot/src/share/tools/ProjectCreator/Util.java b/hotspot/make/src/classes/build/tools/projectcreator/Util.java
similarity index 96%
rename from hotspot/src/share/tools/ProjectCreator/Util.java
rename to hotspot/make/src/classes/build/tools/projectcreator/Util.java
index ca830780048..9741c151dae 100644
--- a/hotspot/src/share/tools/ProjectCreator/Util.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/Util.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
import java.util.*;
import java.io.File;
diff --git a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatform.java b/hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatform.java
similarity index 98%
rename from hotspot/src/share/tools/ProjectCreator/WinGammaPlatform.java
rename to hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatform.java
index a87d4471511..bc0cad7eb01 100644
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatform.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatform.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
@@ -317,6 +319,18 @@ public abstract class WinGammaPlatform {
HsArgHandler.STRING
),
+ new HsArgRule("-makeBinary",
+ "MakeBinary",
+ null,
+ HsArgHandler.STRING
+ ),
+
+ new HsArgRule("-makeOutput",
+ "MakeOutput",
+ null,
+ HsArgHandler.STRING
+ ),
+
new HsArgRule("-platformName",
"PlatformName",
null,
@@ -554,10 +568,6 @@ public abstract class WinGammaPlatform {
usage();
}
- if (BuildConfig.getField(null, "UseToGeneratePch") == null) {
- throw new RuntimeException("ERROR: need to specify one file to compute PCH, with -useToGeneratePch flag");
- }
-
BuildConfig.putField(null, "PlatformObject", this);
}
diff --git a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java b/hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatformVC10.java
similarity index 91%
rename from hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
rename to hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatformVC10.java
index 3225f1e551d..d44fb04c588 100644
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
+++ b/hotspot/make/src/classes/build/tools/projectcreator/WinGammaPlatformVC10.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
*
*/
+package build.tools.projectcreator;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -71,6 +73,7 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
startTag("PropertyGroup", "Label", "Globals");
tagData("ProjectGuid", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}");
+ tagData("Keyword", "MakeFileProj");
tag("SccProjectName");
tag("SccLocalPath");
endTag();
@@ -79,9 +82,8 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
for (BuildConfig cfg : allConfigs) {
startTag(cfg, "PropertyGroup", "Label", "Configuration");
- tagData("ConfigurationType", "DynamicLibrary");
- tagData("UseOfMfc", "false");
- tagData("PlatformToolset", "v120");
+ tagData("ConfigurationType", "Makefile");
+ tagData("UseDebugLibraries", "true");
endTag();
}
@@ -111,6 +113,14 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
tag(cfg, "CodeAnalysisRules");
tag(cfg, "CodeAnalysisRuleAssemblies");
}
+ for (BuildConfig cfg : allConfigs) {
+ tagData(cfg, "NMakeBuildCommandLine", cfg.get("MakeBinary") + " -f ../../Makefile import-hotspot LOG=info");
+ tagData(cfg, "NMakeReBuildCommandLine", cfg.get("MakeBinary") + " -f ../../Makefile clean-hotspot import-hotspot LOG=info");
+ tagData(cfg, "NMakeCleanCommandLine", cfg.get("MakeBinary") + " -f ../../Makefile clean-hotspot LOG=info");
+ tagData(cfg, "NMakeOutput", cfg.get("MakeOutput") + Util.sep + "jvm.dll");
+ tagData(cfg, "NMakePreprocessorDefinitions", Util.join(";", cfg.getDefines()));
+ tagData(cfg, "NMakeIncludeSearchPath", Util.join(";", cfg.getIncludes()));
+ }
endTag();
for (BuildConfig cfg : allConfigs) {
@@ -123,11 +133,6 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
tagV(cfg.getV("LinkerFlags"));
endTag();
- startTag("PreLinkEvent");
- tagData("Message", BuildConfig.getFieldString(null, "PrelinkDescription"));
- tagData("Command", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace("\t", "\r\n")));
- endTag();
-
endTag();
}
@@ -162,18 +167,13 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
for (BuildConfig cfg : allConfigs) {
startTag(cfg, "PropertyGroup");
tagData("LocalDebuggerCommand", cfg.get("JdkTargetRoot") + "\\bin\\java.exe");
- // The JVM loads some libraries using a path relative to
- // itself because it expects to be in a JRE or a JDK. The java
- // launcher's '-XXaltjvm=' option allows the JVM to be outside
- // the JRE or JDK so '-Dsun.java.launcher.is_altjvm=true'
- // forces a fake JAVA_HOME relative path to be used to
- // find the other libraries. The '-XX:+PauseAtExit' option
+ // Since we run "make hotspot-import", we get the correct jvm.dll by java.exe.
+ // The '-XX:+PauseAtExit' option
// causes the VM to wait for key press before exiting; this
// allows any stdout or stderr messages to be seen before
// the cmdtool exits.
- tagData("LocalDebuggerCommandArguments", "-XXaltjvm=$(TargetDir) "
- + "-Dsun.java.launcher.is_altjvm=true "
- + "-XX:+UnlockDiagnosticVMOptions -XX:+PauseAtExit");
+ tagData("LocalDebuggerCommandArguments",
+ "-XX:+UnlockDiagnosticVMOptions -XX:+PauseAtExit");
tagData("LocalDebuggerEnvironment", "JAVA_HOME=" + cfg.get("JdkTargetRoot"));
endTag();
}
@@ -209,11 +209,6 @@ public class WinGammaPlatformVC10 extends WinGammaPlatform {
tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
endTag();
}
- startTag("Filter", "Include", "Resource Files");
- UUID uuid = UUID.randomUUID();
- tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
- tagData("Extensions", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe");
- endTag();
endTag();
//TODO - do I need to split cpp and hpp files?
diff --git a/hotspot/makefiles/symbols/symbols-aix b/hotspot/make/symbols/symbols-aix
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-aix
rename to hotspot/make/symbols/symbols-aix
diff --git a/hotspot/makefiles/symbols/symbols-aix-debug b/hotspot/make/symbols/symbols-aix-debug
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-aix-debug
rename to hotspot/make/symbols/symbols-aix-debug
diff --git a/hotspot/makefiles/symbols/symbols-linux b/hotspot/make/symbols/symbols-linux
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-linux
rename to hotspot/make/symbols/symbols-linux
diff --git a/hotspot/makefiles/symbols/symbols-macosx b/hotspot/make/symbols/symbols-macosx
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-macosx
rename to hotspot/make/symbols/symbols-macosx
diff --git a/hotspot/makefiles/symbols/symbols-shared b/hotspot/make/symbols/symbols-shared
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-shared
rename to hotspot/make/symbols/symbols-shared
diff --git a/hotspot/makefiles/symbols/symbols-solaris b/hotspot/make/symbols/symbols-solaris
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-solaris
rename to hotspot/make/symbols/symbols-solaris
diff --git a/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler1 b/hotspot/make/symbols/symbols-solaris-dtrace-compiler1
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler1
rename to hotspot/make/symbols/symbols-solaris-dtrace-compiler1
diff --git a/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler2 b/hotspot/make/symbols/symbols-solaris-dtrace-compiler2
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler2
rename to hotspot/make/symbols/symbols-solaris-dtrace-compiler2
diff --git a/hotspot/makefiles/symbols/symbols-unix b/hotspot/make/symbols/symbols-unix
similarity index 100%
rename from hotspot/makefiles/symbols/symbols-unix
rename to hotspot/make/symbols/symbols-unix
diff --git a/hotspot/make/test/GtestImage.gmk b/hotspot/make/test/GtestImage.gmk
new file mode 100644
index 00000000000..f24b1a73fcd
--- /dev/null
+++ b/hotspot/make/test/GtestImage.gmk
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+$(foreach v, $(JVM_VARIANTS), \
+ $(eval $(call SetupCopyFiles, COPY_GTEST_$v, \
+ SRC := $(HOTSPOT_OUTPUTDIR)/variant-$v/libjvm/gtest, \
+ DEST := $(TEST_IMAGE_DIR)/hotspot/gtest/$v, \
+ FILES := $(call SHARED_LIBRARY,jvm) gtestLauncher$(EXE_SUFFIX), \
+ )) \
+ $(eval TARGETS += $$(COPY_GTEST_$v)) \
+)
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(foreach v, $(JVM_VARIANTS), \
+ $(eval $(call SetupCopyFiles, COPY_GTEST_MSVCR_$v, \
+ DEST := $(TEST_IMAGE_DIR)/hotspot/gtest/$v, \
+ FILES := $(MSVCR_DLL) $(MSVCP_DLL), \
+ FLATTEN := true, \
+ )) \
+ $(eval TARGETS += $$(COPY_GTEST_MSVCR_$v)) \
+ $(eval $(call SetupCopyFiles, COPY_GTEST_PDB_$v, \
+ SRC := $(HOTSPOT_OUTPUTDIR)/variant-$v/libjvm/gtest, \
+ DEST := $(TEST_IMAGE_DIR)/hotspot/gtest/$v, \
+ FILES := jvm.pdb gtestLauncher.pdb, \
+ )) \
+ $(eval TARGETS += $$(COPY_GTEST_PDB_$v)) \
+ )
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), solaris)
+ $(foreach v, $(JVM_VARIANTS), \
+ $(eval $(call SetupCopyFiles, COPY_GTEST_STLPORT_$v, \
+ DEST := $(TEST_IMAGE_DIR)/hotspot/gtest/$v, \
+ FILES := $(STLPORT_LIB), \
+ )) \
+ $(eval TARGETS += $$(COPY_GTEST_STLPORT_$v)) \
+ )
+endif
+
+all: $(TARGETS)
diff --git a/hotspot/make/test/JtregNative.gmk b/hotspot/make/test/JtregNative.gmk
index 62478ce6923..4e61967e859 100644
--- a/hotspot/make/test/JtregNative.gmk
+++ b/hotspot/make/test/JtregNative.gmk
@@ -51,6 +51,7 @@ BUILD_HOTSPOT_JTREG_NATIVE_SRC := \
$(HOTSPOT_TOPDIR)/test/compiler/floatingpoint/ \
$(HOTSPOT_TOPDIR)/test/compiler/calls \
$(HOTSPOT_TOPDIR)/test/compiler/native \
+ $(HOTSPOT_TOPDIR)/test/testlibrary/jvmti \
#
# Add conditional directories here when needed.
@@ -62,6 +63,7 @@ endif
ifeq ($(TOOLCHAIN_TYPE), solstudio)
BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_liboverflow := -lc
+ BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_libSimpleClassFileLoadHook := -lc
endif
BUILD_HOTSPOT_JTREG_OUTPUT_DIR := $(BUILD_OUTPUT)/support/test/hotspot/jtreg/native
diff --git a/hotspot/make/windows/build.bat b/hotspot/make/windows/build.bat
deleted file mode 100644
index d81bb6dbd99..00000000000
--- a/hotspot/make/windows/build.bat
+++ /dev/null
@@ -1,85 +0,0 @@
-@echo off
-REM
-REM Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
-REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-REM
-REM This code is free software; you can redistribute it and/or modify it
-REM under the terms of the GNU General Public License version 2 only, as
-REM published by the Free Software Foundation.
-REM
-REM This code is distributed in the hope that it will be useful, but WITHOUT
-REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-REM version 2 for more details (a copy is included in the LICENSE file that
-REM accompanied this code).
-REM
-REM You should have received a copy of the GNU General Public License version
-REM 2 along with this work; if not, write to the Free Software Foundation,
-REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-REM
-REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-REM or visit www.oracle.com if you need additional information or have any
-REM questions.
-REM
-REM
-
-REM Set HotSpotWorkSpace to the directory two steps above this script
-for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi)
-
-REM
-REM Since we don't have uname and we could be cross-compiling,
-REM Use the compiler to determine which ARCH we are building
-REM
-cl 2>&1 1>&3 | findstr x64>NUL
-if %errorlevel% == 0 goto amd64
-set VCPROJ=%HotSpotWorkSpace%\build\vs-i486\jvm.vcxproj
-set PLATFORM=x86
-goto testmkshome
-:amd64
-set VCPROJ=%HotSpotWorkSpace%\build\vs-amd64\jvm.vcxproj
-set PLATFORM=x64
-goto testmkshome
-
-:testmkshome
-if not "%HOTSPOTMKSHOME%" == "" goto testjavahome
-if exist c:\cygwin\bin set HOTSPOTMKSHOME=c:\cygwin\bin
-if not "%HOTSPOTMKSHOME%" == "" goto testjavahome
-if exist c:\cygwin64\bin set HOTSPOTMKSHOME=c:\cygwin64\bin
-if not "%HOTSPOTMKSHOME%" == "" goto testjavahome
-echo Error: please set variable HOTSPOTMKSHOME to place where
-echo your MKS/Cygwin installation is
-echo.
-goto end
-
-:testjavahome
-if not "%JAVA_HOME%" == "" goto testbuildversion
-echo Error: please set variable JAVA_HOME to a bootstrap JDK
-echo.
-goto end
-
-:testbuildversion
-if "%1" == "compiler1" goto testdebuglevel
-if "%1" == "tiered" goto testdebuglevel
-goto usage
-
-:testdebuglevel
-if "%2" == "product" goto build
-if "%2" == "debug" goto build
-if "%2" == "fastdebug" goto build
-goto usage
-
-:build
-if NOT EXIST %VCPROJ% call %~dp0\create.bat %JAVA_HOME%
-msbuild /Property:Platform=%PLATFORM% /Property:Configuration=%1_%2 /v:m %VCPROJ%
-goto end
-
-:usage
-echo Usage: build version debuglevel
-echo.
-echo where:
-echo version is "compiler1" or "tiered",
-echo debuglevel is "product", "debug" or "fastdebug"
-exit /b 1
-
-:end
-exit /b %errorlevel%
diff --git a/hotspot/make/windows/build.make b/hotspot/make/windows/build.make
deleted file mode 100644
index 603f15c0c0b..00000000000
--- a/hotspot/make/windows/build.make
+++ /dev/null
@@ -1,253 +0,0 @@
-#
-# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Note: this makefile is invoked both from build.bat and from the J2SE
-# control workspace in exactly the same manner; the required
-# environment variables (Variant, WorkSpace, BootStrapDir, BuildUser, HOTSPOT_BUILD_VERSION)
-# are passed in as command line arguments.
-
-# Note: Running nmake or build.bat from the Windows command shell requires
-# that "sh" be accessible on the PATH. An MKS install does this.
-
-# If we haven't set an ARCH yet use x86
-# create.bat and build.bat will set it, if used.
-!ifndef ARCH
-ARCH=x86
-!endif
-
-
-# Must be one of these values (if value comes in from env, can't trust it)
-!if "$(ARCH)" != "x86"
-!if "$(ARCH)" != "ia64"
-ARCH=x86
-!endif
-!endif
-
-# At this point we should be certain that ARCH has a definition
-# now determine the BUILDARCH
-#
-
-# the default BUILDARCH
-BUILDARCH=i486
-
-# Allow control workspace to force Itanium or AMD64 builds with LP64
-ARCH_TEXT=
-!ifdef LP64
-!if "$(LP64)" == "1"
-ARCH_TEXT=64-Bit
-!if "$(ARCH)" == "x86"
-BUILDARCH=amd64
-!else
-BUILDARCH=ia64
-!endif
-!endif
-!endif
-
-!if "$(BUILDARCH)" != "ia64"
-!ifndef CC_INTERP
-!ifndef FORCE_TIERED
-FORCE_TIERED=1
-!endif
-!endif
-!endif
-
-!if "$(BUILDARCH)" == "amd64"
-Platform_arch=x86
-Platform_arch_model=x86_64
-!endif
-!if "$(BUILDARCH)" == "i486"
-Platform_arch=x86
-Platform_arch_model=x86_32
-!endif
-
-# Supply these from the command line or the environment
-# It doesn't make sense to default this one
-Variant=
-# It doesn't make sense to default this one
-WorkSpace=
-
-variantDir = windows_$(BUILDARCH)_$(Variant)
-
-realVariant=$(Variant)
-VARIANT_TEXT=Core
-!if "$(Variant)" == "compiler1"
-VARIANT_TEXT=Client
-!elseif "$(Variant)" == "compiler2"
-!if "$(FORCE_TIERED)" == "1"
-VARIANT_TEXT=Server
-realVariant=tiered
-!else
-VARIANT_TEXT=Server
-!endif
-!elseif "$(Variant)" == "tiered"
-VARIANT_TEXT=Tiered
-!endif
-
-#########################################################################
-# Parameters for VERSIONINFO resource for jvm.dll.
-# These can be overridden via the nmake.exe command line.
-# They are overridden by RE during the control builds.
-#
-!include "$(WorkSpace)/make/jdk_version"
-
-# Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
-# or make/hotspot_distro.
-!ifndef HOTSPOT_VM_DISTRO
-!ifndef OPENJDK
-!if exists($(WorkSpace)\src\closed)
-!include $(WorkSpace)\make\hotspot_distro
-!else
-!include $(WorkSpace)\make\openjdk_distro
-!endif
-!else
-!include $(WorkSpace)\make\openjdk_distro
-!endif
-!endif
-
-HS_FILEDESC=$(HOTSPOT_VM_DISTRO) $(ARCH_TEXT) $(VARIANT_TEXT) VM
-
-# JDK ProductVersion:
-# 1.5.0_-b will have DLL version 5.0.wx*10.yz
-# Thus, 1.5.0_10-b04 will be 5.0.100.4
-# 1.6.0-b01 will be 6.0.0.1
-# 1.6.0_01a-b02 will be 6.0.11.2
-#
-# STANDALONE_JDK_* variables are defined in make/jdk_version or on command line
-#
-!if "$(JDK_VER)" == ""
-JDK_VER=$(STANDALONE_JDK_MAJOR_VER),$(STANDALONE_JDK_MINOR_VER),$(STANDALONE_JDK_SECURITY_VER),$(STANDALONE_JDK_PATCH_VER)
-!endif
-!if "$(JDK_DOTVER)" == ""
-JDK_DOTVER=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER).$(STANDALONE_JDK_PATCH_VER)
-!endif
-!if "$(VERSION_SHORT)" == ""
-VERSION_SHORT=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER)
-!endif
-
-HS_VER=$(JDK_VER)
-HS_DOTVER=$(JDK_DOTVER)
-
-!if "$(HOTSPOT_RELEASE_VERSION)" == ""
-HOTSPOT_RELEASE_VERSION=$(VERSION_STRING)
-!endif
-
-!if "$(HOTSPOT_VERSION_STRING)" == ""
-HOTSPOT_VERSION_STRING=$(HOTSPOT_RELEASE_VERSION)
-!endif
-
-# End VERSIONINFO parameters
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-!ifndef OPENJDK
-!if !exists($(WorkSpace)\src\closed)
-OPENJDK=true
-!endif
-!endif
-
-#########################################################################
-
-defaultTarget: product
-
-# The product or release build is an optimized build, and is the default
-
-# note that since all the build targets depend on local.make that BUILDARCH
-# and Platform_arch and Platform_arch_model will get set in local.make
-# and there is no need to pass them thru here on the command line
-#
-product release optimized: checks $(variantDir) $(variantDir)\local.make sanity
- cd $(variantDir)
- nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=product ARCH=$(ARCH)
-
-# The debug build is an optional build
-debug: checks $(variantDir) $(variantDir)\local.make sanity
- cd $(variantDir)
- nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=debug ARCH=$(ARCH)
-fastdebug: checks $(variantDir) $(variantDir)\local.make sanity
- cd $(variantDir)
- nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=fastdebug ARCH=$(ARCH)
-
-# target to create just the directory structure
-tree: checks $(variantDir) $(variantDir)\local.make sanity
- mkdir $(variantDir)\product
- mkdir $(variantDir)\debug
- mkdir $(variantDir)\fastdebug
-
-sanity:
- @ echo;
- @ cd $(variantDir)
- @ nmake -nologo -f $(WorkSpace)\make\windows\makefiles\sanity.make
- @ cd ..
- @ echo;
-
-clean: checkVariant
- - rm -r -f $(variantDir)
-
-$(variantDir):
- mkdir $(variantDir)
-
-$(variantDir)\local.make: checks
- @ echo # Generated file > $@
- @ echo Variant=$(realVariant) >> $@
- @ echo WorkSpace=$(WorkSpace) >> $@
- @ echo BootStrapDir=$(BootStrapDir) >> $@
- @ if "$(USERNAME)" NEQ "" echo BuildUser=$(USERNAME) >> $@
- @ echo HS_VER=$(HS_VER) >> $@
- @ echo HS_DOTVER=$(HS_DOTVER) >> $@
- @ echo HS_COMPANY=$(COMPANY_NAME) >> $@
- @ echo HS_FILEDESC=$(HS_FILEDESC) >> $@
- @ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO) >> $@
- @ if "$(OPENJDK)" NEQ "" echo OPENJDK=$(OPENJDK) >> $@
- @ echo HS_COPYRIGHT=$(HOTSPOT_VM_COPYRIGHT) >> $@
- @ echo HS_NAME=$(PRODUCT_NAME) $(VERSION_SHORT) >> $@
- @ echo HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) >> $@
- @ echo JDK_VER=$(JDK_VER) >> $@
- @ echo JDK_DOTVER=$(JDK_DOTVER) >> $@
- @ echo VERSION_STRING=$(VERSION_STRING) >> $@
- @ echo BUILDARCH=$(BUILDARCH) >> $@
- @ echo Platform_arch=$(Platform_arch) >> $@
- @ echo Platform_arch_model=$(Platform_arch_model) >> $@
- @ echo CXX=$(CXX) >> $@
- @ echo LD=$(LD) >> $@
- @ echo MT=$(MT) >> $@
- @ echo RC=$(RC) >> $@
- @ sh $(WorkSpace)/make/windows/get_msc_ver.sh >> $@
- @ if "$(ENABLE_FULL_DEBUG_SYMBOLS)" NEQ "" echo ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) >> $@
- @ if "$(ZIP_DEBUGINFO_FILES)" NEQ "" echo ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) >> $@
- @ if "$(RM)" NEQ "" echo RM=$(RM) >> $@
- @ if "$(CP)" NEQ "" echo CP=$(CP) >> $@
- @ if "$(MV)" NEQ "" echo MV=$(MV) >> $@
- @ if "$(ZIPEXE)" NEQ "" echo ZIPEXE=$(ZIPEXE) >> $@
-
-checks: checkVariant checkWorkSpace
-
-checkVariant:
- @ 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
-
-checkBuildID:
- @ if "$(BuildID)"=="" echo Need to specify "BuildID=..." && false
diff --git a/hotspot/make/windows/build_vm_def.sh b/hotspot/make/windows/build_vm_def.sh
deleted file mode 100644
index 7224970058a..00000000000
--- a/hotspot/make/windows/build_vm_def.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# 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
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This shell script builds a vm.def file for the current VM variant.
-# The .def file exports vtbl symbols which allow the Serviceability
-# Agent to run on Windows. See make/windows/projectfiles/*/vm.def
-# for more information.
-#
-# The script expects to be executed in the directory containing all of
-# the object files.
-
-# Note that we currently do not have a way to set HotSpotMksHome in
-# the batch build, but so far this has not seemed to be a problem. The
-# reason this environment variable is necessary is that it seems that
-# Windows truncates very long PATHs when executing shells like MKS's
-# sh, and it has been found that sometimes `which sh` fails.
-if [ "x$HOTSPOTMKSHOME" != "x" ]; then
- MKS_HOME="$HOTSPOTMKSHOME"
-else
- SH=`which sh`
- MKS_HOME=`dirname "$SH"`
-fi
-
-AWK="$MKS_HOME/awk.exe"
-if [ ! -e $AWK ]; then
- AWK="$MKS_HOME/gawk.exe"
-fi
-GREP="$MKS_HOME/grep.exe"
-SORT="$MKS_HOME/sort.exe"
-UNIQ="$MKS_HOME/uniq.exe"
-CAT="$MKS_HOME/cat.exe"
-RM="$MKS_HOME/rm.exe"
-DUMPBIN="link.exe /dump"
-export VS_UNICODE_OUTPUT=
-
-echo "EXPORTS" > vm1.def
-
-# When called from IDE the first param should contain the link version, otherwise may be nill
-if [ "x$1" != "x" ]; then
-LD_VER="$1"
-fi
-
-if [ "x$LD_VER" != "x800" -a "x$LD_VER" != "x900" -a "x$LD_VER" != "x1000" ]; then
-$DUMPBIN /symbols *.obj | "$GREP" "??_7.*@@6B@" | "$GREP" -v "type_info" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
-else
-# Can't use pipes when calling cl.exe or link.exe from IDE. Using transit file vm3.def
-$DUMPBIN /OUT:vm3.def /symbols *.obj
-"$CAT" vm3.def | "$GREP" "??_7.*@@6B@" | "$GREP" -v "type_info" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
-"$RM" -f vm3.def
-fi
-
-"$CAT" vm1.def vm2.def > vm.def
-"$RM" -f vm1.def vm2.def
diff --git a/hotspot/make/windows/create.bat b/hotspot/make/windows/create.bat
deleted file mode 100644
index a2cdaaaff0b..00000000000
--- a/hotspot/make/windows/create.bat
+++ /dev/null
@@ -1,198 +0,0 @@
-@echo off
-REM
-REM Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-REM
-REM This code is free software; you can redistribute it and/or modify it
-REM under the terms of the GNU General Public License version 2 only, as
-REM published by the Free Software Foundation.
-REM
-REM This code is distributed in the hope that it will be useful, but WITHOUT
-REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-REM version 2 for more details (a copy is included in the LICENSE file that
-REM accompanied this code).
-REM
-REM You should have received a copy of the GNU General Public License version
-REM 2 along with this work; if not, write to the Free Software Foundation,
-REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-REM
-REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-REM or visit www.oracle.com if you need additional information or have any
-REM questions.
-REM
-REM
-
-REM This is the interactive build setup script (as opposed to the batch
-REM build execution script). It creates $HotSpotBuildSpace if necessary,
-REM copies the appropriate files out of $HotSpotWorkSpace into it, and
-REM builds and runs ProjectCreator in it. This has the side-effect of creating
-REM the vm.vcproj file in the buildspace, which is then used in Visual C++.
-
-REM
-REM Since we don't have uname and we could be cross-compiling,
-REM Use the compiler to determine which ARCH we are building
-REM
-REM Note: Running this batch file from the Windows command shell requires
-REM that "grep" be accessible on the PATH. An MKS install does this.
-REM
-
-cl 2>NUL >NUL
-if %errorlevel% == 0 goto nexttest
-echo Make sure cl.exe is in your PATH before running this script.
-goto end
-
-:nexttest
-grep -V 2>NUL >NUL
-if %errorlevel% == 0 goto testit
-echo Make sure grep.exe is in your PATH before running this script. Either cygwin or MKS should work.
-goto end
-
-
-:testit
-cl 2>&1 | grep "x64" >NUL
-if %errorlevel% == 0 goto amd64
-set ARCH=x86
-set BUILDARCH=i486
-set Platform_arch=x86
-set Platform_arch_model=x86_32
-goto done
-:amd64
-set ARCH=x86
-set BUILDARCH=amd64
-set Platform_arch=x86
-set Platform_arch_model=x86_64
-:done
-
-setlocal
-
-if "%1" == "" goto usage
-
-if not "%2" == "" goto usage
-
-REM Set HotSpotWorkSpace to the directy two steps above this script
-for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi)
-set HotSpotBuildRoot=%HotSpotWorkSpace%build
-set HotSpotBuildSpace=%HotSpotBuildRoot%\vs-%BUILDARCH%
-set HotSpotJDKDist=%1
-
-
-REM figure out MSC version
-for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i
-
-echo **************************************************************
-echo MSC_VER = "%MSC_VER%"
-set ProjectFile=%HotSpotBuildSpace%\jvm.vcxproj
-echo %ProjectFile%
-echo **************************************************************
-
-REM Test all variables to see whether the directories they
-REM reference exist
-
-if exist %HotSpotWorkSpace% goto test1
-
-echo Error: directory pointed to by HotSpotWorkSpace
-echo does not exist, or the variable is not set.
-echo.
-goto usage
-
-:test1
-if exist %HotSpotBuildSpace% goto test2
-if not "%HotSpotBuildSpace%" == "" mkdir %HotSpotBuildSpace%
-if exist %HotSpotBuildSpace% goto test2
-echo Error: directory pointed to by HotSpotBuildSpace
-echo does not exist, or the variable is not set.
-echo.
-goto usage
-
-:test2
-if exist %HotSpotJDKDist% goto test3
-echo Error: directory pointed to by %HotSpotJDKDist%
-echo does not exist, or the variable is not set.
-echo.
-goto usage
-
-:test3
-if not "%HOTSPOTMKSHOME%" == "" goto makedir
-if exist c:\cygwin\bin set HOTSPOTMKSHOME=c:\cygwin\bin
-if not "%HOTSPOTMKSHOME%" == "" goto makedir
-if exist c:\cygwin64\bin set HOTSPOTMKSHOME=c:\cygwin64\bin
-if not "%HOTSPOTMKSHOME%" == "" goto makedir
-echo Warning: please set variable HOTSPOTMKSHOME to place where
-echo your MKS/Cygwin installation is
-echo.
-goto usage
-
-:generatefiles
-if NOT EXIST %HotSpotBuildSpace%\%1\generated mkdir %HotSpotBuildSpace%\%1\generated
-copy %HotSpotWorkSpace%\make\windows\projectfiles\%1\* %HotSpotBuildSpace%\%1\generated > NUL
-
-REM force regneration of ProjectFile
-if exist %ProjectFile% del %ProjectFile%
-
-echo -- %1 --
-echo # Generated file! > %HotSpotBuildSpace%\%1\local.make
-echo # Changing a variable below and then deleting %ProjectFile% will cause >> %HotSpotBuildSpace%\%1\local.make
-echo # %ProjectFile% to be regenerated with the new values. Changing the >> %HotSpotBuildSpace%\%1\local.make
-echo # version requires rerunning create.bat. >> %HotSpotBuildSpace%\%1\local.make
-echo. >> %HotSpotBuildSpace%\%1\local.make
-echo Variant=%1 >> %HotSpotBuildSpace%\%1\local.make
-echo WorkSpace=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%1\local.make
-echo HOTSPOTWORKSPACE=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%1\local.make
-echo HOTSPOTBUILDROOT=%HotSpotBuildRoot% >> %HotSpotBuildSpace%\%1\local.make
-echo HOTSPOTBUILDSPACE=%HotSpotBuildSpace% >> %HotSpotBuildSpace%\%1\local.make
-echo HOTSPOTJDKDIST=%HotSpotJDKDist% >> %HotSpotBuildSpace%\%1\local.make
-echo ARCH=%ARCH% >> %HotSpotBuildSpace%\%1\local.make
-echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%1\local.make
-echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%1\local.make
-echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%1\local.make
-echo MSC_VER=%MSC_VER% >> %HotSpotBuildSpace%\%1\local.make
-
-for /D %%j in (debug, fastdebug, product) do (
- if NOT EXIST %HotSpotBuildSpace%\%1\%%j mkdir %HotSpotBuildSpace%\%1\%%j
-)
-
-pushd %HotSpotBuildSpace%\%1\generated
-nmake /nologo
-popd
-
-goto :eof
-
-
-:makedir
-echo NOTE: Using the following settings:
-echo HotSpotWorkSpace=%HotSpotWorkSpace%
-echo HotSpotBuildSpace=%HotSpotBuildSpace%
-echo HotSpotJDKDist=%HotSpotJDKDist%
-
-echo COPYFILES %BUILDARCH%
-call :generatefiles compiler1
-call :generatefiles tiered
-
-pushd %HotSpotBuildRoot%
-REM It doesn't matter which variant we use here, "tiered" is as good as any of the others - we need the common variables
-nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\tiered\local.make %ProjectFile%
-
-popd
-
-goto end
-
-:usage
-echo Usage: create HotSpotJDKDist
-echo.
-echo This is the VS build setup script (as opposed to the batch
-echo build execution script). It creates a build directory if necessary,
-echo copies the appropriate files out of the workspace into it, and
-echo builds and runs ProjectCreator in it. This has the side-effect of creating
-echo the %ProjectFile% file in the build space, which is then used in Visual C++.
-echo.
-echo The HotSpotJDKDist defines the JDK that should be used when running the JVM.
-echo Environment variable FORCE_MSC_VER allows to override MSVC version autodetection.
-echo.
-echo NOTE that it is now NOT safe to modify any of the files in the build
-echo space, since they may be overwritten whenever this script is run or
-echo nmake is run in that directory.
-
-:end
-
-endlocal
diff --git a/hotspot/make/windows/create_obj_files.sh b/hotspot/make/windows/create_obj_files.sh
deleted file mode 100644
index 685f7f3b0f5..00000000000
--- a/hotspot/make/windows/create_obj_files.sh
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-set -e
-
-# Note that we currently do not have a way to set HotSpotMksHome in
-# the batch build, but so far this has not seemed to be a problem. The
-# reason this environment variable is necessary is that it seems that
-# Windows truncates very long PATHs when executing shells like MKS's
-# sh, and it has been found that sometimes `which sh` fails.
-
-if [ "x$HotSpotMksHome" != "x" ]; then
- TOOL_DIR="$HotSpotMksHome"
-else
- # HotSpotMksHome is not set so use the directory that contains "sh".
- # This works with both MKS and Cygwin.
- SH=`which sh`
- TOOL_DIR=`dirname "$SH"`
-fi
-
-DIRNAME="$TOOL_DIR/dirname"
-FIND="$TOOL_DIR/find"
-
-TYPE=$1
-Platform_arch=$2
-Platform_arch_model=$3
-Platform_os_family=windows
-Platform_os_arch=windows_$Platform_arch
-
-WorkSpace=$4
-GENERATED=$5
-
-COMMONSRC_REL=src
-ALTSRC_REL=src/closed # Change this to pick up alt sources from somewhere else
-
-COMMONSRC=${WorkSpace}/${COMMONSRC_REL}
-if [ "x$OPENJDK" != "xtrue" ]; then
- ALTSRC=${WorkSpace}/${ALTSRC_REL}
-else
- ALTSRC=PATH_THAT_DOES_NOT_EXIST
-fi
-
-BASE_PATHS="`if [ -d ${ALTSRC}/share/vm ]; then $FIND ${ALTSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc -o -name opto -o -name shark -o -name libadt \); fi`"
-BASE_PATHS="${BASE_PATHS} ` $FIND ${COMMONSRC}/share/vm ! -name vm -prune -type d \! \( -name adlc -o -name c1 -o -name gc -o -name opto -o -name shark -o -name libadt \)`"
-
-for sd in \
- share/vm/gc/shared \
- os/${Platform_os_family}/vm \
- cpu/${Platform_arch}/vm \
- os_cpu/${Platform_os_arch}/vm; do
- if [ -d "${ALTSRC}/${sd}" ]; then
- BASE_PATHS="${BASE_PATHS} ${ALTSRC}/${sd}"
- fi
- BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/${sd}"
-done
-
-BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles ${GENERATED}/tracefiles"
-
-if [ -d "${ALTSRC}/share/vm/jfr/buffers" ]; then
- BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr/buffers"
-fi
-
-BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/prims/wbtestmethods"
-
-# shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS.
-if [ -d "${ALTSRC}/share/vm/gc" ]; then
- BASE_PATHS="${BASE_PATHS} `$FIND ${ALTSRC}/share/vm/gc ! -name gc -prune -type d \! -name shared`"
-fi
-BASE_PATHS="${BASE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc ! -name gc -prune -type d \! -name shared`"
-
-if [ -d "${ALTSRC}/share/vm/c1" ]; then
- COMPILER1_PATHS="${ALTSRC}/share/vm/c1"
-fi
-COMPILER1_PATHS="${COMPILER1_PATHS} ${COMMONSRC}/share/vm/c1"
-
-if [ -d "${ALTSRC}/share/vm/opto" ]; then
- COMPILER2_PATHS="${ALTSRC}/share/vm/opto"
-fi
-COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/opto"
-if [ -d "${ALTSRC}/share/vm/libadt" ]; then
- COMPILER2_PATHS="${COMPILER2_PATHS} ${ALTSRC}/share/vm/libadt"
-fi
-COMPILER2_PATHS="${COMPILER2_PATHS} ${COMMONSRC}/share/vm/libadt"
-COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles"
-
-# Include dirs per type.
-case "${TYPE}" in
- "compiler1") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;;
- "compiler2") Src_Dirs="${BASE_PATHS} ${COMPILER2_PATHS}" ;;
- "tiered") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;;
- "zero") Src_Dirs="${BASE_PATHS}" ;;
- "shark") Src_Dirs="${BASE_PATHS}" ;;
-esac
-
-COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp c2_* runtime_*"
-COMPILER1_SPECIFIC_FILES="c1_*"
-JVMCI_SPECIFIC_FILES="*jvmci* *JVMCI*"
-SHARK_SPECIFIC_FILES="shark"
-ZERO_SPECIFIC_FILES="zero"
-
-# Always exclude these.
-Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp"
-
-# Exclude per type.
-case "${TYPE}" in
- "compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${JVMCI_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
- "compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
- "tiered") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
- "zero") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${JVMCI_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
- "shark") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${JVMCI_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES}" ;;
-esac
-
-# Special handling of arch model.
-case "${Platform_arch_model}" in
- "x86_32") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_64* ${JVMCI_SPECIFIC_FILES}" ;;
- "x86_64") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} *x86_32*" ;;
-esac
-
-# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
-function findsrc {
- $FIND ${1}/. ! -name . -prune \
- -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
- -a \! \( -name ${Src_Files_EXCLUDE// / -o -name } \) \
- | sed 's/.*\/\(.*\)/\1/';
-}
-
-Src_Files=
-for e in ${Src_Dirs}; do
- Src_Files="${Src_Files}`findsrc ${e}` "
-done
-
-Obj_Files=" "
-for e in ${Src_Files}; do
- o="${e%\.[!.]*}.obj"
- set +e
- chk=`expr "${Obj_Files}" : ".* $o"`
- set -e
- if [ "$chk" != 0 ]; then
- echo "# INFO: skipping duplicate $o"
- continue
- fi
- Obj_Files="${Obj_Files}$o "
-done
-Obj_Files=`echo ${Obj_Files} | tr ' ' '\n' | LC_ALL=C sort`
-
-echo Obj_Files=${Obj_Files}
diff --git a/hotspot/make/windows/cross_build.bat b/hotspot/make/windows/cross_build.bat
deleted file mode 100644
index 36eac52b2fe..00000000000
--- a/hotspot/make/windows/cross_build.bat
+++ /dev/null
@@ -1,61 +0,0 @@
-@echo off
-REM
-REM Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
-REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-REM
-REM This code is free software; you can redistribute it and/or modify it
-REM under the terms of the GNU General Public License version 2 only, as
-REM published by the Free Software Foundation.
-REM
-REM This code is distributed in the hope that it will be useful, but WITHOUT
-REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-REM version 2 for more details (a copy is included in the LICENSE file that
-REM accompanied this code).
-REM
-REM You should have received a copy of the GNU General Public License version
-REM 2 along with this work; if not, write to the Free Software Foundation,
-REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-REM
-REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-REM or visit www.oracle.com if you need additional information or have any
-REM questions.
-REM
-REM
-
-REM Cross compile IA64 compiler2 VM
-REM Usage:
-REM cross_compile flavor workspace bootstrap_dir [build_id]
-REM %1 %2 %3 %4
-REM
-REM Set current directory
-for /F %%i in ('cd') do set CD=%%i
-echo Setting up Visual C++ Compilation Environment
-if "%MSVCDir%" == "" goto setdir1
-goto setenv1
-:setdir1
-SET MSVCDir=C:\Program Files\Microsoft Visual Studio\VC98
-:setenv1
-SET OLDINCLUDE=%INCLUDE%
-SET OLDLIB=%LIB%
-SET OLDPATH=%PATH%
-call "%MSVCDir%\Bin\VCVARS32"
-call %2\make\windows\build %1 adlc %2 %3 %4
-SET INCLUDE=%OLDINCLUDE%
-SET LIB=%OLDLIB%
-SET PATH=%OLDPATH%
-echo Setting up 64-BIT Compilation Environment
-if "%MSSdk%" == "" goto setdir2
-goto setenv2
-:setdir2
-SET MSSdk=C:\Program Files\Microsoft SDK
-:setenv2
-call "%MSSdk%\SetEnv.bat" /XP64
-SET ALT_ADLC_PATH=%CD%\windows_i486_compiler2\generated
-call %2\make\windows\build %1 compiler2 %2 %3 %4
-SET INCLUDE=%OLDINCLUDE%
-SET LIB=%OLDLIB%
-SET PATH=%OLDPATH%
-SET OLDINCLUDE=
-SET OLDLIB=
-SET OLDPATH=
diff --git a/hotspot/make/windows/get_msc_ver.sh b/hotspot/make/windows/get_msc_ver.sh
deleted file mode 100644
index 89c7a3f8c8f..00000000000
--- a/hotspot/make/windows/get_msc_ver.sh
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# Copyright (c) 2005, 2012, 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.
-#
-#
-
-set -e
-
-# This shell script echoes "MSC_VER="
-# It ignores the micro version component.
-# Examples:
-# cl version 12.00.8804 returns "MSC_VER=1200"
-# cl version 13.10.3077 returns "MSC_VER=1310"
-# cl version 14.00.30701 returns "MSC_VER=1399" (OLD_MSSDK version)
-# cl version 14.00.40310.41 returns "MSC_VER=1400"
-# cl version 15.00.21022.8 returns "MSC_VER=1500"
-
-# Note that we currently do not have a way to set HotSpotMksHome in
-# the batch build, but so far this has not seemed to be a problem. The
-# reason this environment variable is necessary is that it seems that
-# Windows truncates very long PATHs when executing shells like MKS's
-# sh, and it has been found that sometimes `which sh` fails.
-
-if [ "x$HotSpotMksHome" != "x" ]; then
- TOOL_DIR="$HotSpotMksHome"
-else
- # HotSpotMksHome is not set so use the directory that contains "sh".
- # This works with both MKS and Cygwin.
- SH=`which sh`
- TOOL_DIR=`dirname "$SH"`
-fi
-
-DIRNAME="$TOOL_DIR/dirname"
-HEAD="$TOOL_DIR/head"
-ECHO="$TOOL_DIR/echo"
-EXPR="$TOOL_DIR/expr"
-CUT="$TOOL_DIR/cut"
-SED="$TOOL_DIR/sed"
-
-if [ "x$FORCE_MSC_VER" != "x" ]; then
- echo "MSC_VER=$FORCE_MSC_VER"
-else
- MSC_VER_RAW=`cl 2>&1 | "$HEAD" -n 1 | "$SED" 's/.*Version[\ ]*\([0-9][0-9.]*\).*/\1/'`
- MSC_VER_MAJOR=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f1`
- MSC_VER_MINOR=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f2`
- MSC_VER_MICRO=`"$ECHO" $MSC_VER_RAW | "$CUT" -d'.' -f3`
- if [ "${MSC_VER_MAJOR}" -eq 14 -a "${MSC_VER_MINOR}" -eq 0 -a "${MSC_VER_MICRO}" -eq 30701 ] ; then
- # This said 1400 but it was really more like VS2003 (VC7) in terms of options
- MSC_VER=1399
- else
- MSC_VER=`"$EXPR" $MSC_VER_MAJOR \* 100 + $MSC_VER_MINOR`
- fi
- echo "MSC_VER=$MSC_VER"
- echo "MSC_VER_RAW=$MSC_VER_RAW"
-fi
-
-if [ "x$FORCE_LD_VER" != "x" ]; then
- echo "LD_VER=$FORCE_LD_VER"
-else
- # use the "link" command that is co-located with the "cl" command
- cl_cmd=`which cl`
- if [ "x$cl_cmd" != "x" ]; then
- link_cmd=`$DIRNAME "$cl_cmd"`/link
- else
- # which can't find "cl" so just use which ever "link" we find
- link_cmd="link"
- fi
- LD_VER_RAW=`"$link_cmd" 2>&1 | "$HEAD" -n 1 | "$SED" 's/.*Version[\ ]*\([0-9][0-9.]*\).*/\1/'`
- LD_VER_MAJOR=`"$ECHO" $LD_VER_RAW | "$CUT" -d'.' -f1`
- LD_VER_MINOR=`"$ECHO" $LD_VER_RAW | "$CUT" -d'.' -f2`
- LD_VER_MICRO=`"$ECHO" $LD_VER_RAW | "$CUT" -d'.' -f3`
- LD_VER=`"$EXPR" $LD_VER_MAJOR \* 100 + $LD_VER_MINOR`
- echo "LD_VER=$LD_VER"
- echo "LD_VER_RAW=$LD_VER_RAW"
-fi
diff --git a/hotspot/make/windows/jvmexp.lcf b/hotspot/make/windows/jvmexp.lcf
deleted file mode 100644
index 6489d02e266..00000000000
--- a/hotspot/make/windows/jvmexp.lcf
+++ /dev/null
@@ -1,10 +0,0 @@
--export:JNI_GetDefaultJavaVMInitArgs
--export:JNI_CreateJavaVM
--export:JNI_GetCreatedJavaVMs
-
--export:jio_snprintf
--export:jio_printf
--export:jio_fprintf
--export:jio_vfprintf
--export:jio_vsnprintf
-
diff --git a/hotspot/make/windows/jvmexp_g.lcf b/hotspot/make/windows/jvmexp_g.lcf
deleted file mode 100644
index 6489d02e266..00000000000
--- a/hotspot/make/windows/jvmexp_g.lcf
+++ /dev/null
@@ -1,10 +0,0 @@
--export:JNI_GetDefaultJavaVMInitArgs
--export:JNI_CreateJavaVM
--export:JNI_GetCreatedJavaVMs
-
--export:jio_snprintf
--export:jio_printf
--export:jio_fprintf
--export:jio_vfprintf
--export:jio_vsnprintf
-
diff --git a/hotspot/make/windows/makefiles/adlc.make b/hotspot/make/windows/makefiles/adlc.make
deleted file mode 100644
index 781e3ac4048..00000000000
--- a/hotspot/make/windows/makefiles/adlc.make
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-
-# Rules for building adlc.exe
-
-# Need exception handling support here
-# $(MS_RUNTIME_OPTION) ( with /D_STATIC_CPPLIB)
-# causes adlc.exe to link with the static
-# multithread Standard C++ library (libcpmt.lib) instead of
-# the dynamic version (msvcprt.lib), which is not included
-# in any of the free tools.
-EXH_FLAGS=$(GX_OPTION) $(MS_RUNTIME_OPTION)
-
-!ifdef ALT_ADLC_PATH
-ADLC=$(ALT_ADLC_PATH)\adlc.exe
-!else
-ADLC=adlc
-!endif
-
-!ifdef LP64
-ADLCFLAGS=-q -T -D_LP64
-!else
-ADLCFLAGS=-q -T -U_LP64
-!endif
-
-ADLC_CXX_FLAGS=$(CXX_FLAGS) /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE
-
-CXX_INCLUDE_DIRS=\
- /I "..\generated" \
- /I "$(WorkSpace)\src\share\vm" \
- /I "$(WorkSpace)\src\os\windows\vm" \
- /I "$(WorkSpace)\src\cpu\$(Platform_arch)\vm"
-
-!if "$(Platform_arch_model)" == "$(Platform_arch)"
-SOURCES_AD=\
- $(WorkSpace)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad
-!else
-SOURCES_AD=\
- $(WorkSpace)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad \
- $(WorkSpace)/src/cpu/$(Platform_arch)/vm/$(Platform_arch).ad
-!endif
-
-# NOTE! If you add any files here, you must also update GENERATED_NAMES_IN_DIR
-# and ProjectCreatorIDEOptions in projectcreator.make.
-GENERATED_NAMES=\
- ad_$(Platform_arch_model).cpp \
- ad_$(Platform_arch_model).hpp \
- ad_$(Platform_arch_model)_clone.cpp \
- ad_$(Platform_arch_model)_expand.cpp \
- ad_$(Platform_arch_model)_format.cpp \
- ad_$(Platform_arch_model)_gen.cpp \
- ad_$(Platform_arch_model)_misc.cpp \
- ad_$(Platform_arch_model)_peephole.cpp \
- ad_$(Platform_arch_model)_pipeline.cpp \
- adGlobals_$(Platform_arch_model).hpp \
- dfa_$(Platform_arch_model).cpp
-
-# NOTE! This must be kept in sync with GENERATED_NAMES
-GENERATED_NAMES_IN_DIR=\
- $(AdlcOutDir)\ad_$(Platform_arch_model).cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model).hpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_clone.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_expand.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_format.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_gen.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_misc.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_peephole.cpp \
- $(AdlcOutDir)\ad_$(Platform_arch_model)_pipeline.cpp \
- $(AdlcOutDir)\adGlobals_$(Platform_arch_model).hpp \
- $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
-
-{$(WorkSpace)\src\share\vm\adlc}.cpp.obj::
- $(CXX) $(ADLC_CXX_FLAGS) $(EXH_FLAGS) $(CXX_INCLUDE_DIRS) /c $<
-
-{$(WorkSpace)\src\share\vm\opto}.cpp.obj::
- $(CXX) $(ADLC_CXX_FLAGS) $(EXH_FLAGS) $(CXX_INCLUDE_DIRS) /c $<
-
-adlc.exe: main.obj adlparse.obj archDesc.obj arena.obj dfa.obj dict2.obj filebuff.obj \
- forms.obj formsopt.obj formssel.obj opcodes.obj output_c.obj output_h.obj
- $(LD) $(LD_FLAGS) /subsystem:console /out:$@ $**
-!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
-# separately. Use ";#2" for .dll and ";#1" for .exe:
- $(MT) /manifest $@.manifest /outputresource:$@;#1
-!endif
-
-$(GENERATED_NAMES_IN_DIR): $(Platform_arch_model).ad adlc.exe
- rm -f $(GENERATED_NAMES)
- if exist $(AdlcOutDir) rmdir /s /q $(AdlcOutDir)
- mkdir $(AdlcOutDir)
- $(ADLC) $(ADLCFLAGS) $(Platform_arch_model).ad
- mv $(GENERATED_NAMES) $(AdlcOutDir)/
-
-$(Platform_arch_model).ad: $(SOURCES_AD)
- rm -f $(Platform_arch_model).ad
- cat $(SOURCES_AD) >$(Platform_arch_model).ad
diff --git a/hotspot/make/windows/makefiles/compile.make b/hotspot/make/windows/makefiles/compile.make
deleted file mode 100644
index 0af2574c251..00000000000
--- a/hotspot/make/windows/makefiles/compile.make
+++ /dev/null
@@ -1,197 +0,0 @@
-#
-# Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Generic compiler settings
-!if "x$(CXX)" == "x"
-CXX=cl.exe
-!endif
-
-# CXX Flags: (these vary slightly from VC6->VS2003->VS2005 compilers)
-# /nologo Supress copyright message at every cl.exe startup
-# /W3 Warning level 3
-# /Zi Include debugging information
-# /d2Zi+ Extended debugging symbols for optimized code (/Zo in VS2013 Update 3 and later)
-# /WX Treat any warning error as a fatal error
-# /MD Use dynamic multi-threaded runtime (msvcrt.dll or msvc*NN.dll)
-# /MTd Use static multi-threaded runtime debug versions
-# /O1 Optimize for size (/Os), skips /Oi
-# /O2 Optimize for speed (/Ot), adds /Oi to /O1
-# /Ox Old "all optimizations flag" for VC6 (in /O1)
-# /Oy Use frame pointer register as GP reg (in /Ox and /O1)
-# /GF Merge string constants and put in read-only memory (in /O1)
-# /Gy Func level link (in /O1, allows for link-time func ordering)
-# /Gs Inserts stack probes (in /O1)
-# /GS Inserts security stack checks in some functions (VS2005 default)
-# /Oi Use intrinsics (in /O2)
-# /Od Disable all optimizations
-# /MP Use multiple cores for compilation
-#
-# NOTE: Normally following any of the above with a '-' will turn off that flag
-#
-# 6655385: For VS2003/2005 we now specify /Oy- (disable frame pointer
-# omission.) This has little to no effect on performance while vastly
-# improving the quality of crash log stack traces involving jvm.dll.
-
-# These are always used in all compiles
-CXX_FLAGS=$(EXTRA_CFLAGS) /nologo /W3
-
-!if "$(WARNINGS_AS_ERRORS)" != "false"
-CXX_FLAGS=$(CXX_FLAGS) /WX
-!endif
-
-# Let's add debug information when Full Debug Symbols is enabled
-!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
-CXX_FLAGS=$(CXX_FLAGS) /Zi /d2Zi+
-!endif
-
-# Based on BUILDARCH we add some flags and select the default compiler name
-!if "$(BUILDARCH)" == "ia64"
-MACHINE=IA64
-CXX_FLAGS=$(CXX_FLAGS) /D "CC_INTERP" /D "_LP64" /D "IA64"
-!endif
-
-!if "$(BUILDARCH)" == "amd64"
-MACHINE=AMD64
-CXX_FLAGS=$(CXX_FLAGS) /D "_LP64" /D "AMD64"
-LP64=1
-!endif
-
-!if "$(BUILDARCH)" == "i486"
-MACHINE=I386
-# VS2013 generates bad l2f without /arch:IA32
-CXX_FLAGS=$(CXX_FLAGS) /D "IA32" /arch:IA32
-!endif
-
-CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS"
-# Must specify this for sharedRuntimeTrig.cpp
-CXX_FLAGS=$(CXX_FLAGS) /D "VM_LITTLE_ENDIAN"
-
-# Used for platform dispatching
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_FAMILY_windows
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_ARCH_$(Platform_arch)
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_ARCH_MODEL_$(Platform_arch_model)
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_ARCH_windows_$(Platform_arch)
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_OS_ARCH_MODEL_windows_$(Platform_arch_model)
-CXX_FLAGS=$(CXX_FLAGS) /D TARGET_COMPILER_visCPP
-
-
-# MSC_VER is a 4 digit number that tells us what compiler is being used
-# and is generated when the local.make file is created by build.make
-# via the script get_msc_ver.sh
-#
-# If MSC_VER is set, it overrides the above default setting.
-# But it should be set.
-# Possible values:
-# 1200 is for VC6
-# 1300 and 1310 is VS2003 or VC7
-# 1399 is our fake number for the VS2005 compiler that really isn't 1400
-# 1400 is for VS2005
-# 1500 is for VS2008
-# 1600 is for VS2010
-# 1700 is for VS2012
-# 1800 is for VS2013
-# Do not confuse this MSC_VER with the predefined macro _MSC_VER that the
-# compiler provides, when MSC_VER==1399, _MSC_VER will be 1400.
-# Normally they are the same, but a pre-release of the VS2005 compilers
-# in the Windows 64bit Platform SDK said it was 1400 when it was really
-# closer to VS2003 in terms of option spellings, so we use 1399 for that
-# 1400 version that really isn't 1400.
-# See the file get_msc_ver.sh for more info.
-
-# By default, we do not want to use the debug version of the msvcrt.dll file
-# but if MFC_DEBUG is defined in the environment it will be used.
-MS_RUNTIME_OPTION = /MD
-!if "$(MFC_DEBUG)" == "true"
-MS_RUNTIME_OPTION = /MTd /D "_DEBUG"
-!endif
-
-# VS2012 and later won't work with:
-# /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
-!if "$(MSC_VER)" < "1700"
-# Always add the _STATIC_CPPLIB flag
-STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB /D _DISABLE_DEPRECATE_STATIC_CPPLIB
-MS_RUNTIME_OPTION = $(MS_RUNTIME_OPTION) $(STATIC_CPPLIB_OPTION)
-!endif
-CXX_FLAGS=$(CXX_FLAGS) $(MS_RUNTIME_OPTION)
-
-PRODUCT_OPT_OPTION = /O2 /Oy-
-FASTDEBUG_OPT_OPTION = /O2 /Oy-
-DEBUG_OPT_OPTION = /Od
-GX_OPTION = /EHsc
-LD_FLAGS = /manifest $(LD_FLAGS)
-MP_FLAG = /MP
-# Manifest Tool - used in VS2005 and later to adjust manifests stored
-# as resources inside build artifacts.
-!if "x$(MT)" == "x"
-MT=mt.exe
-!endif
-!if "$(BUILDARCH)" == "i486"
-LD_FLAGS = /SAFESEH $(LD_FLAGS)
-!endif
-
-CXX_FLAGS = $(CXX_FLAGS) $(MP_FLAG)
-
-# If NO_OPTIMIZATIONS is defined in the environment, turn everything off
-!ifdef NO_OPTIMIZATIONS
-PRODUCT_OPT_OPTION = $(DEBUG_OPT_OPTION)
-FASTDEBUG_OPT_OPTION = $(DEBUG_OPT_OPTION)
-!endif
-
-# Generic linker settings
-!if "x$(LD)" == "x"
-LD=link.exe
-!endif
-LD_FLAGS= $(LD_FLAGS) kernel32.lib user32.lib gdi32.lib winspool.lib \
- comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
- uuid.lib Wsock32.lib winmm.lib version.lib /nologo /machine:$(MACHINE) /opt:REF \
- /opt:ICF,8
-!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
-LD_FLAGS= $(LD_FLAGS) /map /debug
-!endif
-
-
-!if $(MSC_VER) >= 1600
-LD_FLAGS= $(LD_FLAGS) psapi.lib
-!endif
-
-# Resource compiler settings
-!if "x$(RC)" == "x"
-RC=rc.exe
-!endif
-RC_FLAGS=/D "HS_VER=$(HS_VER)" \
- /D "HS_DOTVER=$(HS_DOTVER)" \
- /D "HS_BUILD_ID=$(HS_BUILD_ID)" \
- /D "JDK_VER=$(JDK_VER)" \
- /D "JDK_DOTVER=$(JDK_DOTVER)" \
- /D "HS_COMPANY=$(HS_COMPANY)" \
- /D "HS_FILEDESC=$(HS_FILEDESC)" \
- /D "HS_COPYRIGHT=$(HS_COPYRIGHT)" \
- /D "HS_FNAME=$(HS_FNAME)" \
- /D "HS_INTERNAL_NAME=$(HS_INTERNAL_NAME)" \
- /D "HS_NAME=$(HS_NAME)"
-
-# Need this to match the CXX_FLAGS settings
-!if "$(MFC_DEBUG)" == "true"
-RC_FLAGS = $(RC_FLAGS) /D "_DEBUG"
-!endif
diff --git a/hotspot/make/windows/makefiles/debug.make b/hotspot/make/windows/makefiles/debug.make
deleted file mode 100644
index 3ad45627467..00000000000
--- a/hotspot/make/windows/makefiles/debug.make
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-HS_INTERNAL_NAME=jvm
-HS_FNAME=$(HS_INTERNAL_NAME).dll
-AOUT=$(HS_FNAME)
-GENERATED=../generated
-
-# Allow the user to turn off precompiled headers from the command line.
-!if "$(USE_PRECOMPILED_HEADER)" != "0"
-BUILD_PCH_FILE=_build_pch_file.obj
-!endif
-
-default:: $(BUILD_PCH_FILE) $(AOUT)
-
-!include ../local.make
-!include compile.make
-
-# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
-CXX_FLAGS=$(CXX_FLAGS) $(DEBUG_OPT_OPTION) /D "_NMT_NOINLINE_"
-
-!include $(WorkSpace)/make/windows/makefiles/vm.make
-!include local.make
-
-HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)-debug
-
-# Force resources to be rebuilt every time
-$(Res_Files): FORCE
-
-# NOTE: Changes in this file was just to give a proper command line when linking
-# for use when developing the new build, and should not be integrated.
-$(AOUT): $(Res_Files) $(Obj_Files) vm.def
- $(LD) $(LD_FLAGS) /out:$@ /implib:$*.lib /def:vm.def $(Obj_Files) $(Res_Files)
-!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
-# separately. Use ";#2" for .dll and ";#1" for .exe:
- $(MT) /manifest $@.manifest /outputresource:$@;#2
-!endif
-!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
-!if "$(ZIP_DEBUGINFO_FILES)" == "1"
- $(ZIPEXE) -q $*.diz $*.map $*.pdb
- $(RM) $*.map $*.pdb
-!endif
-!endif
-
-!include $(WorkSpace)/make/windows/makefiles/shared.make
diff --git a/hotspot/make/windows/makefiles/defs.make b/hotspot/make/windows/makefiles/defs.make
deleted file mode 100644
index fbbe6f16490..00000000000
--- a/hotspot/make/windows/makefiles/defs.make
+++ /dev/null
@@ -1,282 +0,0 @@
-#
-# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# The common definitions for hotspot windows builds.
-# Include the top level defs.make under make directory instead of this one.
-# This file is included into make/defs.make.
-# On windows it is only used to construct parameters for
-# make/windows/build.make when make/Makefile is used to build VM.
-
-SLASH_JAVA ?= J:
-PATH_SEP = ;
-
-MAKE_ARGS += WARNINGS_AS_ERRORS=$(WARNINGS_AS_ERRORS)
-
-# Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
-ifeq ($(ARCH_DATA_MODEL),32)
- ARCH_DATA_MODEL=32
- PLATFORM=windows-i586
- VM_PLATFORM=windows_i486
- HS_ARCH=x86
- MAKE_ARGS += ARCH=x86
- MAKE_ARGS += BUILDARCH=i486
- MAKE_ARGS += Platform_arch=x86
- MAKE_ARGS += Platform_arch_model=x86_32
-endif
-
-ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) x86),)
- ARCH_DATA_MODEL=32
- PLATFORM=windows-i586
- VM_PLATFORM=windows_i486
- HS_ARCH=x86
- MAKE_ARGS += ARCH=x86
- MAKE_ARGS += BUILDARCH=i486
- MAKE_ARGS += Platform_arch=x86
- MAKE_ARGS += Platform_arch_model=x86_32
-endif
-
-ifneq ($(ARCH_DATA_MODEL),32)
- ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) ia64),)
- ARCH_DATA_MODEL=64
- PLATFORM=windows-ia64
- VM_PLATFORM=windows_ia64
- HS_ARCH=ia64
- MAKE_ARGS += LP64=1
- MAKE_ARGS += ARCH=ia64
- MAKE_ARGS += BUILDARCH=ia64
- MAKE_ARGS += Platform_arch=ia64
- MAKE_ARGS += Platform_arch_model=ia64
- endif
-
-# http://support.microsoft.com/kb/888731 : this can be either
-# AMD64 for AMD, or EM64T for Intel chips.
- ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) AMD64),)
- ARCH_DATA_MODEL=64
- PLATFORM=windows-amd64
- VM_PLATFORM=windows_amd64
- HS_ARCH=x86
- MAKE_ARGS += LP64=1
- MAKE_ARGS += ARCH=x86
- MAKE_ARGS += BUILDARCH=amd64
- MAKE_ARGS += Platform_arch=x86
- MAKE_ARGS += Platform_arch_model=x86_64
- endif
-
-ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) EM64T),)
- ARCH_DATA_MODEL=64
- PLATFORM=windows-amd64
- VM_PLATFORM=windows_amd64
- HS_ARCH=x86
- MAKE_ARGS += LP64=1
- MAKE_ARGS += ARCH=x86
- MAKE_ARGS += BUILDARCH=amd64
- MAKE_ARGS += Platform_arch=x86
- MAKE_ARGS += Platform_arch_model=x86_64
- endif
-
-# NB later OS versions than 2003 may report "Intel64"
- ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) Intel64),)
- ARCH_DATA_MODEL=64
- PLATFORM=windows-amd64
- VM_PLATFORM=windows_amd64
- HS_ARCH=x86
- MAKE_ARGS += LP64=1
- MAKE_ARGS += ARCH=x86
- MAKE_ARGS += BUILDARCH=amd64
- MAKE_ARGS += Platform_arch=x86
- MAKE_ARGS += Platform_arch_model=x86_64
- endif
-endif
-
-# Full Debug Symbols has been enabled on Windows since JDK1.4.1 so
-# there is no need for an "earlier than JDK7 check".
-# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-# builds is enabled with debug info files ZIP'ed to save space. For
-# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-# debug build without debug info isn't very useful.
-# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-#
-# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-# disabled for a BUILD_FLAVOR == product build.
-#
-# Note: Use of a different variable name for the FDS override option
-# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-# in options via environment variables, use of distinct variables
-# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-# product build, the FULL_DEBUG_SYMBOLS environment variable will be
-# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-# the same variable name is used, then different values can be picked
-# up by different parts of the build. Just to be clear, we only need
-# two variable names because the incoming option value can be
-# overridden in some situations, e.g., a BUILD_FLAVOR != product
-# build.
-
-# Due to the multiple sub-make processes that occur this logic gets
-# executed multiple times. We reduce the noise by at least checking that
-# BUILD_FLAVOR has been set.
-ifneq ($(BUILD_FLAVOR),)
- ifeq ($(BUILD_FLAVOR), product)
- FULL_DEBUG_SYMBOLS ?= 1
- ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
- else
- # debug variants always get Full Debug Symbols (if available)
- ENABLE_FULL_DEBUG_SYMBOLS = 1
- endif
- _JUNK_ := $(shell \
- echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
- MAKE_ARGS += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)
-
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ZIP_DEBUGINFO_FILES ?= 1
- else
- ZIP_DEBUGINFO_FILES=0
- endif
- MAKE_ARGS += ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)
-endif
-
-MAKE_ARGS += RM="$(RM)"
-MAKE_ARGS += ZIPEXE=$(ZIPEXE)
-MAKE_ARGS += CP="${CP}"
-MAKE_ARGS += MV="${MV}"
-
-
-# On 32 bit windows we build server and client, on 64 bit just server.
-ifeq ($(JVM_VARIANTS),)
- ifeq ($(ARCH_DATA_MODEL), 32)
- JVM_VARIANTS:=client,server
- JVM_VARIANT_CLIENT:=true
- JVM_VARIANT_SERVER:=true
- else
- JVM_VARIANTS:=server
- JVM_VARIANT_SERVER:=true
- endif
-endif
-
-JDK_INCLUDE_SUBDIR=win32
-
-# Library suffix
-LIBRARY_SUFFIX=dll
-
-# next parameters are defined in $(GAMMADIR)/make/defs.make.
-MAKE_ARGS += VERSION_SHORT=$(VERSION_SHORT)
-MAKE_ARGS += VERSION_MAJOR=$(VERSION_MAJOR)
-MAKE_ARGS += VERSION_MINOR=$(VERSION_MINOR)
-MAKE_ARGS += VERSION_SECURITY=$(VERSION_SECURITY)
-MAKE_ARGS += VERSION_PATCH=$(VERSION_PATCH)
-MAKE_ARGS += VERSION_BUILD=$(VERSION_BUILD)
-MAKE_ARGS += DEBUG_LEVEL=$(DEBUG_LEVEL)
-
-# JDK_DOTVER and JDK_VER are needed in Windows RC files
-COMMA:=,
-MAKE_ARGS += JDK_DOTVER=$(VERSION_NUMBER_FOUR_POSITIONS)
-MAKE_ARGS += JDK_VER=$(subst .,$(COMMA),$(VERSION_NUMBER_FOUR_POSITIONS))
-
-NMAKE= MAKEFLAGS= MFLAGS= EXTRA_CFLAGS="$(EXTRA_CFLAGS)" nmake -NOLOGO
-ifndef SYSTEM_UNAME
- SYSTEM_UNAME := $(shell uname)
- export SYSTEM_UNAME
-endif
-
-# Check for CYGWIN
-ifneq (,$(findstring CYGWIN,$(SYSTEM_UNAME)))
- USING_CYGWIN=true
-else
- USING_CYGWIN=false
-endif
-# Check for MinGW
-ifneq (,$(findstring MINGW,$(SYSTEM_UNAME)))
- USING_MINGW=true
-endif
-
-# Windows wants particular paths due to nmake (must be after macros defined)
-# It is important that gnumake invokes nmake with C:\\...\\ formated
-# strings so that nmake gets C:\...\ style strings.
-# Check for CYGWIN
-ifeq ($(USING_CYGWIN), true)
- ABS_OUTPUTDIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(OUTPUTDIR)"))
- ABS_BOOTDIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(BOOTDIR)"))
- ABS_GAMMADIR := $(subst /,\\,$(shell /bin/cygpath -m -a "$(GAMMADIR)"))
- ABS_OS_MAKEFILE := $(shell /bin/cygpath -m -a "$(HS_MAKE_DIR)/$(OSNAME)")/build.make
-else ifeq ($(USING_MINGW), true)
- ABS_OUTPUTDIR := $(shell $(CD) $(OUTPUTDIR);$(PWD))
- ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR);$(PWD))
- ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR);$(PWD))
- ABS_OS_MAKEFILE := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME);$(PWD))/build.make
- else
- ABS_OUTPUTDIR := $(subst /,\\,$(shell $(CD) $(OUTPUTDIR);$(PWD)))
- ABS_BOOTDIR := $(subst /,\\,$(shell $(CD) $(BOOTDIR);$(PWD)))
- ABS_GAMMADIR := $(subst /,\\,$(shell $(CD) $(GAMMADIR);$(PWD)))
- ABS_OS_MAKEFILE := $(subst /,\\,$(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME);$(PWD))/build.make)
-endif
-
-EXPORT_SERVER_DIR = $(EXPORT_BIN_DIR)/server
-EXPORT_CLIENT_DIR = $(EXPORT_BIN_DIR)/client
-
-ifeq ($(JVM_VARIANT_SERVER),true)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.$(LIBRARY_SUFFIX)
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.diz
- else
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.pdb
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/jvm.map
- endif
- endif
-endif
-ifeq ($(JVM_VARIANT_CLIENT),true)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.$(LIBRARY_SUFFIX)
- ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
- ifeq ($(ZIP_DEBUGINFO_FILES),1)
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.diz
- else
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.pdb
- EXPORT_LIST += $(EXPORT_CLIENT_DIR)/jvm.map
- endif
- endif
-endif
-
-EXPORT_LIST += $(EXPORT_LIB_DIR)/jvm.lib
-
-# Propagate compiler and tools paths from configure to nmake.
-# Need to make sure they contain \\ and not /.
-ifneq ($(SPEC),)
- ifeq ($(USING_CYGWIN), true)
- MAKE_ARGS += CXX="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(CXX)))"
- MAKE_ARGS += LD="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(LD)))"
- MAKE_ARGS += RC="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(RC)))"
- MAKE_ARGS += MT="$(subst /,\\,$(shell /bin/cygpath -s -m -a $(MT)))"
- else
- MAKE_ARGS += CXX="$(subst /,\\,$(CXX))"
- MAKE_ARGS += LD="$(subst /,\\,$(LD))"
- MAKE_ARGS += RC="$(subst /,\\,$(RC))"
- MAKE_ARGS += MT="$(subst /,\\,$(MT))"
- endif
-endif
-
-ifdef OPENJDK
- MAKE_ARGS += OPENJDK="$(OPENJDK)"
-endif
diff --git a/hotspot/make/windows/makefiles/fastdebug.make b/hotspot/make/windows/makefiles/fastdebug.make
deleted file mode 100644
index ea6fc41a42a..00000000000
--- a/hotspot/make/windows/makefiles/fastdebug.make
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-HS_INTERNAL_NAME=jvm
-HS_FNAME=$(HS_INTERNAL_NAME).dll
-AOUT=$(HS_FNAME)
-GENERATED=../generated
-
-# Allow the user to turn off precompiled headers from the command line.
-!if "$(USE_PRECOMPILED_HEADER)" != "0"
-BUILD_PCH_FILE=_build_pch_file.obj
-!endif
-
-default:: $(BUILD_PCH_FILE) $(AOUT)
-
-!include ../local.make
-!include compile.make
-
-CXX_FLAGS=$(CXX_FLAGS) $(FASTDEBUG_OPT_OPTION)
-
-!include $(WorkSpace)/make/windows/makefiles/vm.make
-!include local.make
-
-HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)-fastdebug
-
-# Force resources to be rebuilt every time
-$(Res_Files): FORCE
-
-# NOTE: Changes in this file was just to give a proper command line when linking
-# for use when developing the new build, and should not be integrated.
-$(AOUT): $(Res_Files) $(Obj_Files) vm.def
- $(LD) $(LD_FLAGS) /out:$@ /implib:$*.lib /def:vm.def $(Obj_Files) $(Res_Files)
-!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
-# separately. Use ";#2" for .dll and ";#1" for .exe:
- $(MT) /manifest $@.manifest /outputresource:$@;#2
-!endif
-!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
-!if "$(ZIP_DEBUGINFO_FILES)" == "1"
- $(ZIPEXE) -q $*.diz $*.map $*.pdb
- $(RM) $*.map $*.pdb
-!endif
-!endif
-
-!include $(WorkSpace)/make/windows/makefiles/shared.make
diff --git a/hotspot/make/windows/makefiles/generated.make b/hotspot/make/windows/makefiles/generated.make
deleted file mode 100644
index e376c7499cb..00000000000
--- a/hotspot/make/windows/makefiles/generated.make
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# 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
-# 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 $(WorkSpace)/make/windows/makefiles/projectcreator.make
-!include local.make
-
-# Pick up rules for building JVMTI (JSR-163)
-JvmtiOutDir=jvmtifiles
-!include $(WorkSpace)/make/windows/makefiles/jvmti.make
-
-# Pick up rules for building trace
-TraceOutDir=tracefiles
-!include $(WorkSpace)/make/windows/makefiles/trace.make
-
-AdlcOutDir=adfiles
-
-!if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
-default:: $(AdlcOutDir)/ad_$(Platform_arch_model).cpp $(AdlcOutDir)/dfa_$(Platform_arch_model).cpp $(JvmtiGeneratedFiles) $(TraceGeneratedFiles) buildobjfiles
-!else
-default:: $(JvmtiGeneratedFiles) $(TraceGeneratedFiles) buildobjfiles
-!endif
-
-buildobjfiles:
- @ sh $(WorkSpace)/make/windows/create_obj_files.sh $(Variant) $(Platform_arch) $(Platform_arch_model) $(WorkSpace) . > objfiles.make
-
-classes/ProjectCreator.class: $(ProjectCreatorSources)
- if exist classes rmdir /s /q classes
- mkdir classes
- $(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\ProjectCreator -d classes $(ProjectCreatorSources)
-
-!if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
-
-!include $(WorkSpace)/make/windows/makefiles/compile.make
-!include $(WorkSpace)/make/windows/makefiles/adlc.make
-
-!endif
-
-!include $(WorkSpace)/make/windows/makefiles/shared.make
diff --git a/hotspot/make/windows/makefiles/jvmti.make b/hotspot/make/windows/makefiles/jvmti.make
deleted file mode 100644
index ce29fe34daa..00000000000
--- a/hotspot/make/windows/makefiles/jvmti.make
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (jvmti.make) is included from the jvmti.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate jvmti.
-
-!include $(WorkSpace)/make/windows/makefiles/rules.make
-
-# #########################################################################
-
-JvmtiSrcDir = $(WorkSpace)/src/share/vm/prims
-InterpreterSrcDir = $(WorkSpace)/src/share/vm/interpreter
-
-JvmtiGeneratedNames = \
- jvmtiEnv.hpp \
- jvmtiEnter.cpp \
- jvmtiEnterTrace.cpp \
- jvmtiEnvRecommended.cpp \
- bytecodeInterpreterWithChecks.cpp \
- jvmti.h \
-
-JvmtiEnvFillSource = $(JvmtiSrcDir)/jvmtiEnvFill.java
-JvmtiEnvFillClass = $(JvmtiOutDir)/jvmtiEnvFill.class
-
-JvmtiGenSource = $(JvmtiSrcDir)/jvmtiGen.java
-JvmtiGenClass = $(JvmtiOutDir)/jvmtiGen.class
-
-#Note: JvmtiGeneratedFiles must be kept in sync with JvmtiGeneratedNames by hand.
-#Should be equivalent #to "JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)"
-JvmtiGeneratedFiles = \
- $(JvmtiOutDir)/jvmtiEnv.hpp \
- $(JvmtiOutDir)/jvmtiEnter.cpp \
- $(JvmtiOutDir)/jvmtiEnterTrace.cpp \
- $(JvmtiOutDir)/jvmtiEnvRecommended.cpp\
- $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp\
- $(JvmtiOutDir)/jvmti.h \
-
-XSLT = $(RUN_JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-# #########################################################################
-
-both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
-
-default::
- @if not exist $(JvmtiOutDir) mkdir $(JvmtiOutDir)
-
-$(JvmtiGenClass): $(JvmtiGenSource)
- $(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
-
-$(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
- @$(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-
-$(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
-
-$(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
- @echo Generating $@
- @$(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
-
-$(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
-
-$(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
- @$(RUN_JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
-
-$(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
-
-$(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
-
-jvmtidocs: $(JvmtiOutDir)/jvmti.html
-
-$(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
- @echo Generating $@
- @$(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
-
-# #########################################################################
-
-cleanall :
- rm $(JvmtiGenClass) $(JvmtiEnvFillClass) $(JvmtiGeneratedFiles)
-
-# #########################################################################
-
-.PHONY: jvmtidocs cleanall
diff --git a/hotspot/make/windows/makefiles/product.make b/hotspot/make/windows/makefiles/product.make
deleted file mode 100644
index 09e750acc07..00000000000
--- a/hotspot/make/windows/makefiles/product.make
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-HS_INTERNAL_NAME=jvm
-HS_FNAME=$(HS_INTERNAL_NAME).dll
-AOUT=$(HS_FNAME)
-GENERATED=../generated
-
-# Allow the user to turn off precompiled headers from the command line.
-!if "$(USE_PRECOMPILED_HEADER)" != "0"
-BUILD_PCH_FILE=_build_pch_file.obj
-!endif
-
-default:: $(BUILD_PCH_FILE) $(AOUT)
-
-!include ../local.make
-!include compile.make
-
-CXX_FLAGS=$(CXX_FLAGS) $(PRODUCT_OPT_OPTION)
-
-RELEASE=
-
-RC_FLAGS=$(RC_FLAGS) /D "NDEBUG"
-
-!include $(WorkSpace)/make/windows/makefiles/vm.make
-!include local.make
-
-HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)
-
-# Force resources to be rebuilt every time
-$(Res_Files): FORCE
-
-# NOTE: Changes in this file was just to give a proper command line when linking
-# for use when developing the new build, and should not be integrated.
-$(AOUT): $(Res_Files) $(Obj_Files) vm.def
- $(LD) $(LD_FLAGS) /out:$@ /implib:$*.lib /def:vm.def $(Obj_Files) $(Res_Files)
-
-!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
-# separately. Use ";#2" for .dll and ";#1" for .exe:
- $(MT) /manifest $@.manifest /outputresource:$@;#2
-!endif
-!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
-!if "$(ZIP_DEBUGINFO_FILES)" == "1"
- $(ZIPEXE) -q $*.diz $*.map $*.pdb
- $(RM) $*.map $*.pdb
-!endif
-!endif
-
-!include $(WorkSpace)/make/windows/makefiles/shared.make
diff --git a/hotspot/make/windows/makefiles/projectcreator.make b/hotspot/make/windows/makefiles/projectcreator.make
deleted file mode 100644
index e48a07b14dc..00000000000
--- a/hotspot/make/windows/makefiles/projectcreator.make
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-!include $(WorkSpace)/make/windows/makefiles/rules.make
-
-# This is used externally by both batch and IDE builds, so can't
-# reference any of the HOTSPOTWORKSPACE, HOTSPOTBUILDSPACE,
-# HOTSPOTRELEASEBINDEST, or HOTSPOTDEBUGBINDEST environment variables.
-
-ProjectCreatorSources=\
- $(WorkSpace)\src\share\tools\ProjectCreator\ProjectCreator.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\FileTreeCreator.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\FileTreeCreatorVC10.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatform.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC10.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\Util.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\BuildConfig.java \
- $(WorkSpace)\src\share\tools\ProjectCreator\ArgsParser.java
-
-# This is only used internally
-ProjectCreatorIncludesPRIVATE=\
- -relativeAltSrcInclude src\closed \
- -altRelativeInclude share\vm \
- -altRelativeInclude os\windows\vm \
- -altRelativeInclude os_cpu\windows_$(Platform_arch)\vm \
- -altRelativeInclude cpu\$(Platform_arch)\vm \
- -relativeInclude src\share\vm \
- -relativeInclude src\share\vm\precompiled \
- -relativeInclude src\share\vm\prims\wbtestmethods \
- -relativeInclude src\share\vm\prims \
- -relativeInclude src\os\windows\vm \
- -relativeInclude src\os_cpu\windows_$(Platform_arch)\vm \
- -relativeInclude src\cpu\$(Platform_arch)\vm \
- -absoluteInclude $(HOTSPOTBUILDSPACE)/%f/generated \
- -relativeSrcInclude src \
- -absoluteSrcInclude $(HOTSPOTBUILDSPACE) \
- -ignorePath $(HOTSPOTBUILDSPACE) \
- -ignorePath share\vm\adlc \
- -ignorePath share\vm\shark \
- -ignorePath share\tools \
- -ignorePath solaris \
- -ignorePath posix \
- -ignorePath sparc \
- -ignorePath linux \
- -ignorePath bsd \
- -ignorePath osx \
- -ignorePath arm \
- -ignorePath ppc \
- -ignorePath zero \
- -ignorePath aix \
- -ignorePath aarch64 \
- -ignorePath jdk.vm.ci \
- -hidePath .hg
-
-
-# This is referenced externally by both the IDE and batch builds
-ProjectCreatorOptions=
-
-# This is used externally, but only by the IDE builds, so we can
-# reference environment variables which aren't defined in the batch
-# build process.
-
-ProjectCreatorIDEOptions = \
- -useToGeneratePch java.cpp \
- -disablePch os_windows.cpp \
- -disablePch os_windows_$(Platform_arch).cpp \
- -disablePch osThread_windows.cpp \
- -disablePch bytecodeInterpreter.cpp \
- -disablePch bytecodeInterpreterWithChecks.cpp \
- -disablePch getThread_windows_$(Platform_arch).cpp \
- -disablePch_compiler2 opcodes.cpp
-
-# Common options for the IDE builds for c1, and c2
-ProjectCreatorIDEOptions=\
- $(ProjectCreatorIDEOptions) \
- -sourceBase $(HOTSPOTWORKSPACE) \
- -buildBase $(HOTSPOTBUILDSPACE)\%f\%b \
- -buildSpace $(HOTSPOTBUILDSPACE) \
- -startAt src \
- -compiler $(VcVersion) \
- -projectFileName $(HOTSPOTBUILDSPACE)\$(ProjectFile) \
- -jdkTargetRoot $(HOTSPOTJDKDIST) \
- -define ALIGN_STACK_FRAMES \
- -define VM_LITTLE_ENDIAN \
- -prelink "" "Generating vm.def..." "cd $(HOTSPOTBUILDSPACE)\%f\%b set HOTSPOTMKSHOME=$(HOTSPOTMKSHOME) set JAVA_HOME=$(HOTSPOTJDKDIST) $(HOTSPOTMKSHOME)\sh $(HOTSPOTWORKSPACE)\make\windows\build_vm_def.sh $(LD_VER)" \
- -ignorePath src\jdk.hotspot.agent \
- -ignoreFile jsig.c \
- -ignoreFile jvmtiEnvRecommended.cpp \
- -ignoreFile jvmtiEnvStub.cpp \
- -ignoreFile globalDefinitions_gcc.hpp \
- -ignoreFile globalDefinitions_sparcWorks.hpp \
- -ignoreFile version.rc \
- -ignoreFile Xusage.txt \
- -define TARGET_ARCH_x86 \
- -define TARGET_OS_ARCH_windows_x86 \
- -define TARGET_OS_FAMILY_windows \
- -define TARGET_COMPILER_visCPP \
- -define INCLUDE_TRACE=1 \
- $(ProjectCreatorIncludesPRIVATE)
-
-# Add in build-specific options
-!if "$(BUILDARCH)" == "i486"
-ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
- -platformName Win32 \
- -ignorePath x86_64 \
- -ignorePath src\share\vm\jvmci \
- -ignoreFile jvmciCodeInstaller_x86.cpp \
- -define IA32 \
- -define INCLUDE_JVMCI=0 \
- -define TARGET_ARCH_MODEL_x86_32
-!else
-!if "$(BUILDARCH)" == "amd64"
-ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
- -platformName x64 \
- -ignorePath x86_32 \
- -define AMD64 \
- -define _LP64 \
- -define INCLUDE_JVMCI=1 \
- -define TARGET_ARCH_MODEL_x86_64 \
- -define TARGET_OS_ARCH_MODEL_windows_x86_64
-!endif
-!endif
-
-ProjectCreatorIDEOptionsIgnoreCompiler1=\
- -ignorePath_TARGET compiler1 \
- -ignorePath_TARGET tiered \
- -ignorePath_TARGET c1_
-
-ProjectCreatorIDEOptionsIgnoreCompiler2=\
- -ignorePath_TARGET compiler2 \
- -ignorePath_TARGET tiered \
- -ignorePath_TARGET src/share/vm/opto \
- -ignorePath_TARGET src/share/vm/libadt \
- -ignorePath_TARGET adfiles \
- -ignoreFile_TARGET bcEscapeAnalyzer.cpp \
- -ignoreFile_TARGET bcEscapeAnalyzer.hpp \
- -ignorePath_TARGET chaitin \
- -ignorePath_TARGET c2_ \
- -ignorePath_TARGET runtime_ \
- -ignoreFile_TARGET ciTypeFlow.cpp \
- -ignoreFile_TARGET ciTypeFlow.hpp \
- -ignoreFile_TARGET $(Platform_arch_model).ad
-
-##################################################
-# Client(C1) compiler specific options
-##################################################
-ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
- -define_compiler1 COMPILER1 \
-$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
-
-##################################################
-# Server(C2) compiler specific options
-##################################################
-#NOTE! This list must be kept in sync with GENERATED_NAMES in adlc.make.
-ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
- -define_compiler2 COMPILER2 \
- -additionalFile_compiler2 $(Platform_arch_model).ad \
- -additionalFile_compiler2 ad_$(Platform_arch_model).cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model).hpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_clone.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_expand.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_format.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_gen.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_misc.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_peephole.cpp \
- -additionalFile_compiler2 ad_$(Platform_arch_model)_pipeline.cpp \
- -additionalFile_compiler2 adGlobals_$(Platform_arch_model).hpp \
- -additionalFile_compiler2 dfa_$(Platform_arch_model).cpp \
- $(ProjectCreatorIDEOptionsIgnoreCompiler1:TARGET=compiler2)
-
-# Add in the jvmti (JSR-163) options
-# NOTE: do not pull in jvmtiEnvRecommended.cpp. This file is generated
-# so the programmer can diff it with jvmtiEnv.cpp to be sure the
-# code merge was done correctly (@see jvmti.make and jvmtiEnvFill.java).
-# If so, they would then check it in as a new version of jvmtiEnv.cpp.
-ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
- -additionalFile jvmtiEnv.hpp \
- -additionalFile jvmtiEnter.cpp \
- -additionalFile jvmtiEnterTrace.cpp \
- -additionalFile jvmti.h \
- -additionalFile bytecodeInterpreterWithChecks.cpp \
- -additionalFile traceEventClasses.hpp \
- -additionalFile traceEventIds.hpp \
-!if "$(OPENJDK)" != "true"
- -additionalFile traceRequestables.hpp \
- -additionalFile traceEventControl.hpp \
- -additionalFile traceProducer.cpp \
-!endif
- -additionalFile traceTypes.hpp
diff --git a/hotspot/make/windows/makefiles/rules.make b/hotspot/make/windows/makefiles/rules.make
deleted file mode 100644
index 2bd02379060..00000000000
--- a/hotspot/make/windows/makefiles/rules.make
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-# These are the commands used externally to compile and run.
-# The \ are used here for traditional Windows apps and " quoted to get
-# past the Unix-like shell:
-!ifdef BootStrapDir
-RUN_JAVA="$(BootStrapDir)\bin\java"
-RUN_JAVAP="$(BootStrapDir)\bin\javap"
-RUN_JAVAH="$(BootStrapDir)\bin\javah"
-RUN_JAR="$(BootStrapDir)\bin\jar"
-COMPILE_JAVAC="$(BootStrapDir)\bin\javac" $(BOOTSTRAP_JAVAC_FLAGS)
-COMPILE_RMIC="$(BootStrapDir)\bin\rmic"
-BOOT_JAVA_HOME=$(BootStrapDir)
-!else
-RUN_JAVA=java
-RUN_JAVAP=javap
-RUN_JAVAH=javah
-RUN_JAR=jar
-COMPILE_JAVAC=javac $(BOOTSTRAP_JAVAC_FLAGS)
-COMPILE_RMIC=rmic
-BOOT_JAVA_HOME=
-!endif
-
-# Settings for javac
-JAVAC_FLAGS=-g -encoding ascii
-
-# Prefer BOOT_JDK_SOURCETARGET if it's set (typically by the top build system)
-# Fall back to the values here if it's not set (hotspot only builds)
-!ifndef BOOT_JDK_SOURCETARGET
-BOOTSTRAP_SOURCETARGET=-source 8 -target 8
-!else
-BOOTSTRAP_SOURCETARGET=$(BOOT_JDK_SOURCETARGET)
-!endif
-
-BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) $(BOOTSTRAP_SOURCETARGET)
-
-# VS2012 and VS2013 loads VS10 projects just fine (and will
-# upgrade them automatically to VS2012 format).
-VcVersion=VC10
-ProjectFile=jvm.vcxproj
-
diff --git a/hotspot/make/windows/makefiles/sanity.make b/hotspot/make/windows/makefiles/sanity.make
deleted file mode 100644
index 515b0bb1b50..00000000000
--- a/hotspot/make/windows/makefiles/sanity.make
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-!include local.make
-
-all: checkCL checkLink
-
-checkCL:
- @ if "$(MSC_VER)" NEQ "1600" if "$(MSC_VER)" NEQ "1700" if "$(MSC_VER)" NEQ "1800" \
- echo *** WARNING *** Unsupported cl.exe version detected: $(MSC_VER) ($(RAW_MSC_VER)), only 1600/1700/1800 (Visual Studio 2010/2012/2013) are supported.
-
-checkLink:
- @ if "$(LD_VER)" NEQ "1000" if "$(LD_VER)" NEQ "1100" if "$(LD_VER)" NEQ "1200" \
- echo *** WARNING *** Unsupported link.exe version detected: $(LD_VER) ($(RAW_LD_VER)), only 1000/1100/1200 (Visual Studio 2010/2012/2013) are supported.
diff --git a/hotspot/make/windows/makefiles/shared.make b/hotspot/make/windows/makefiles/shared.make
deleted file mode 100644
index 06cd75f0e5e..00000000000
--- a/hotspot/make/windows/makefiles/shared.make
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# Copyright (c) 1997, 2012, 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.
-#
-#
-
-DEFAULTACTIONS=clean post_update create
-
-default:: $(SUBDIRS)
-
-!ifndef DIR
-DIR=.
-!endif
-
-!ifndef CXX
-CXX=cl.exe
-!endif
-
-
-!ifdef SUBDIRS
-# \ is used below because $(MAKE) is nmake here, which expects Windows paths
-$(SUBDIRS): FORCE
- @if not exist $@ mkdir $@
- @if not exist $@/local.make echo # Empty > $@/local.make
- @echo nmake $(ACTION) in $(DIR)/$@
- cd $@ && $(MAKE) -NOLOGO -f $(WorkSpace)\make\windows\makefiles\$@.make $(ACTION) DIR=$(DIR)\$@ BUILD_FLAVOR=$(BUILD_FLAVOR)
-!endif
-
-# Creates the needed directory
-create::
-!if "$(DIR)" != "."
- @echo mkdir $(DIR)
-!endif
-
-# Epilog to update for generating derived files
-post_update::
-
-# Removes scrap files
-clean:: FORCE
- -@rm -f *.OLD *.publish
-
-# Remove all scrap files and all generated files
-pure:: clean
- -@rm -f *.OLD *.publish
-
-$(DEFAULTACTIONS) $(ACTIONS)::
-!ifdef SUBDIRS
- @$(MAKE) -nologo ACTION=$@ DIR=$(DIR)
-!endif
-
-FORCE:
-
-
diff --git a/hotspot/make/windows/makefiles/top.make b/hotspot/make/windows/makefiles/top.make
deleted file mode 100644
index fb9c2a25c2f..00000000000
--- a/hotspot/make/windows/makefiles/top.make
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 1997, 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.
-#
-#
-
-!include local.make
-
-!ifdef ADLC_ONLY
-SUBDIRS=generated
-!else
-SUBDIRS=generated $(BUILD_FLAVOR)
-!endif
-
-!include $(WorkSpace)/make/windows/makefiles/shared.make
-
diff --git a/hotspot/make/windows/makefiles/trace.make b/hotspot/make/windows/makefiles/trace.make
deleted file mode 100644
index d52391386d0..00000000000
--- a/hotspot/make/windows/makefiles/trace.make
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# This makefile (trace.make) is included from the trace.make in the
-# build directories.
-#
-# It knows how to build and run the tools to generate trace files.
-
-!include $(WorkSpace)/make/windows/makefiles/rules.make
-
-# #########################################################################
-
-
-TraceAltSrcDir = $(WorkSpace)\src\closed\share\vm\trace
-TraceSrcDir = $(WorkSpace)\src\share\vm\trace
-
-!ifndef OPENJDK
-!if EXISTS($(TraceAltSrcDir))
-HAS_ALT_SRC = true
-!endif
-!endif
-
-!ifndef OPENJDK
-!if EXISTS($(TraceAltSrcDir))
-HAS_ALT_SRC = true
-!endif
-!endif
-
-TraceGeneratedNames = \
- traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
-
-!ifdef HAS_ALT_SRC
-TraceGeneratedNames = $(TraceGeneratedNames) \
- traceRequestables.hpp \
- traceEventControl.hpp
-!endif
-
-
-#Note: TraceGeneratedFiles must be kept in sync with TraceGeneratedNames by hand.
-#Should be equivalent to "TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)"
-TraceGeneratedFiles = \
- $(TraceOutDir)/traceEventClasses.hpp \
- $(TraceOutDir)/traceEventIds.hpp \
- $(TraceOutDir)/traceTypes.hpp
-
-!ifdef HAS_ALT_SRC
-TraceGeneratedFiles = $(TraceGeneratedFiles) \
- $(TraceOutDir)/traceRequestables.hpp \
- $(TraceOutDir)/traceEventControl.hpp
-!endif
-
-XSLT = $(QUIETLY) $(REMOTE) $(RUN_JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-
-TraceXml = $(TraceSrcDir)/trace.xml
-
-!ifdef HAS_ALT_SRC
-TraceXml = $(TraceAltSrcDir)/trace.xml
-!endif
-
-XML_DEPS = $(TraceXml) $(TraceSrcDir)/tracetypes.xml \
- $(TraceSrcDir)/trace.dtd $(TraceSrcDir)/xinclude.mod \
- $(TraceSrcDir)/tracerelationdecls.xml $(TraceSrcDir)/traceevents.xml
-
-!ifdef HAS_ALT_SRC
-XML_DEPS = $(XML_DEPS) $(TraceAltSrcDir)/traceeventscustom.xml \
- $(TraceAltSrcDir)/traceeventtypes.xml
-!endif
-
-.PHONY: all clean cleanall
-
-# #########################################################################
-
-default::
- @if not exist $(TraceOutDir) mkdir $(TraceOutDir)
-
-$(TraceOutDir)/traceEventIds.hpp: $(TraceSrcDir)/traceEventIds.xsl $(XML_DEPS)
- @echo Generating $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceSrcDir)/traceEventIds.xsl -OUT $(TraceOutDir)/traceEventIds.hpp
-
-$(TraceOutDir)/traceTypes.hpp: $(TraceSrcDir)/traceTypes.xsl $(XML_DEPS)
- @echo Generating $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceSrcDir)/traceTypes.xsl -OUT $(TraceOutDir)/traceTypes.hpp
-
-!ifndef HAS_ALT_SRC
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- @echo Generating OpenJDK $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceSrcDir)/traceEventClasses.xsl -OUT $(TraceOutDir)/traceEventClasses.hpp
-
-!else
-
-$(TraceOutDir)/traceEventClasses.hpp: $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
- @echo Generating AltSrc $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceAltSrcDir)/traceEventClasses.xsl -OUT $(TraceOutDir)/traceEventClasses.hpp
-
-$(TraceOutDir)/traceRequestables.hpp: $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
- @echo Generating AltSrc $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceAltSrcDir)/traceRequestables.xsl -OUT $(TraceOutDir)/traceRequestables.hpp
-
-$(TraceOutDir)/traceEventControl.hpp: $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
- @echo Generating AltSrc $@
- $(XSLT) -IN $(TraceXml) -XSL $(TraceAltSrcDir)/traceEventControl.xsl -OUT $(TraceOutDir)/traceEventControl.hpp
-
-!endif
-
-# #########################################################################
-
-cleanall :
- rm $(TraceGeneratedFiles)
diff --git a/hotspot/make/windows/makefiles/vm.make b/hotspot/make/windows/makefiles/vm.make
deleted file mode 100644
index a1391a04413..00000000000
--- a/hotspot/make/windows/makefiles/vm.make
+++ /dev/null
@@ -1,428 +0,0 @@
-#
-# Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-#
-
-# Resource file containing VERSIONINFO
-Res_Files=.\version.res
-
-!include ..\generated\objfiles.make
-
-COMMONSRC=$(WorkSpace)\src
-ALTSRC=$(WorkSpace)\src\closed
-
-!ifdef RELEASE
-CXX_FLAGS=$(CXX_FLAGS) /D "PRODUCT"
-!else
-CXX_FLAGS=$(CXX_FLAGS) /D "ASSERT"
-!if "$(BUILDARCH)" == "amd64"
-CXX_FLAGS=$(CXX_FLAGS) /homeparams
-!endif
-!endif
-
-!if "$(Variant)" == "compiler1"
-CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" /D INCLUDE_JVMCI=0
-!endif
-
-!if "$(Variant)" == "compiler2"
-CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER2"
-!if "$(BUILDARCH)" == "i486"
-CXX_FLAGS=$(CXX_FLAGS) /D INCLUDE_JVMCI=0
-!endif
-!endif
-
-!if "$(Variant)" == "tiered"
-CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" /D "COMPILER2"
-!if "$(BUILDARCH)" == "i486"
-CXX_FLAGS=$(CXX_FLAGS) /D INCLUDE_JVMCI=0
-!endif
-!endif
-
-!if "$(BUILDARCH)" == "i486"
-HOTSPOT_LIB_ARCH=i386
-!else
-HOTSPOT_LIB_ARCH=$(BUILDARCH)
-!endif
-
-# The following variables are defined in the generated local.make file.
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_VERSION_STRING=\"$(HOTSPOT_VERSION_STRING)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_MAJOR=$(VERSION_MAJOR)"
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_MINOR=$(VERSION_MINOR)"
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_SECURITY=$(VERSION_SECURITY)"
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_PATCH=$(VERSION_PATCH)"
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_BUILD=$(VERSION_BUILD)"
-CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_STRING=\"$(VERSION_STRING)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "DEBUG_LEVEL=\"$(DEBUG_LEVEL)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_VM_DISTRO=\"$(HOTSPOT_VM_DISTRO)\""
-
-CXX_FLAGS=$(CXX_FLAGS) $(CXX_INCLUDE_DIRS)
-
-# Define that so jni.h is on correct side
-CXX_FLAGS=$(CXX_FLAGS) /D "_JNI_IMPLEMENTATION_"
-
-!if "$(BUILDARCH)" == "ia64"
-STACK_SIZE="/STACK:1048576,262144"
-!else
-STACK_SIZE=
-!endif
-
-!if "$(BUILDARCH)" == "ia64"
-# AsyncGetCallTrace is not supported on IA64 yet
-AGCT_EXPORT=
-!else
-AGCT_EXPORT=/export:AsyncGetCallTrace
-!endif
-
-# If you modify exports below please do the corresponding changes in
-# src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
-!if "$(BUILDARCH)" == "amd64"
-EXPORT_LIST=
-!else
-EXPORT_LIST=/export:JNI_GetDefaultJavaVMInitArgs \
- /export:JNI_CreateJavaVM \
- /export:JVM_FindClassFromBootLoader \
- /export:JNI_GetCreatedJavaVMs \
- /export:jio_snprintf \
- /export:jio_printf \
- /export:jio_fprintf \
- /export:jio_vfprintf \
- /export:jio_vsnprintf \
- $(AGCT_EXPORT) \
- /export:JVM_GetVersionInfo \
- /export:JVM_InitAgentProperties
-!endif
-
-LD_FLAGS=$(LD_FLAGS) $(STACK_SIZE) /subsystem:windows /dll /base:0x8000000 $(EXPORT_LIST)
-
-CXX_INCLUDE_DIRS=/I "..\generated"
-
-!ifndef OPENJDK
-!if exists($(ALTSRC)\share\vm)
-CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\share\vm"
-!endif
-
-!if exists($(ALTSRC)\os\windows\vm)
-CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\os\windows\vm"
-!endif
-
-!if exists($(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm)
-CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm"
-!endif
-
-!if exists($(ALTSRC)\cpu\$(Platform_arch)\vm)
-CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\cpu\$(Platform_arch)\vm"
-!endif
-!endif # OPENJDK
-
-CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) \
- /I "$(COMMONSRC)\share\vm" \
- /I "$(COMMONSRC)\share\vm\precompiled" \
- /I "$(COMMONSRC)\share\vm\prims" \
- /I "$(COMMONSRC)\os\windows\vm" \
- /I "$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm" \
- /I "$(COMMONSRC)\cpu\$(Platform_arch)\vm"
-
-CXX_DONT_USE_PCH=/D DONT_USE_PRECOMPILED_HEADER
-
-!if "$(USE_PRECOMPILED_HEADER)" != "0"
-CXX_USE_PCH=/Fp"vm.pch" /Yu"precompiled.hpp"
-!if "$(MSC_VER)" > "1600"
-# VS2012 requires this object file to be listed:
-LD_FLAGS=$(LD_FLAGS) _build_pch_file.obj
-!endif
-!else
-CXX_USE_PCH=$(CXX_DONT_USE_PCH)
-!endif
-
-# Where to find the source code for the virtual machine (is this used?)
-VM_PATH=../generated
-VM_PATH=$(VM_PATH);../generated/adfiles
-VM_PATH=$(VM_PATH);../generated/jvmtifiles
-VM_PATH=$(VM_PATH);../generated/tracefiles
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/c1
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/jvmci
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/compiler
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/code
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/interpreter
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/ci
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/classfile
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc/parallel
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc/shared
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc/serial
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc/cms
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc/g1
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/asm
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/logging
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/memory
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/oops
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/prims
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/prims/wbtestmethods
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/runtime
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/services
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/trace
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/utilities
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/libadt
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/os/windows/vm
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/os_cpu/windows_$(Platform_arch)/vm
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/cpu/$(Platform_arch)/vm
-VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/opto
-
-!ifndef OPENJDK
-!if exists($(ALTSRC)\share\vm\jfr)
-VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr
-VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr/buffers
-!endif
-!endif # OPENJDK
-
-VM_PATH={$(VM_PATH)}
-
-# Special case files not using precompiled header files.
-
-c1_RInfo_$(Platform_arch).obj: $(WorkSpace)\src\cpu\$(Platform_arch)\vm\c1_RInfo_$(Platform_arch).cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\cpu\$(Platform_arch)\vm\c1_RInfo_$(Platform_arch).cpp
-
-os_windows.obj: $(WorkSpace)\src\os\windows\vm\os_windows.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\os_windows.cpp
-
-os_windows_$(Platform_arch).obj: $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\os_windows_$(Platform_arch).cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\os_windows_$(Platform_arch).cpp
-
-osThread_windows.obj: $(WorkSpace)\src\os\windows\vm\osThread_windows.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\osThread_windows.cpp
-
-conditionVar_windows.obj: $(WorkSpace)\src\os\windows\vm\conditionVar_windows.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\conditionVar_windows.cpp
-
-getThread_windows_$(Platform_arch).obj: $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\getThread_windows_$(Platform_arch).cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\getThread_windows_$(Platform_arch).cpp
-
-opcodes.obj: $(WorkSpace)\src\share\vm\opto\opcodes.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\share\vm\opto\opcodes.cpp
-
-bytecodeInterpreter.obj: $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpreter.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpreter.cpp
-
-bytecodeInterpreterWithChecks.obj: ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
- $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp
-
-# Default rules for the Virtual Machine
-{$(COMMONSRC)\share\vm\c1}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\compiler}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\code}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\interpreter}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\ci}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\classfile}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\jvmci}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\gc\parallel}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\gc\shared}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\gc\serial}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\gc\cms}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\gc\g1}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\asm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\logging}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\memory}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\oops}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\prims}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\prims\wbtestmethods}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\runtime}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\services}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\trace}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\utilities}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\libadt}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\share\vm\opto}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\os\windows\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-# This guy should remain a single colon rule because
-# otherwise we can't specify the output filename.
-# NOTE: Changes in this file was just to give a proper command line when linking
-# for use when developing the new build, and should not be integrated.
-{$(COMMONSRC)\os\windows\vm}.rc.res:
- $(RC) $(RC_FLAGS) /fo"$@" $<
-
-{$(COMMONSRC)\cpu\$(Platform_arch)\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-!ifndef OPENJDK
-{$(ALTSRC)\share\vm\c1}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\compiler}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\code}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\interpreter}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\ci}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\classfile}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\gc\parallel}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\gc\shared}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\gc\serial}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\gc\cms}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\gc\g1}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\asm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\logging}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\memory}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\oops}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\prims}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\prims\wbtestmethods}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\runtime}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\services}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\trace}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\utilities}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\libadt}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\opto}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\os\windows\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-# otherwise we can't specify the output filename.
-{$(ALTSRC)\os\windows\vm}.rc.res:
- @$(RC) $(RC_FLAGS) /fo"$@" $<
-
-{$(ALTSRC)\cpu\$(Platform_arch)\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\jfr}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{$(ALTSRC)\share\vm\jfr\buffers}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-!endif
-
-{..\generated\incls}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{..\generated\adfiles}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{..\generated\jvmtifiles}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-{..\generated\tracefiles}.cpp.obj::
- $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
-
-default::
-
-_build_pch_file.obj:
- @echo #include "precompiled.hpp" > ../generated/_build_pch_file.cpp
- $(CXX) $(CXX_FLAGS) /Fp"vm.pch" /Yc"precompiled.hpp" /c ../generated/_build_pch_file.cpp
-
-vm.def: $(Obj_Files)
- sh $(WorkSpace)/make/windows/build_vm_def.sh
diff --git a/hotspot/make/windows/projectfiles/common/Makefile b/hotspot/make/windows/projectfiles/common/Makefile
deleted file mode 100644
index 3fe5abc938e..00000000000
--- a/hotspot/make/windows/projectfiles/common/Makefile
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# 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.
-#
-#
-
-!ifdef LOCAL_MAKE
-!include $(LOCAL_MAKE)
-!endif
-
-
-WorkSpace=$(HOTSPOTWORKSPACE)
-
-!ifdef ALT_BOOTDIR
-BootStrapDir=$(ALT_BOOTDIR)
-!else
-!ifdef BOOTDIR
-BootStrapDir=$(BOOTDIR)
-!else
-!ifdef JAVA_HOME
-BootStrapDir=$(JAVA_HOME)
-!else
-!ifdef HOTSPOTJDKDIST
-BootStrapDir=$(HOTSPOTJDKDIST)
-!endif
-!endif
-!endif
-!endif
-
-# if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
-!ifndef OPENJDK
-!if !exists($(WorkSpace)\src\closed)
-OPENJDK=true
-!endif
-!endif
-
-
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/projectcreator.make
-!include $(WorkSpace)/make/windows/makefiles/compile.make
-
-# Pick up rules for building JVMTI (JSR-163)
-JvmtiOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\jvmtifiles
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/jvmti.make
-
-# Pick up rules for building trace
-TraceOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\tracefiles
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/trace.make
-
-!if "$(Variant)" == "compiler2"
-# Pick up rules for building adlc
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make
-!endif
-
-!if "$(Variant)" == "tiered"
-# Pick up rules for building adlc
-!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make
-!endif
-
-HS_INTERNAL_NAME=jvm
-
-default:: $(AdditionalTargets) $(JvmtiGeneratedFiles) $(TraceGeneratedFiles)
-
-!include $(HOTSPOTWORKSPACE)/make/jdk_version
-
-VERSION_MAJOR=$(STANDALONE_JDK_MAJOR_VER)
-VERSION_MINOR=$(STANDALONE_JDK_MINOR_VER)
-VERSION_SECURITY=$(STANDALONE_JDK_SECURITY_VER)
-VERSION_PATCH=$(STANDALONE_JDK_PATCH_VER)
-
-!if "$(VERSION_BUILD)" == ""
-VERSION_BUILD=0
-!endif
-
-!if "$(VERSION_OPT)" != ""
-HOTSPOT_PRE = internal-$(VERSION_OPT)
-!else
-HOTSPOT_PRE = internal
-!endif
-!if "$(VERSION_STRING)" == ""
-VERSION_STRING="\\\"$(VERSION_MAJOR)-$(HOTSPOT_PRE)+$(VERSION_BUILD)-$(USERNAME).vsbuild\\\""
-!endif
-HOTSPOT_VERSION_STRING=$(VERSION_STRING)
-
-# Define HOTSPOT_VM_DISTRO if HOTSPOT_VM_DISTRO is set,
-# and if it is not see if we have the src/closed directory
-!if "$(HOTSPOT_VM_DISTRO)" != ""
-HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)
-!else
-!if exists($(HOTSPOTWORKSPACE)\src\closed)
-HOTSPOT_VM_DISTRO="\\\"Java HotSpot(TM)\\\""
-!else
-HOTSPOT_VM_DISTRO="\\\"OpenJDK\\\""
-!endif
-
-!endif
-
-
-
-ReleaseOptions = -define HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO) -define HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) -define VERSION_MAJOR=$(VERSION_MAJOR) -define VERSION_MINOR=$(VERSION_MINOR) -define VERSION_SECURITY=$(VERSION_SECURITY) -define VERSION_PATCH=$(VERSION_PATCH) -define VERSION_BUILD=$(VERSION_BUILD) -define VERSION_STRING=$(VERSION_STRING)
-ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) $(ReleaseOptions)
-
-$(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class
- @$(RUN_JAVA) -Djava.class.path="$(HOTSPOTBUILDSPACE)/classes" ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions)
-
-clean:
- @rm -rf $(HOTSPOTBUILDSPACE)/classes
- @rm -r $(HOTSPOTBUILDSPACE)/$(ProjectFile)
-
-$(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class: $(ProjectCreatorSources)
- @if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes
- @mkdir $(HOTSPOTBUILDSPACE)\classes
- @$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\ProjectCreator -d $(HOTSPOTBUILDSPACE)/classes $(ProjectCreatorSources)
-
-FORCE:
diff --git a/hotspot/make/windows/projectfiles/compiler1/Makefile b/hotspot/make/windows/projectfiles/compiler1/Makefile
deleted file mode 100644
index 183a27647dd..00000000000
--- a/hotspot/make/windows/projectfiles/compiler1/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 1999, 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
diff --git a/hotspot/make/windows/projectfiles/compiler1/vm.def b/hotspot/make/windows/projectfiles/compiler1/vm.def
deleted file mode 100644
index b450e81fd01..00000000000
--- a/hotspot/make/windows/projectfiles/compiler1/vm.def
+++ /dev/null
@@ -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).
-;
diff --git a/hotspot/make/windows/projectfiles/compiler1/vm.dsw b/hotspot/make/windows/projectfiles/compiler1/vm.dsw
deleted file mode 100644
index 934f51afdb3..00000000000
--- a/hotspot/make/windows/projectfiles/compiler1/vm.dsw
+++ /dev/null
@@ -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>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsp b/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsp
deleted file mode 100644
index 557cce42c76..00000000000
--- a/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsp
+++ /dev/null
@@ -1,142 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ADLCompiler" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ADLCompiler - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ADLCompiler.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ADLCompiler.mak" CFG="ADLCompiler - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ADLCompiler - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ADLCompiler - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ADLCompiler - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\adlc\Release"
-# PROP Intermediate_Dir ".\adlc\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "$(HotSpotWorkSpace)\src\share\vm\prims" /I "$(HotSpotWorkSpace)\src\share\vm\lookup" /I "$(HotSpotWorkSpace)\src\share\vm\interpreter" /I "$(HotSpotWorkSpace)\src\share\vm\asm" /I "$(HotSpotWorkSpace)\src\share\vm\compiler" /I "$(HotSpotWorkSpace)\src\share\vm\utilities" /I "$(HotSpotWorkSpace)\src\share\vm\code" /I "$(HotSpotWorkSpace)\src\share\vm\oops" /I "$(HotSpotWorkSpace)\src\share\vm\runtime" /I "$(HotSpotWorkSpace)\src\share\vm\memory" /I "$(HotSpotWorkSpace)\src\share\vm\libadt" /I "$(HotSpotWorkSpace)\src\cpu\i486\vm" /I "$(HotSpotWorkSpace)\src\os\win32\vm" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo /o".\adlc\Release\adlc.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:".\bin\adlc.exe"
-
-!ELSEIF "$(CFG)" == "ADLCompiler - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\adlc\Debug"
-# PROP Intermediate_Dir ".\adlc\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /ML /W3 /WX /Gm /GX /Zi /Od /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "$(HotSpotWorkSpace)\src\share\vm\prims" /I "$(HotSpotWorkSpace)\src\share\vm\lookup" /I "$(HotSpotWorkSpace)\src\share\vm\interpreter" /I "$(HotSpotWorkSpace)\src\share\vm\asm" /I "$(HotSpotWorkSpace)\src\share\vm\compiler" /I "$(HotSpotWorkSpace)\src\share\vm\utilities" /I "$(HotSpotWorkSpace)\src\share\vm\code" /I "$(HotSpotWorkSpace)\src\share\vm\oops" /I "$(HotSpotWorkSpace)\src\share\vm\runtime" /I "$(HotSpotWorkSpace)\src\share\vm\memory" /I "$(HotSpotWorkSpace)\src\share\vm\libadt" /I "$(HotSpotWorkSpace)\src\cpu\i486\vm" /I "$(HotSpotWorkSpace)\src\os\win32\vm" /D "WIN32" /D "_WINDOWS" /D "ASSERT" /Fr /FD /c
-# ADD BASE RSC /l 0x409
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /o".\adlc\Debug\adlc.bsc"
-# SUBTRACT BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:".\bin\adlc.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "ADLCompiler - Win32 Release"
-# Name "ADLCompiler - Win32 Debug"
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\adlparse.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\archDesc.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\arena.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\dfa.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\dict2.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\filebuff.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\forms.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\formsopt.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\formssel.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\main.cpp"
-# SUBTRACT CPP /YX /Yc
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\opto\opcodes.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\output_c.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\output_h.cpp"
-# End Source File
-# End Target
-# End Project
-
\ No newline at end of file
diff --git a/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsw b/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsw
deleted file mode 100644
index 0ad5370ed81..00000000000
--- a/hotspot/make/windows/projectfiles/compiler2/ADLCompiler.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "ADLCompiler"=".\ADLCompiler.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/make/windows/projectfiles/compiler2/Makefile b/hotspot/make/windows/projectfiles/compiler2/Makefile
deleted file mode 100644
index 1df97d232a8..00000000000
--- a/hotspot/make/windows/projectfiles/compiler2/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 1998, 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
-AdlcOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\adfiles
-AdditionalTargets=$(AdlcOutDir)\ad_$(Platform_arch_model).cpp $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
-
-!include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
diff --git a/hotspot/make/windows/projectfiles/compiler2/vm.def b/hotspot/make/windows/projectfiles/compiler2/vm.def
deleted file mode 100644
index b450e81fd01..00000000000
--- a/hotspot/make/windows/projectfiles/compiler2/vm.def
+++ /dev/null
@@ -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).
-;
diff --git a/hotspot/make/windows/projectfiles/compiler2/vm.dsw b/hotspot/make/windows/projectfiles/compiler2/vm.dsw
deleted file mode 100644
index 26aab5c3b16..00000000000
--- a/hotspot/make/windows/projectfiles/compiler2/vm.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 5.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>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/make/windows/projectfiles/core/Makefile b/hotspot/make/windows/projectfiles/core/Makefile
deleted file mode 100644
index 5b23a8467cb..00000000000
--- a/hotspot/make/windows/projectfiles/core/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 1998, 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
diff --git a/hotspot/make/windows/projectfiles/core/vm.def b/hotspot/make/windows/projectfiles/core/vm.def
deleted file mode 100644
index b450e81fd01..00000000000
--- a/hotspot/make/windows/projectfiles/core/vm.def
+++ /dev/null
@@ -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).
-;
diff --git a/hotspot/make/windows/projectfiles/core/vm.dsw b/hotspot/make/windows/projectfiles/core/vm.dsw
deleted file mode 100644
index 934f51afdb3..00000000000
--- a/hotspot/make/windows/projectfiles/core/vm.dsw
+++ /dev/null
@@ -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>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsp b/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsp
deleted file mode 100644
index 557cce42c76..00000000000
--- a/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsp
+++ /dev/null
@@ -1,142 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ADLCompiler" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ADLCompiler - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ADLCompiler.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ADLCompiler.mak" CFG="ADLCompiler - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ADLCompiler - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ADLCompiler - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ADLCompiler - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\adlc\Release"
-# PROP Intermediate_Dir ".\adlc\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "$(HotSpotWorkSpace)\src\share\vm\prims" /I "$(HotSpotWorkSpace)\src\share\vm\lookup" /I "$(HotSpotWorkSpace)\src\share\vm\interpreter" /I "$(HotSpotWorkSpace)\src\share\vm\asm" /I "$(HotSpotWorkSpace)\src\share\vm\compiler" /I "$(HotSpotWorkSpace)\src\share\vm\utilities" /I "$(HotSpotWorkSpace)\src\share\vm\code" /I "$(HotSpotWorkSpace)\src\share\vm\oops" /I "$(HotSpotWorkSpace)\src\share\vm\runtime" /I "$(HotSpotWorkSpace)\src\share\vm\memory" /I "$(HotSpotWorkSpace)\src\share\vm\libadt" /I "$(HotSpotWorkSpace)\src\cpu\i486\vm" /I "$(HotSpotWorkSpace)\src\os\win32\vm" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo /o".\adlc\Release\adlc.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:".\bin\adlc.exe"
-
-!ELSEIF "$(CFG)" == "ADLCompiler - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\adlc\Debug"
-# PROP Intermediate_Dir ".\adlc\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /ML /W3 /WX /Gm /GX /Zi /Od /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "$(HotSpotWorkSpace)\src\share\vm\prims" /I "$(HotSpotWorkSpace)\src\share\vm\lookup" /I "$(HotSpotWorkSpace)\src\share\vm\interpreter" /I "$(HotSpotWorkSpace)\src\share\vm\asm" /I "$(HotSpotWorkSpace)\src\share\vm\compiler" /I "$(HotSpotWorkSpace)\src\share\vm\utilities" /I "$(HotSpotWorkSpace)\src\share\vm\code" /I "$(HotSpotWorkSpace)\src\share\vm\oops" /I "$(HotSpotWorkSpace)\src\share\vm\runtime" /I "$(HotSpotWorkSpace)\src\share\vm\memory" /I "$(HotSpotWorkSpace)\src\share\vm\libadt" /I "$(HotSpotWorkSpace)\src\cpu\i486\vm" /I "$(HotSpotWorkSpace)\src\os\win32\vm" /D "WIN32" /D "_WINDOWS" /D "ASSERT" /Fr /FD /c
-# ADD BASE RSC /l 0x409
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /o".\adlc\Debug\adlc.bsc"
-# SUBTRACT BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:".\bin\adlc.exe"
-
-!ENDIF
-
-# Begin Target
-
-# Name "ADLCompiler - Win32 Release"
-# Name "ADLCompiler - Win32 Debug"
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\adlparse.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\archDesc.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\arena.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\dfa.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\dict2.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\filebuff.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\forms.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\formsopt.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\formssel.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\main.cpp"
-# SUBTRACT CPP /YX /Yc
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\opto\opcodes.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\output_c.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="$(HotSpotWorkSpace)\src\share\vm\adlc\output_h.cpp"
-# End Source File
-# End Target
-# End Project
-
\ No newline at end of file
diff --git a/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsw b/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsw
deleted file mode 100644
index 0ad5370ed81..00000000000
--- a/hotspot/make/windows/projectfiles/tiered/ADLCompiler.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "ADLCompiler"=".\ADLCompiler.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/make/windows/projectfiles/tiered/Makefile b/hotspot/make/windows/projectfiles/tiered/Makefile
deleted file mode 100644
index 5398cb99d46..00000000000
--- a/hotspot/make/windows/projectfiles/tiered/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 2006, 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
-AdlcOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\adfiles
-AdditionalTargets=$(AdlcOutDir)\ad_$(Platform_arch_model).cpp $(AdlcOutDir)\dfa_$(Platform_arch_model).cpp
-
-!include $(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
diff --git a/hotspot/make/windows/projectfiles/tiered/vm.def b/hotspot/make/windows/projectfiles/tiered/vm.def
deleted file mode 100644
index b450e81fd01..00000000000
--- a/hotspot/make/windows/projectfiles/tiered/vm.def
+++ /dev/null
@@ -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).
-;
diff --git a/hotspot/make/windows/projectfiles/tiered/vm.dsw b/hotspot/make/windows/projectfiles/tiered/vm.dsw
deleted file mode 100644
index 26aab5c3b16..00000000000
--- a/hotspot/make/windows/projectfiles/tiered/vm.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 5.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>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/hotspot/src/cpu/aarch64/vm/aarch64.ad b/hotspot/src/cpu/aarch64/vm/aarch64.ad
index e92411bab18..5359f30f29c 100644
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad
+++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad
@@ -996,6 +996,7 @@ definitions %{
source_hpp %{
#include "gc/shared/cardTableModRefBS.hpp"
+#include "opto/addnode.hpp"
class CallStubImpl {
@@ -1061,6 +1062,9 @@ class HandlerImpl {
// predicate controlling translation of StoreCM
bool unnecessary_storestore(const Node *storecm);
+
+ // predicate controlling addressing modes
+ bool size_fits_all_mem_uses(AddPNode* addp, int shift);
%}
source %{
@@ -3077,7 +3081,7 @@ uint MachSpillCopyNode::implementation(CodeBuffer *cbuf, PhaseRegAlloc *ra_, boo
assert((src_lo_rc != rc_int && dst_lo_rc != rc_int), "sanity");
if (src_lo_rc == rc_stack && dst_lo_rc == rc_stack) {
// stack->stack
- assert((src_offset & 7) && (dst_offset & 7), "unaligned stack offset");
+ assert((src_offset & 7) == 0 && (dst_offset & 7) == 0, "unaligned stack offset");
if (ireg == Op_VecD) {
__ unspill(rscratch1, true, src_offset);
__ spill(rscratch1, true, dst_offset);
@@ -3325,9 +3329,15 @@ int HandlerImpl::emit_deopt_handler(CodeBuffer& cbuf)
const bool Matcher::match_rule_supported(int opcode) {
- // TODO
- // identify extra cases that we might want to provide match rules for
- // e.g. Op_StrEquals and other intrinsics
+ switch (opcode) {
+ case Op_StrComp:
+ case Op_StrIndexOf:
+ if (CompactStrings) return false;
+ break;
+ default:
+ break;
+ }
+
if (!has_match_rule(opcode)) {
return false;
}
@@ -3346,6 +3356,10 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
return ret_value; // Per default match rules are supported.
}
+const bool Matcher::has_predicated_vectors(void) {
+ return false;
+}
+
const int Matcher::float_pressure(int default_pressure_threshold) {
return default_pressure_threshold;
}
@@ -3439,11 +3453,6 @@ const int Matcher::float_cmove_cost() {
// Does the CPU require late expand (see block.cpp for description of late expand)?
const bool Matcher::require_postalloc_expand = false;
-// Should the Matcher clone shifts on addressing modes, expecting them
-// to be subsumed into complex addressing expressions or compute them
-// into registers? True for Intel but false for most RISCs
-const bool Matcher::clone_shift_expressions = false;
-
// Do we need to mask the count passed to shift instructions or does
// the cpu only look at the lower 5/6 bits anyway?
const bool Matcher::need_masked_shift_count = false;
@@ -3562,6 +3571,119 @@ const RegMask Matcher::method_handle_invoke_SP_save_mask() {
return FP_REG_mask();
}
+bool size_fits_all_mem_uses(AddPNode* addp, int shift) {
+ for (DUIterator_Fast imax, i = addp->fast_outs(imax); i < imax; i++) {
+ Node* u = addp->fast_out(i);
+ if (u->is_Mem()) {
+ int opsize = u->as_Mem()->memory_size();
+ assert(opsize > 0, "unexpected memory operand size");
+ if (u->as_Mem()->memory_size() != (1<in(AddPNode::Offset);
+ if (off->Opcode() == Op_LShiftL && off->in(2)->is_Con() &&
+ size_fits_all_mem_uses(m, off->in(2)->get_int()) &&
+ // Are there other uses besides address expressions?
+ !is_visited(off)) {
+ address_visited.set(off->_idx); // Flag as address_visited
+ mstack.push(off->in(2), Visit);
+ Node *conv = off->in(1);
+ if (conv->Opcode() == Op_ConvI2L &&
+ // Are there other uses besides address expressions?
+ !is_visited(conv)) {
+ address_visited.set(conv->_idx); // Flag as address_visited
+ mstack.push(conv->in(1), Pre_Visit);
+ } else {
+ mstack.push(conv, Pre_Visit);
+ }
+ address_visited.test_set(m->_idx); // Flag as address_visited
+ mstack.push(m->in(AddPNode::Address), Pre_Visit);
+ mstack.push(m->in(AddPNode::Base), Pre_Visit);
+ return true;
+ } else if (off->Opcode() == Op_ConvI2L &&
+ // Are there other uses besides address expressions?
+ !is_visited(off)) {
+ address_visited.test_set(m->_idx); // Flag as address_visited
+ address_visited.set(off->_idx); // Flag as address_visited
+ mstack.push(off->in(1), Pre_Visit);
+ mstack.push(m->in(AddPNode::Address), Pre_Visit);
+ mstack.push(m->in(AddPNode::Base), Pre_Visit);
+ return true;
+ }
+ return false;
+}
+
+// Transform:
+// (AddP base (AddP base address (LShiftL index con)) offset)
+// into:
+// (AddP base (AddP base offset) (LShiftL index con))
+// to take full advantage of ARM's addressing modes
+void Compile::reshape_address(AddPNode* addp) {
+ Node *addr = addp->in(AddPNode::Address);
+ if (addr->is_AddP() && addr->in(AddPNode::Base) == addp->in(AddPNode::Base)) {
+ const AddPNode *addp2 = addr->as_AddP();
+ if ((addp2->in(AddPNode::Offset)->Opcode() == Op_LShiftL &&
+ addp2->in(AddPNode::Offset)->in(2)->is_Con() &&
+ size_fits_all_mem_uses(addp, addp2->in(AddPNode::Offset)->in(2)->get_int())) ||
+ addp2->in(AddPNode::Offset)->Opcode() == Op_ConvI2L) {
+
+ // Any use that can't embed the address computation?
+ for (DUIterator_Fast imax, i = addp->fast_outs(imax); i < imax; i++) {
+ Node* u = addp->fast_out(i);
+ if (!u->is_Mem() || u->is_LoadVector() || u->is_StoreVector() || u->Opcode() == Op_StoreCM) {
+ return;
+ }
+ }
+
+ Node* off = addp->in(AddPNode::Offset);
+ Node* addr2 = addp2->in(AddPNode::Address);
+ Node* base = addp->in(AddPNode::Base);
+
+ Node* new_addr = NULL;
+ // Check whether the graph already has the new AddP we need
+ // before we create one (no GVN available here).
+ for (DUIterator_Fast imax, i = addr2->fast_outs(imax); i < imax; i++) {
+ Node* u = addr2->fast_out(i);
+ if (u->is_AddP() &&
+ u->in(AddPNode::Base) == base &&
+ u->in(AddPNode::Address) == addr2 &&
+ u->in(AddPNode::Offset) == off) {
+ new_addr = u;
+ break;
+ }
+ }
+
+ if (new_addr == NULL) {
+ new_addr = new AddPNode(base, addr2, off);
+ }
+ Node* new_off = addp2->in(AddPNode::Offset);
+ addp->set_req(AddPNode::Address, new_addr);
+ if (addr->outcnt() == 0) {
+ addr->disconnect_inputs(NULL, this);
+ }
+ addp->set_req(AddPNode::Offset, new_off);
+ if (off->outcnt() == 0) {
+ off->disconnect_inputs(NULL, this);
+ }
+ }
+ }
+}
+
// helper for encoding java_to_runtime calls on sim
//
// this is needed to compute the extra arguments required when
@@ -3631,12 +3753,10 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
// encoder that the index needs to be sign extended, so we have to
// enumerate all the cases.
switch (opcode) {
- case INDINDEXSCALEDOFFSETI2L:
case INDINDEXSCALEDI2L:
- case INDINDEXSCALEDOFFSETI2LN:
case INDINDEXSCALEDI2LN:
- case INDINDEXOFFSETI2L:
- case INDINDEXOFFSETI2LN:
+ case INDINDEXI2L:
+ case INDINDEXI2LN:
scale = Address::sxtw(size);
break;
default:
@@ -3646,12 +3766,8 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
if (index == -1) {
(masm.*insn)(reg, Address(base, disp));
} else {
- if (disp == 0) {
- (masm.*insn)(reg, Address(base, as_Register(index), scale));
- } else {
- masm.lea(rscratch1, Address(base, disp));
- (masm.*insn)(reg, Address(rscratch1, as_Register(index), scale));
- }
+ assert(disp == 0, "unsupported address mode: disp = %d", disp);
+ (masm.*insn)(reg, Address(base, as_Register(index), scale));
}
}
@@ -3662,9 +3778,7 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
Address::extend scale;
switch (opcode) {
- case INDINDEXSCALEDOFFSETI2L:
case INDINDEXSCALEDI2L:
- case INDINDEXSCALEDOFFSETI2LN:
case INDINDEXSCALEDI2LN:
scale = Address::sxtw(size);
break;
@@ -3675,12 +3789,8 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
if (index == -1) {
(masm.*insn)(reg, Address(base, disp));
} else {
- if (disp == 0) {
- (masm.*insn)(reg, Address(base, as_Register(index), scale));
- } else {
- masm.lea(rscratch1, Address(base, disp));
- (masm.*insn)(reg, Address(rscratch1, as_Register(index), scale));
- }
+ assert(disp == 0, "unsupported address mode: disp = %d", disp);
+ (masm.*insn)(reg, Address(base, as_Register(index), scale));
}
}
@@ -4190,55 +4300,6 @@ encode %{
}
%}
- enc_class aarch64_enc_clear_array_reg_reg(iRegL_R11 cnt, iRegP_R10 base) %{
- MacroAssembler _masm(&cbuf);
- Register cnt_reg = as_Register($cnt$$reg);
- Register base_reg = as_Register($base$$reg);
- // base is word aligned
- // cnt is count of words
-
- Label loop;
- Label entry;
-
-// Algorithm:
-//
-// scratch1 = cnt & 7;
-// cnt -= scratch1;
-// p += scratch1;
-// switch (scratch1) {
-// do {
-// cnt -= 8;
-// p[-8] = 0;
-// case 7:
-// p[-7] = 0;
-// case 6:
-// p[-6] = 0;
-// // ...
-// case 1:
-// p[-1] = 0;
-// case 0:
-// p += 8;
-// } while (cnt);
-// }
-
- const int unroll = 8; // Number of str(zr) instructions we'll unroll
-
- __ andr(rscratch1, cnt_reg, unroll - 1); // tmp1 = cnt % unroll
- __ sub(cnt_reg, cnt_reg, rscratch1); // cnt -= unroll
- // base_reg always points to the end of the region we're about to zero
- __ add(base_reg, base_reg, rscratch1, Assembler::LSL, exact_log2(wordSize));
- __ adr(rscratch2, entry);
- __ sub(rscratch2, rscratch2, rscratch1, Assembler::LSL, 2);
- __ br(rscratch2);
- __ bind(loop);
- __ sub(cnt_reg, cnt_reg, unroll);
- for (int i = -unroll; i < 0; i++)
- __ str(zr, Address(base_reg, i * wordSize));
- __ bind(entry);
- __ add(base_reg, base_reg, unroll * wordSize);
- __ cbnz(cnt_reg, loop);
- %}
-
/// mov envcodings
enc_class aarch64_enc_movw_imm(iRegI dst, immI src) %{
@@ -5351,6 +5412,36 @@ operand immIOffset()
interface(CONST_INTER);
%}
+operand immIOffset4()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_int(), 2));
+ match(ConI);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
+operand immIOffset8()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_int(), 3));
+ match(ConI);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
+operand immIOffset16()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_int(), 4));
+ match(ConI);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
operand immLoffset()
%{
predicate(Address::offset_ok_for_immed(n->get_long()));
@@ -5361,6 +5452,36 @@ operand immLoffset()
interface(CONST_INTER);
%}
+operand immLoffset4()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_long(), 2));
+ match(ConL);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
+operand immLoffset8()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_long(), 3));
+ match(ConL);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
+operand immLoffset16()
+%{
+ predicate(Address::offset_ok_for_immed(n->get_long(), 4));
+ match(ConL);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+%}
+
// 32 bit integer valid for add sub immediate
operand immIAddSub()
%{
@@ -6083,65 +6204,10 @@ operand indirect(iRegP reg)
%}
%}
-operand indIndexScaledOffsetI(iRegP reg, iRegL lreg, immIScale scale, immIU12 off)
-%{
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP reg (LShiftL lreg scale)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $lreg lsl($scale), $off" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($lreg);
- scale($scale);
- disp($off);
- %}
-%}
-
-operand indIndexScaledOffsetL(iRegP reg, iRegL lreg, immIScale scale, immLU12 off)
-%{
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP reg (LShiftL lreg scale)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $lreg lsl($scale), $off" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($lreg);
- scale($scale);
- disp($off);
- %}
-%}
-
-operand indIndexOffsetI2L(iRegP reg, iRegI ireg, immLU12 off)
-%{
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP reg (ConvI2L ireg)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $ireg, $off I2L" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($ireg);
- scale(0x0);
- disp($off);
- %}
-%}
-
-operand indIndexScaledOffsetI2L(iRegP reg, iRegI ireg, immIScale scale, immLU12 off)
-%{
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP reg (LShiftL (ConvI2L ireg) scale)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $ireg sxtw($scale), $off I2L" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($ireg);
- scale($scale);
- disp($off);
- %}
-%}
-
operand indIndexScaledI2L(iRegP reg, iRegI ireg, immIScale scale)
%{
constraint(ALLOC_IN_RC(ptr_reg));
+ predicate(size_fits_all_mem_uses(n->as_AddP(), n->in(AddPNode::Offset)->in(2)->get_int()));
match(AddP reg (LShiftL (ConvI2L ireg) scale));
op_cost(0);
format %{ "$reg, $ireg sxtw($scale), 0, I2L" %}
@@ -6156,6 +6222,7 @@ operand indIndexScaledI2L(iRegP reg, iRegI ireg, immIScale scale)
operand indIndexScaled(iRegP reg, iRegL lreg, immIScale scale)
%{
constraint(ALLOC_IN_RC(ptr_reg));
+ predicate(size_fits_all_mem_uses(n->as_AddP(), n->in(AddPNode::Offset)->in(2)->get_int()));
match(AddP reg (LShiftL lreg scale));
op_cost(0);
format %{ "$reg, $lreg lsl($scale)" %}
@@ -6167,6 +6234,20 @@ operand indIndexScaled(iRegP reg, iRegL lreg, immIScale scale)
%}
%}
+operand indIndexI2L(iRegP reg, iRegI ireg)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg (ConvI2L ireg));
+ op_cost(0);
+ format %{ "$reg, $ireg, 0, I2L" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index($ireg);
+ scale(0x0);
+ disp(0x0);
+ %}
+%}
+
operand indIndex(iRegP reg, iRegL lreg)
%{
constraint(ALLOC_IN_RC(ptr_reg));
@@ -6195,6 +6276,48 @@ operand indOffI(iRegP reg, immIOffset off)
%}
%}
+operand indOffI4(iRegP reg, immIOffset4 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
+
+operand indOffI8(iRegP reg, immIOffset8 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
+
+operand indOffI16(iRegP reg, immIOffset16 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
+
operand indOffL(iRegP reg, immLoffset off)
%{
constraint(ALLOC_IN_RC(ptr_reg));
@@ -6209,6 +6332,47 @@ operand indOffL(iRegP reg, immLoffset off)
%}
%}
+operand indOffL4(iRegP reg, immLoffset4 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
+
+operand indOffL8(iRegP reg, immLoffset8 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
+
+operand indOffL16(iRegP reg, immLoffset16 off)
+%{
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP reg off);
+ op_cost(0);
+ format %{ "[$reg, $off]" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index(0xffffffff);
+ scale(0x0);
+ disp($off);
+ %}
+%}
operand indirectN(iRegN reg)
%{
@@ -6225,69 +6389,9 @@ operand indirectN(iRegN reg)
%}
%}
-operand indIndexScaledOffsetIN(iRegN reg, iRegL lreg, immIScale scale, immIU12 off)
-%{
- predicate(Universe::narrow_oop_shift() == 0);
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP (DecodeN reg) (LShiftL lreg scale)) off);
- op_cost(0);
- format %{ "$reg, $lreg lsl($scale), $off\t# narrow" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($lreg);
- scale($scale);
- disp($off);
- %}
-%}
-
-operand indIndexScaledOffsetLN(iRegN reg, iRegL lreg, immIScale scale, immLU12 off)
-%{
- predicate(Universe::narrow_oop_shift() == 0);
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP (DecodeN reg) (LShiftL lreg scale)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $lreg lsl($scale), $off\t# narrow" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($lreg);
- scale($scale);
- disp($off);
- %}
-%}
-
-operand indIndexOffsetI2LN(iRegN reg, iRegI ireg, immLU12 off)
-%{
- predicate(Universe::narrow_oop_shift() == 0);
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP (DecodeN reg) (ConvI2L ireg)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $ireg, $off I2L\t# narrow" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($ireg);
- scale(0x0);
- disp($off);
- %}
-%}
-
-operand indIndexScaledOffsetI2LN(iRegN reg, iRegI ireg, immIScale scale, immLU12 off)
-%{
- predicate(Universe::narrow_oop_shift() == 0);
- constraint(ALLOC_IN_RC(ptr_reg));
- match(AddP (AddP (DecodeN reg) (LShiftL (ConvI2L ireg) scale)) off);
- op_cost(INSN_COST);
- format %{ "$reg, $ireg sxtw($scale), $off I2L\t# narrow" %}
- interface(MEMORY_INTER) %{
- base($reg);
- index($ireg);
- scale($scale);
- disp($off);
- %}
-%}
-
operand indIndexScaledI2LN(iRegN reg, iRegI ireg, immIScale scale)
%{
- predicate(Universe::narrow_oop_shift() == 0);
+ predicate(Universe::narrow_oop_shift() == 0 && size_fits_all_mem_uses(n->as_AddP(), n->in(AddPNode::Offset)->in(2)->get_int()));
constraint(ALLOC_IN_RC(ptr_reg));
match(AddP (DecodeN reg) (LShiftL (ConvI2L ireg) scale));
op_cost(0);
@@ -6302,7 +6406,7 @@ operand indIndexScaledI2LN(iRegN reg, iRegI ireg, immIScale scale)
operand indIndexScaledN(iRegN reg, iRegL lreg, immIScale scale)
%{
- predicate(Universe::narrow_oop_shift() == 0);
+ predicate(Universe::narrow_oop_shift() == 0 && size_fits_all_mem_uses(n->as_AddP(), n->in(AddPNode::Offset)->in(2)->get_int()));
constraint(ALLOC_IN_RC(ptr_reg));
match(AddP (DecodeN reg) (LShiftL lreg scale));
op_cost(0);
@@ -6315,6 +6419,21 @@ operand indIndexScaledN(iRegN reg, iRegL lreg, immIScale scale)
%}
%}
+operand indIndexI2LN(iRegN reg, iRegI ireg)
+%{
+ predicate(Universe::narrow_oop_shift() == 0);
+ constraint(ALLOC_IN_RC(ptr_reg));
+ match(AddP (DecodeN reg) (ConvI2L ireg));
+ op_cost(0);
+ format %{ "$reg, $ireg, 0, I2L\t# narrow" %}
+ interface(MEMORY_INTER) %{
+ base($reg);
+ index($ireg);
+ scale(0x0);
+ disp(0x0);
+ %}
+%}
+
operand indIndexN(iRegN reg, iRegL lreg)
%{
predicate(Universe::narrow_oop_shift() == 0);
@@ -6521,7 +6640,9 @@ operand iRegL2I(iRegL reg) %{
interface(REG_INTER)
%}
-opclass vmem(indirect, indIndex, indOffI, indOffL);
+opclass vmem4(indirect, indIndex, indOffI4, indOffL4);
+opclass vmem8(indirect, indIndex, indOffI8, indOffL8);
+opclass vmem16(indirect, indIndex, indOffI16, indOffL16);
//----------OPERAND CLASSES----------------------------------------------------
// Operand Classes are groups of operands that are used as to simplify
@@ -6533,9 +6654,8 @@ opclass vmem(indirect, indIndex, indOffI, indOffL);
// memory is used to define read/write location for load/store
// instruction defs. we can turn a memory op into an Address
-opclass memory(indirect, indIndexScaledOffsetI, indIndexScaledOffsetL, indIndexOffsetI2L, indIndexScaledOffsetI2L, indIndexScaled, indIndexScaledI2L, indIndex, indOffI, indOffL,
- indirectN, indIndexScaledOffsetIN, indIndexScaledOffsetLN, indIndexOffsetI2LN, indIndexScaledOffsetI2LN, indIndexScaledN, indIndexScaledI2LN, indIndexN, indOffIN, indOffLN);
-
+opclass memory(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex, indOffI, indOffL,
+ indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN);
// iRegIorL2I is used for src inputs in rules for 32 bit int (I)
// operations. it allows the src to be either an iRegI or a (ConvL2I
@@ -7053,7 +7173,7 @@ pipe_class vmovi_reg_imm128(vecX dst)
NEON_FP : S3;
%}
-pipe_class vload_reg_mem64(vecD dst, vmem mem)
+pipe_class vload_reg_mem64(vecD dst, vmem8 mem)
%{
single_instruction;
dst : S5(write);
@@ -7062,7 +7182,7 @@ pipe_class vload_reg_mem64(vecD dst, vmem mem)
NEON_FP : S3;
%}
-pipe_class vload_reg_mem128(vecX dst, vmem mem)
+pipe_class vload_reg_mem128(vecX dst, vmem16 mem)
%{
single_instruction;
dst : S5(write);
@@ -7071,7 +7191,7 @@ pipe_class vload_reg_mem128(vecX dst, vmem mem)
NEON_FP : S3;
%}
-pipe_class vstore_reg_mem64(vecD src, vmem mem)
+pipe_class vstore_reg_mem64(vecD src, vmem8 mem)
%{
single_instruction;
mem : ISS(read);
@@ -7080,7 +7200,7 @@ pipe_class vstore_reg_mem64(vecD src, vmem mem)
NEON_FP : S3;
%}
-pipe_class vstore_reg_mem128(vecD src, vmem mem)
+pipe_class vstore_reg_mem128(vecD src, vmem16 mem)
%{
single_instruction;
mem : ISS(read);
@@ -12123,21 +12243,21 @@ instruct rorL_rReg_Var_C0(iRegLNoSp dst, iRegL src, iRegI shift, immI0 c0, rFlag
%}
%}
-instruct rorI_rReg_Var_C_32(iRegLNoSp dst, iRegL src, iRegI shift, immI_32 c_32, rFlagsReg cr)
+instruct rorI_rReg_Var_C_32(iRegINoSp dst, iRegI src, iRegI shift, immI_32 c_32, rFlagsReg cr)
%{
match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c_32 shift))));
expand %{
- rorL_rReg(dst, src, shift, cr);
+ rorI_rReg(dst, src, shift, cr);
%}
%}
-instruct rorI_rReg_Var_C0(iRegLNoSp dst, iRegL src, iRegI shift, immI0 c0, rFlagsReg cr)
+instruct rorI_rReg_Var_C0(iRegINoSp dst, iRegI src, iRegI shift, immI0 c0, rFlagsReg cr)
%{
match(Set dst (OrI (URShiftI src shift) (LShiftI src (SubI c0 shift))));
expand %{
- rorL_rReg(dst, src, shift, cr);
+ rorI_rReg(dst, src, shift, cr);
%}
%}
@@ -13363,7 +13483,24 @@ instruct clearArray_reg_reg(iRegL_R11 cnt, iRegP_R10 base, Universe dummy, rFlag
ins_cost(4 * INSN_COST);
format %{ "ClearArray $cnt, $base" %}
- ins_encode(aarch64_enc_clear_array_reg_reg(cnt, base));
+ ins_encode %{
+ __ zero_words($base$$Register, $cnt$$Register);
+ %}
+
+ ins_pipe(pipe_class_memory);
+%}
+
+instruct clearArray_imm_reg(immL cnt, iRegP_R10 base, iRegL_R11 tmp, Universe dummy, rFlagsReg cr)
+%{
+ match(Set dummy (ClearArray cnt base));
+ effect(USE_KILL base, TEMP tmp);
+
+ ins_cost(4 * INSN_COST);
+ format %{ "ClearArray $cnt, $base" %}
+
+ ins_encode %{
+ __ zero_words($base$$Register, (u_int64_t)$cnt$$constant);
+ %}
ins_pipe(pipe_class_memory);
%}
@@ -14797,10 +14934,10 @@ instruct partialSubtypeCheckVsZero(iRegP_R4 sub, iRegP_R0 super, iRegP_R2 temp,
ins_pipe(pipe_class_memory);
%}
-instruct string_compare(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
+instruct string_compareU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
iRegI_R0 result, iRegP_R10 tmp1, rFlagsReg cr)
%{
- predicate(!CompactStrings);
+ predicate(((StrCompNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
effect(KILL tmp1, USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
@@ -14819,7 +14956,7 @@ instruct string_compare(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cn
instruct string_indexof(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
iRegI_R0 result, iRegI tmp1, iRegI tmp2, iRegI tmp3, iRegI tmp4, rFlagsReg cr)
%{
- predicate(!CompactStrings);
+ predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
@@ -14839,7 +14976,7 @@ instruct string_indexof_con(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
immI_le_4 int_cnt2, iRegI_R0 result, iRegI tmp1, iRegI tmp2,
iRegI tmp3, iRegI tmp4, rFlagsReg cr)
%{
- predicate(!CompactStrings);
+ predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
@@ -14856,10 +14993,27 @@ instruct string_indexof_con(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
ins_pipe(pipe_class_memory);
%}
-instruct string_equals(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
+instruct string_equalsL(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
iRegI_R0 result, rFlagsReg cr)
%{
- predicate(!CompactStrings);
+ predicate(((StrEqualsNode*)n)->encoding() == StrIntrinsicNode::LL);
+ match(Set result (StrEquals (Binary str1 str2) cnt));
+ effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt, KILL cr);
+
+ format %{ "String Equals $str1,$str2,$cnt -> $result" %}
+ ins_encode %{
+ // Count is in 8-bit bytes; non-Compact chars are 16 bits.
+ __ arrays_equals($str1$$Register, $str2$$Register,
+ $result$$Register, $cnt$$Register,
+ 1, /*is_string*/true);
+ %}
+ ins_pipe(pipe_class_memory);
+%}
+
+instruct string_equalsU(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
+ iRegI_R0 result, rFlagsReg cr)
+%{
+ predicate(((StrEqualsNode*)n)->encoding() == StrIntrinsicNode::UU);
match(Set result (StrEquals (Binary str1 str2) cnt));
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt, KILL cr);
@@ -14907,6 +15061,40 @@ instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
%}
+// fast char[] to byte[] compression
+instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
+ vRegD_V0 tmp1, vRegD_V1 tmp2,
+ vRegD_V2 tmp3, vRegD_V3 tmp4,
+ iRegI_R0 result, rFlagsReg cr)
+%{
+ match(Set result (StrCompressedCopy src (Binary dst len)));
+ effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
+
+ format %{ "String Compress $src,$dst -> $result // KILL R1, R2, R3, R4" %}
+ ins_encode %{
+ __ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
+ $tmp1$$FloatRegister, $tmp2$$FloatRegister,
+ $tmp3$$FloatRegister, $tmp4$$FloatRegister,
+ $result$$Register);
+ %}
+ ins_pipe( pipe_slow );
+%}
+
+// fast byte[] to char[] inflation
+instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len,
+ vRegD tmp1, vRegD tmp2, vRegD tmp3, iRegP_R3 tmp4, rFlagsReg cr)
+%{
+ match(Set dummy (StrInflatedCopy src (Binary dst len)));
+ effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
+
+ format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2" %}
+ ins_encode %{
+ __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
+ $tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister, $tmp4$$Register);
+ %}
+ ins_pipe(pipe_class_memory);
+%}
+
// encode char[] to byte[] in ISO_8859_1
instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
vRegD_V0 Vtmp1, vRegD_V1 Vtmp2,
@@ -14948,7 +15136,7 @@ instruct tlsLoadP(thread_RegP dst)
// ====================VECTOR INSTRUCTIONS=====================================
// Load vector (32 bits)
-instruct loadV4(vecD dst, vmem mem)
+instruct loadV4(vecD dst, vmem4 mem)
%{
predicate(n->as_LoadVector()->memory_size() == 4);
match(Set dst (LoadVector mem));
@@ -14959,7 +15147,7 @@ instruct loadV4(vecD dst, vmem mem)
%}
// Load vector (64 bits)
-instruct loadV8(vecD dst, vmem mem)
+instruct loadV8(vecD dst, vmem8 mem)
%{
predicate(n->as_LoadVector()->memory_size() == 8);
match(Set dst (LoadVector mem));
@@ -14970,7 +15158,7 @@ instruct loadV8(vecD dst, vmem mem)
%}
// Load Vector (128 bits)
-instruct loadV16(vecX dst, vmem mem)
+instruct loadV16(vecX dst, vmem16 mem)
%{
predicate(n->as_LoadVector()->memory_size() == 16);
match(Set dst (LoadVector mem));
@@ -14981,7 +15169,7 @@ instruct loadV16(vecX dst, vmem mem)
%}
// Store Vector (32 bits)
-instruct storeV4(vecD src, vmem mem)
+instruct storeV4(vecD src, vmem4 mem)
%{
predicate(n->as_StoreVector()->memory_size() == 4);
match(Set mem (StoreVector mem src));
@@ -14992,7 +15180,7 @@ instruct storeV4(vecD src, vmem mem)
%}
// Store Vector (64 bits)
-instruct storeV8(vecD src, vmem mem)
+instruct storeV8(vecD src, vmem8 mem)
%{
predicate(n->as_StoreVector()->memory_size() == 8);
match(Set mem (StoreVector mem src));
@@ -15003,7 +15191,7 @@ instruct storeV8(vecD src, vmem mem)
%}
// Store Vector (128 bits)
-instruct storeV16(vecX src, vmem mem)
+instruct storeV16(vecX src, vmem16 mem)
%{
predicate(n->as_StoreVector()->memory_size() == 16);
match(Set mem (StoreVector mem src));
diff --git a/hotspot/src/cpu/aarch64/vm/abstractInterpreter_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/abstractInterpreter_aarch64.cpp
index 77f49a72854..a09f2684af6 100644
--- a/hotspot/src/cpu/aarch64/vm/abstractInterpreter_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/abstractInterpreter_aarch64.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -177,4 +177,6 @@ void AbstractInterpreter::layout_activation(Method* method,
}
*interpreter_frame->interpreter_frame_cache_addr() =
method->constants()->cache();
+ *interpreter_frame->interpreter_frame_mirror_addr() =
+ method->method_holder()->java_mirror();
}
diff --git a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
index 965a5c8072f..8c7901e3aca 100644
--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
@@ -1032,12 +1032,28 @@ public:
system(0b00, 0b011, 0b00011, SY, 0b110);
}
- void dc(Register Rt) {
- system(0b01, 0b011, 0b0111, 0b1011, 0b001, Rt);
+ void sys(int op1, int CRn, int CRm, int op2,
+ Register rt = (Register)0b11111) {
+ system(0b01, op1, CRn, CRm, op2, rt);
}
- void ic(Register Rt) {
- system(0b01, 0b011, 0b0111, 0b0101, 0b001, Rt);
+ // Only implement operations accessible from EL0 or higher, i.e.,
+ // op1 CRn CRm op2
+ // IC IVAU 3 7 5 1
+ // DC CVAC 3 7 10 1
+ // DC CVAU 3 7 11 1
+ // DC CIVAC 3 7 14 1
+ // DC ZVA 3 7 4 1
+ // So only deal with the CRm field.
+ enum icache_maintenance {IVAU = 0b0101};
+ enum dcache_maintenance {CVAC = 0b1010, CVAU = 0b1011, CIVAC = 0b1110, ZVA = 0b100};
+
+ void dc(dcache_maintenance cm, Register Rt) {
+ sys(0b011, 0b0111, cm, 0b001, Rt);
+ }
+
+ void ic(icache_maintenance cm, Register Rt) {
+ sys(0b011, 0b0111, cm, 0b001, Rt);
}
// A more convenient access to dmb for our purposes
@@ -2245,18 +2261,18 @@ public:
rf(Vn, 5), rf(Rd, 0);
}
-#define INSN(NAME, opc, opc2) \
- void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, int shift){ \
- starti; \
- /* The encodings for the immh:immb fields (bits 22:16) are \
- * 0001 xxx 8B/16B, shift = xxx \
- * 001x xxx 4H/8H, shift = xxxx \
- * 01xx xxx 2S/4S, shift = xxxxx \
- * 1xxx xxx 1D/2D, shift = xxxxxx (1D is RESERVED) \
- */ \
- assert((1 << ((T>>1)+3)) > shift, "Invalid Shift value"); \
- f(0, 31), f(T & 1, 30), f(opc, 29), f(0b011110, 28, 23), \
- f((1 << ((T>>1)+3))|shift, 22, 16); f(opc2, 15, 10), rf(Vn, 5), rf(Vd, 0); \
+#define INSN(NAME, opc, opc2) \
+ void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, int shift){ \
+ starti; \
+ /* The encodings for the immh:immb fields (bits 22:16) are \
+ * 0001 xxx 8B/16B, shift = xxx \
+ * 001x xxx 4H/8H, shift = xxxx \
+ * 01xx xxx 2S/4S, shift = xxxxx \
+ * 1xxx xxx 1D/2D, shift = xxxxxx (1D is RESERVED) \
+ */ \
+ assert((1 << ((T>>1)+3)) > shift, "Invalid Shift value"); \
+ f(0, 31), f(T & 1, 30), f(opc, 29), f(0b011110, 28, 23), \
+ f((1 << ((T>>1)+3))|shift, 22, 16); f(opc2, 15, 10), rf(Vn, 5), rf(Vd, 0); \
}
INSN(shl, 0, 0b010101);
@@ -2347,6 +2363,24 @@ public:
f(0b000001, 15, 10), rf(Vn, 5), rf(Vd, 0);
}
+ // AdvSIMD ZIP/UZP/TRN
+#define INSN(NAME, opcode) \
+ void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
+ starti; \
+ f(0, 31), f(0b001110, 29, 24), f(0, 21), f(0b001110, 15, 10); \
+ rf(Vm, 16), rf(Vn, 5), rf(Vd, 0); \
+ f(T & 1, 30), f(T >> 1, 23, 22); \
+ }
+
+ INSN(uzp1, 0b001);
+ INSN(trn1, 0b010);
+ INSN(zip1, 0b011);
+ INSN(uzp2, 0b101);
+ INSN(trn2, 0b110);
+ INSN(zip2, 0b111);
+
+#undef INSN
+
// CRC32 instructions
#define INSN(NAME, c, sf, sz) \
void NAME(Register Rd, Register Rn, Register Rm) { \
diff --git a/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
index 976e69133bc..e34c6fa2691 100644
--- a/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
@@ -2942,6 +2942,10 @@ void LIR_Assembler::membar_loadstore() { __ membar(MacroAssembler::LoadStore); }
void LIR_Assembler::membar_storeload() { __ membar(MacroAssembler::StoreLoad); }
+void LIR_Assembler::on_spin_wait() {
+ Unimplemented();
+}
+
void LIR_Assembler::get_thread(LIR_Opr result_reg) {
__ mov(result_reg->as_register(), rthread);
}
diff --git a/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp
index 191c4e45571..4690e75e3cf 100644
--- a/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -331,7 +331,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
length.load_item();
}
- if (needs_store_check) {
+ if (needs_store_check || x->check_boolean()) {
value.load_item();
} else {
value.load_for_store(x->elt_type());
@@ -380,7 +380,8 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
// Seems to be a precise
post_barrier(LIR_OprFact::address(array_addr), value.result());
} else {
- __ move(value.result(), array_addr, null_check_info);
+ LIR_Opr result = maybe_mask_boolean(x, array.result(), value.result(), null_check_info);
+ __ move(result, array_addr, null_check_info);
}
}
@@ -1029,6 +1030,14 @@ void LIRGenerator::do_update_CRC32(Intrinsic* x) {
}
}
+void LIRGenerator::do_update_CRC32C(Intrinsic* x) {
+ Unimplemented();
+}
+
+void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) {
+ fatal("vectorizedMismatch intrinsic is not implemented on this platform");
+}
+
// _i2l, _i2f, _i2d, _l2i, _l2f, _l2d, _f2i, _f2l, _f2d, _d2i, _d2l, _d2f
// _i2b, _i2c, _i2s
void LIRGenerator::do_Convert(Convert* x) {
@@ -1127,7 +1136,7 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
void LIRGenerator::do_NewMultiArray(NewMultiArray* x) {
Values* dims = x->dims();
int i = dims->length();
- LIRItemList* items = new LIRItemList(dims->length(), NULL);
+ LIRItemList* items = new LIRItemList(i, i, NULL);
while (i-- > 0) {
LIRItem* size = new LIRItem(dims->at(i), this);
items->at_put(i, size);
diff --git a/hotspot/src/cpu/aarch64/vm/c2_globals_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/c2_globals_aarch64.hpp
index f4170aeb85b..865ee69d1f7 100644
--- a/hotspot/src/cpu/aarch64/vm/c2_globals_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/c2_globals_aarch64.hpp
@@ -71,7 +71,7 @@ define_pd_global(bool, UseCISCSpill, true);
define_pd_global(bool, OptoScheduling, false);
define_pd_global(bool, OptoBundling, false);
define_pd_global(bool, OptoRegScheduling, false);
-define_pd_global(bool, SuperWordLoopUnrollAnalysis, false);
+define_pd_global(bool, SuperWordLoopUnrollAnalysis, true);
define_pd_global(intx, ReservedCodeCacheSize, 48*M);
define_pd_global(intx, NonProfiledCodeHeapSize, 21*M);
diff --git a/hotspot/src/cpu/aarch64/vm/compiledIC_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/compiledIC_aarch64.cpp
index 103b936b5b4..bd4e55a5151 100644
--- a/hotspot/src/cpu/aarch64/vm/compiledIC_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/compiledIC_aarch64.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -32,22 +32,6 @@
#include "runtime/mutexLocker.hpp"
#include "runtime/safepoint.hpp"
-// Release the CompiledICHolder* associated with this call site is there is one.
-void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- if (is_icholder_entry(call->destination())) {
- NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
- InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
- }
-}
-
-bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- return is_icholder_entry(call->destination());
-}
-
// ----------------------------------------------------------------------------
#define __ _masm.
diff --git a/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp
index bce575a10af..42c61b9a33f 100644
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -221,21 +221,19 @@ bool frame::safe_for_sender(JavaThread *thread) {
return jcw_safe;
}
- if (sender_blob->is_nmethod()) {
- nmethod* nm = sender_blob->as_nmethod_or_null();
- if (nm != NULL) {
- if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
- nm->method()->is_method_handle_intrinsic()) {
- return false;
- }
- }
+ CompiledMethod* nm = sender_blob->as_compiled_method_or_null();
+ if (nm != NULL) {
+ if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
+ nm->method()->is_method_handle_intrinsic()) {
+ return false;
+ }
}
// If the frame size is 0 something (or less) is bad because every nmethod has a non-zero frame size
// because the return address counts against the callee's frame.
if (sender_blob->frame_size() <= 0) {
- assert(!sender_blob->is_nmethod(), "should count return address at least");
+ assert(!sender_blob->is_compiled(), "should count return address at least");
return false;
}
@@ -244,7 +242,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// should not be anything but the call stub (already covered), the interpreter (already covered)
// or an nmethod.
- if (!sender_blob->is_nmethod()) {
+ if (!sender_blob->is_compiled()) {
return false;
}
@@ -286,7 +284,7 @@ void frame::patch_pc(Thread* thread, address pc) {
assert(_pc == *pc_addr || pc == *pc_addr, "must be");
*pc_addr = pc;
_cb = CodeCache::find_blob(pc);
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
assert(original_pc == _pc, "expected original PC to be stored before patching");
_deopt_state = is_deoptimized;
@@ -371,7 +369,7 @@ frame frame::sender_for_entry_frame(RegisterMap* map) const {
// Verifies the calculated original PC of a deoptimization PC for the
// given unextended SP.
#ifdef ASSERT
-void frame::verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp) {
+void frame::verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp) {
frame fr;
// This is ugly but it's better than to change {get,set}_original_pc
@@ -391,12 +389,14 @@ void frame::adjust_unextended_sp() {
// as any other call site. Therefore, no special action is needed when we are
// returning to any of these call sites.
- nmethod* sender_nm = (_cb == NULL) ? NULL : _cb->as_nmethod_or_null();
- if (sender_nm != NULL) {
- // If the sender PC is a deoptimization point, get the original PC.
- if (sender_nm->is_deopt_entry(_pc) ||
- sender_nm->is_deopt_mh_entry(_pc)) {
- DEBUG_ONLY(verify_deopt_original_pc(sender_nm, _unextended_sp));
+ if (_cb != NULL) {
+ CompiledMethod* sender_cm = _cb->as_compiled_method_or_null();
+ if (sender_cm != NULL) {
+ // If the sender PC is a deoptimization point, get the original PC.
+ if (sender_cm->is_deopt_entry(_pc) ||
+ sender_cm->is_deopt_mh_entry(_pc)) {
+ DEBUG_ONLY(verify_deopt_original_pc(sender_cm, _unextended_sp));
+ }
}
}
}
diff --git a/hotspot/src/cpu/aarch64/vm/frame_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/frame_aarch64.hpp
index 4332abce9f4..5bcee325945 100644
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -78,7 +78,9 @@
interpreter_frame_last_sp_offset = interpreter_frame_sender_sp_offset - 1,
interpreter_frame_method_offset = interpreter_frame_last_sp_offset - 1,
interpreter_frame_mdp_offset = interpreter_frame_method_offset - 1,
- interpreter_frame_cache_offset = interpreter_frame_mdp_offset - 1,
+ interpreter_frame_padding_offset = interpreter_frame_mdp_offset - 1,
+ interpreter_frame_mirror_offset = interpreter_frame_padding_offset - 1,
+ interpreter_frame_cache_offset = interpreter_frame_mirror_offset - 1,
interpreter_frame_locals_offset = interpreter_frame_cache_offset - 1,
interpreter_frame_bcp_offset = interpreter_frame_locals_offset - 1,
interpreter_frame_initial_sp_offset = interpreter_frame_bcp_offset - 1,
@@ -124,7 +126,7 @@
#ifdef ASSERT
// Used in frame::sender_for_{interpreter,compiled}_frame
- static void verify_deopt_original_pc( nmethod* nm, intptr_t* unextended_sp);
+ static void verify_deopt_original_pc( CompiledMethod* nm, intptr_t* unextended_sp);
#endif
public:
diff --git a/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp b/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp
index 7fce68be5b9..7c410aaa74b 100644
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -55,7 +55,7 @@ inline void frame::init(intptr_t* sp, intptr_t* fp, address pc) {
_cb = CodeCache::find_blob(pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -79,10 +79,10 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
_cb = CodeCache::find_blob(pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
- assert(((nmethod*)_cb)->insts_contains(_pc), "original PC must be in nmethod");
+ assert(((CompiledMethod*)_cb)->insts_contains(_pc), "original PC must be in CompiledMethod");
_deopt_state = is_deoptimized;
} else {
_deopt_state = not_deoptimized;
@@ -111,7 +111,7 @@ inline frame::frame(intptr_t* sp, intptr_t* fp) {
_cb = CodeCache::find_blob(_pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -188,6 +188,12 @@ inline Method** frame::interpreter_frame_method_addr() const {
return (Method**)addr_at(interpreter_frame_method_offset);
}
+// Mirror
+
+inline oop* frame::interpreter_frame_mirror_addr() const {
+ return (oop*)addr_at(interpreter_frame_mirror_offset);
+}
+
// top of expression stack
inline intptr_t* frame::interpreter_frame_tos_address() const {
intptr_t* last_sp = interpreter_frame_last_sp();
diff --git a/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp
index 60edc02fc2a..604b8cd34fb 100644
--- a/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp
@@ -48,9 +48,9 @@ define_pd_global(intx, InlineFrequencyCount, 100);
#define DEFAULT_STACK_SHADOW_PAGES (4 DEBUG_ONLY(+5))
#define DEFAULT_STACK_RESERVED_PAGES (0)
-#define MIN_STACK_YELLOW_PAGES 1
-#define MIN_STACK_RED_PAGES 1
-#define MIN_STACK_SHADOW_PAGES 1
+#define MIN_STACK_YELLOW_PAGES DEFAULT_STACK_YELLOW_PAGES
+#define MIN_STACK_RED_PAGES DEFAULT_STACK_RED_PAGES
+#define MIN_STACK_SHADOW_PAGES DEFAULT_STACK_SHADOW_PAGES
#define MIN_STACK_RESERVED_PAGES (0)
define_pd_global(intx, StackYellowPages, DEFAULT_STACK_YELLOW_PAGES);
@@ -76,7 +76,8 @@ define_pd_global(bool, CompactStrings, false);
// avoid biased locking while we are bootstrapping the aarch64 build
define_pd_global(bool, UseBiasedLocking, false);
-define_pd_global(intx, InitArrayShortSize, 18*BytesPerLong);
+// Clear short arrays bigger than one word in an arch-specific way
+define_pd_global(intx, InitArrayShortSize, BytesPerLong);
#if defined(COMPILER1) || defined(COMPILER2)
define_pd_global(intx, InlineSmallCode, 1000);
@@ -84,7 +85,14 @@ define_pd_global(intx, InlineSmallCode, 1000);
#ifdef BUILTIN_SIM
#define UseBuiltinSim true
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, NotifySimulator, UseBuiltinSim, \
"tell the AArch64 sim where we are in method code") \
@@ -116,7 +124,14 @@ define_pd_global(intx, InlineSmallCode, 1000);
#define NotifySimulator false
#define UseSimulatorCache false
#define DisableBCCheck true
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, NearCpool, true, \
"constant pool is close to instructions") \
@@ -131,6 +146,11 @@ define_pd_global(intx, InlineSmallCode, 1000);
"Use SIMD instructions in generated memory move code") \
product(bool, UseLSE, false, \
"Use LSE instructions") \
+ product(bool, UseBlockZeroing, true, \
+ "Use DC ZVA for block zeroing") \
+ product(intx, BlockZeroingLowLimit, 256, \
+ "Minimum size in bytes when block zeroing will be used") \
+ range(1, max_jint) \
product(bool, TraceTraps, false, "Trace all traps the signal handler")
#endif
diff --git a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp
index 59d06cb65ee..22712102137 100644
--- a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp
@@ -27,12 +27,12 @@
#include "interp_masm_aarch64.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
+#include "logging/log.hpp"
#include "oops/arrayOop.hpp"
#include "oops/markOop.hpp"
#include "oops/methodData.hpp"
#include "oops/method.hpp"
#include "prims/jvmtiExport.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "prims/jvmtiThreadState.hpp"
#include "runtime/basicLock.hpp"
#include "runtime/biasedLocking.hpp"
@@ -40,7 +40,43 @@
#include "runtime/thread.inline.hpp"
-// Implementation of InterpreterMacroAssembler
+void InterpreterMacroAssembler::narrow(Register result) {
+
+ // Get method->_constMethod->_result_type
+ ldr(rscratch1, Address(rfp, frame::interpreter_frame_method_offset * wordSize));
+ ldr(rscratch1, Address(rscratch1, Method::const_offset()));
+ ldrb(rscratch1, Address(rscratch1, ConstMethod::result_type_offset()));
+
+ Label done, notBool, notByte, notChar;
+
+ // common case first
+ cmpw(rscratch1, T_INT);
+ br(Assembler::EQ, done);
+
+ // mask integer result to narrower return type.
+ cmpw(rscratch1, T_BOOLEAN);
+ br(Assembler::NE, notBool);
+ andw(result, result, 0x1);
+ b(done);
+
+ bind(notBool);
+ cmpw(rscratch1, T_BYTE);
+ br(Assembler::NE, notByte);
+ sbfx(result, result, 0, 8);
+ b(done);
+
+ bind(notByte);
+ cmpw(rscratch1, T_CHAR);
+ br(Assembler::NE, notChar);
+ ubfx(result, result, 0, 16); // truncate upper 16 bits
+ b(done);
+
+ bind(notChar);
+ sbfx(result, result, 0, 16); // sign-extend short
+
+ // Nothing to do for T_INT
+ bind(done);
+}
void InterpreterMacroAssembler::jump_to_entry(address entry) {
assert(entry, "Entry must have been generated by now");
@@ -81,6 +117,7 @@ void InterpreterMacroAssembler::load_earlyret_value(TosState state) {
verify_oop(r0, state); break;
case ltos: ldr(r0, val_addr); break;
case btos: // fall through
+ case ztos: // fall through
case ctos: // fall through
case stos: // fall through
case itos: ldrw(r0, val_addr); break;
@@ -314,6 +351,7 @@ void InterpreterMacroAssembler::pop(TosState state) {
switch (state) {
case atos: pop_ptr(); break;
case btos:
+ case ztos:
case ctos:
case stos:
case itos: pop_i(); break;
@@ -331,6 +369,7 @@ void InterpreterMacroAssembler::push(TosState state) {
switch (state) {
case atos: push_ptr(); break;
case btos:
+ case ztos:
case ctos:
case stos:
case itos: push_i(); break;
@@ -1411,7 +1450,7 @@ void InterpreterMacroAssembler::notify_method_entry() {
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
get_method(c_rarg1);
call_VM_leaf(
CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
diff --git a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp
index d56d17ab47a..dd73bf5283d 100644
--- a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp
@@ -245,6 +245,9 @@ class InterpreterMacroAssembler: public MacroAssembler {
void update_mdp_by_constant(Register mdp_in, int constant);
void update_mdp_for_ret(Register return_bci);
+ // narrow int return value
+ void narrow(Register result);
+
void profile_taken_branch(Register mdp, Register bumped_count);
void profile_not_taken_branch(Register mdp);
void profile_call(Register mdp);
diff --git a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
index 0ede2e9847a..a271ba92ede 100644
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
@@ -3217,6 +3217,14 @@ void MacroAssembler::load_klass(Register dst, Register src) {
}
}
+void MacroAssembler::load_mirror(Register dst, Register method) {
+ const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+ ldr(dst, Address(rmethod, Method::const_offset()));
+ ldr(dst, Address(dst, ConstMethod::constants_offset()));
+ ldr(dst, Address(dst, ConstantPool::pool_holder_offset_in_bytes()));
+ ldr(dst, Address(dst, mirror_offset));
+}
+
void MacroAssembler::cmp_klass(Register oop, Register trial_klass, Register tmp) {
if (UseCompressedClassPointers) {
ldrw(tmp, Address(oop, oopDesc::klass_offset_in_bytes()));
@@ -4085,7 +4093,10 @@ void MacroAssembler::load_byte_map_base(Register reg) {
// and it might even be negative.
unsigned long offset;
adrp(reg, ExternalAddress((address)byte_map_base), offset);
- assert(offset == 0, "misaligned card table base");
+ // We expect offset to be zero with most collectors.
+ if (offset != 0) {
+ add(reg, reg, offset);
+ }
} else {
mov(reg, (uint64_t)byte_map_base);
}
@@ -4585,7 +4596,16 @@ void MacroAssembler::arrays_equals(Register a1, Register a2,
assert(elem_size == 1 || elem_size == 2, "must be char or byte");
assert_different_registers(a1, a2, result, cnt1, rscratch1, rscratch2);
- BLOCK_COMMENT(is_string ? "string_equals {" : "array_equals {");
+#ifndef PRODUCT
+ {
+ const char kind = (elem_size == 2) ? 'U' : 'L';
+ char comment[64];
+ snprintf(comment, sizeof comment, "%s%c%s {",
+ is_string ? "string_equals" : "array_equals",
+ kind, "{");
+ BLOCK_COMMENT(comment);
+ }
+#endif
mov(result, false);
@@ -4671,7 +4691,179 @@ void MacroAssembler::arrays_equals(Register a1, Register a2,
}
-// encode char[] to byte[] in ISO_8859_1
+// base: Address of a buffer to be zeroed, 8 bytes aligned.
+// cnt: Count in HeapWords.
+// is_large: True when 'cnt' is known to be >= BlockZeroingLowLimit.
+void MacroAssembler::zero_words(Register base, Register cnt)
+{
+ if (UseBlockZeroing) {
+ block_zero(base, cnt);
+ } else {
+ fill_words(base, cnt, zr);
+ }
+}
+
+// r10 = base: Address of a buffer to be zeroed, 8 bytes aligned.
+// cnt: Immediate count in HeapWords.
+// r11 = tmp: For use as cnt if we need to call out
+#define ShortArraySize (18 * BytesPerLong)
+void MacroAssembler::zero_words(Register base, u_int64_t cnt)
+{
+ Register tmp = r11;
+ int i = cnt & 1; // store any odd word to start
+ if (i) str(zr, Address(base));
+
+ if (cnt <= ShortArraySize / BytesPerLong) {
+ for (; i < (int)cnt; i += 2)
+ stp(zr, zr, Address(base, i * wordSize));
+ } else if (UseBlockZeroing && cnt >= (u_int64_t)(BlockZeroingLowLimit >> LogBytesPerWord)) {
+ mov(tmp, cnt);
+ block_zero(base, tmp, true);
+ } else {
+ const int unroll = 4; // Number of stp(zr, zr) instructions we'll unroll
+ int remainder = cnt % (2 * unroll);
+ for (; i < remainder; i += 2)
+ stp(zr, zr, Address(base, i * wordSize));
+
+ Label loop;
+ Register cnt_reg = rscratch1;
+ Register loop_base = rscratch2;
+ cnt = cnt - remainder;
+ mov(cnt_reg, cnt);
+ // adjust base and prebias by -2 * wordSize so we can pre-increment
+ add(loop_base, base, (remainder - 2) * wordSize);
+ bind(loop);
+ sub(cnt_reg, cnt_reg, 2 * unroll);
+ for (i = 1; i < unroll; i++)
+ stp(zr, zr, Address(loop_base, 2 * i * wordSize));
+ stp(zr, zr, Address(pre(loop_base, 2 * unroll * wordSize)));
+ cbnz(cnt_reg, loop);
+ }
+}
+
+// base: Address of a buffer to be filled, 8 bytes aligned.
+// cnt: Count in 8-byte unit.
+// value: Value to be filled with.
+// base will point to the end of the buffer after filling.
+void MacroAssembler::fill_words(Register base, Register cnt, Register value)
+{
+// Algorithm:
+//
+// scratch1 = cnt & 7;
+// cnt -= scratch1;
+// p += scratch1;
+// switch (scratch1) {
+// do {
+// cnt -= 8;
+// p[-8] = v;
+// case 7:
+// p[-7] = v;
+// case 6:
+// p[-6] = v;
+// // ...
+// case 1:
+// p[-1] = v;
+// case 0:
+// p += 8;
+// } while (cnt);
+// }
+
+ assert_different_registers(base, cnt, value, rscratch1, rscratch2);
+
+ Label fini, skip, entry, loop;
+ const int unroll = 8; // Number of stp instructions we'll unroll
+
+ cbz(cnt, fini);
+ tbz(base, 3, skip);
+ str(value, Address(post(base, 8)));
+ sub(cnt, cnt, 1);
+ bind(skip);
+
+ andr(rscratch1, cnt, (unroll-1) * 2);
+ sub(cnt, cnt, rscratch1);
+ add(base, base, rscratch1, Assembler::LSL, 3);
+ adr(rscratch2, entry);
+ sub(rscratch2, rscratch2, rscratch1, Assembler::LSL, 1);
+ br(rscratch2);
+
+ bind(loop);
+ add(base, base, unroll * 16);
+ for (int i = -unroll; i < 0; i++)
+ stp(value, value, Address(base, i * 16));
+ bind(entry);
+ subs(cnt, cnt, unroll * 2);
+ br(Assembler::GE, loop);
+
+ tbz(cnt, 0, fini);
+ str(value, Address(post(base, 8)));
+ bind(fini);
+}
+
+// Use DC ZVA to do fast zeroing.
+// base: Address of a buffer to be zeroed, 8 bytes aligned.
+// cnt: Count in HeapWords.
+// is_large: True when 'cnt' is known to be >= BlockZeroingLowLimit.
+void MacroAssembler::block_zero(Register base, Register cnt, bool is_large)
+{
+ Label small;
+ Label store_pair, loop_store_pair, done;
+ Label base_aligned;
+
+ assert_different_registers(base, cnt, rscratch1);
+ guarantee(base == r10 && cnt == r11, "fix register usage");
+
+ Register tmp = rscratch1;
+ Register tmp2 = rscratch2;
+ int zva_length = VM_Version::zva_length();
+
+ // Ensure ZVA length can be divided by 16. This is required by
+ // the subsequent operations.
+ assert (zva_length % 16 == 0, "Unexpected ZVA Length");
+
+ if (!is_large) cbz(cnt, done);
+ tbz(base, 3, base_aligned);
+ str(zr, Address(post(base, 8)));
+ sub(cnt, cnt, 1);
+ bind(base_aligned);
+
+ // Ensure count >= zva_length * 2 so that it still deserves a zva after
+ // alignment.
+ if (!is_large || !(BlockZeroingLowLimit >= zva_length * 2)) {
+ int low_limit = MAX2(zva_length * 2, (int)BlockZeroingLowLimit);
+ cmp(cnt, low_limit >> 3);
+ br(Assembler::LT, small);
+ }
+
+ far_call(StubRoutines::aarch64::get_zero_longs());
+
+ bind(small);
+
+ const int unroll = 8; // Number of stp instructions we'll unroll
+ Label small_loop, small_table_end;
+
+ andr(tmp, cnt, (unroll-1) * 2);
+ sub(cnt, cnt, tmp);
+ add(base, base, tmp, Assembler::LSL, 3);
+ adr(tmp2, small_table_end);
+ sub(tmp2, tmp2, tmp, Assembler::LSL, 1);
+ br(tmp2);
+
+ bind(small_loop);
+ add(base, base, unroll * 16);
+ for (int i = -unroll; i < 0; i++)
+ stp(zr, zr, Address(base, i * 16));
+ bind(small_table_end);
+ subs(cnt, cnt, unroll * 2);
+ br(Assembler::GE, small_loop);
+
+ tbz(cnt, 0, done);
+ str(zr, Address(post(base, 8)));
+
+ bind(done);
+}
+
+// Intrinsic for sun/nio/cs/ISO_8859_1$Encoder.implEncodeISOArray and
+// java/lang/StringUTF16.compress.
void MacroAssembler::encode_iso_array(Register src, Register dst,
Register len, Register result,
FloatRegister Vtmp1, FloatRegister Vtmp2,
@@ -4734,6 +4926,90 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
BIND(DONE);
sub(result, result, len); // Return index where we stopped
+ // Return len == 0 if we processed all
+ // characters
+}
+
+
+// Inflate byte[] array to char[].
+void MacroAssembler::byte_array_inflate(Register src, Register dst, Register len,
+ FloatRegister vtmp1, FloatRegister vtmp2, FloatRegister vtmp3,
+ Register tmp4) {
+ Label big, done;
+
+ assert_different_registers(src, dst, len, tmp4, rscratch1);
+
+ fmovd(vtmp1 , zr);
+ lsrw(rscratch1, len, 3);
+
+ cbnzw(rscratch1, big);
+
+ // Short string: less than 8 bytes.
+ {
+ Label loop, around, tiny;
+
+ subsw(len, len, 4);
+ andw(len, len, 3);
+ br(LO, tiny);
+
+ // Use SIMD to do 4 bytes.
+ ldrs(vtmp2, post(src, 4));
+ zip1(vtmp3, T8B, vtmp2, vtmp1);
+ strd(vtmp3, post(dst, 8));
+
+ cbzw(len, done);
+
+ // Do the remaining bytes by steam.
+ bind(loop);
+ ldrb(tmp4, post(src, 1));
+ strh(tmp4, post(dst, 2));
+ subw(len, len, 1);
+
+ bind(tiny);
+ cbnz(len, loop);
+
+ bind(around);
+ b(done);
+ }
+
+ // Unpack the bytes 8 at a time.
+ bind(big);
+ andw(len, len, 7);
+
+ {
+ Label loop, around;
+
+ bind(loop);
+ ldrd(vtmp2, post(src, 8));
+ sub(rscratch1, rscratch1, 1);
+ zip1(vtmp3, T16B, vtmp2, vtmp1);
+ st1(vtmp3, T8H, post(dst, 16));
+ cbnz(rscratch1, loop);
+
+ bind(around);
+ }
+
+ // Do the tail of up to 8 bytes.
+ sub(src, src, 8);
+ add(src, src, len, ext::uxtw, 0);
+ ldrd(vtmp2, Address(src));
+ sub(dst, dst, 16);
+ add(dst, dst, len, ext::uxtw, 1);
+ zip1(vtmp3, T16B, vtmp2, vtmp1);
+ st1(vtmp3, T8H, Address(dst));
+
+ bind(done);
+}
+
+// Compress char[] array to byte[].
+void MacroAssembler::char_array_compress(Register src, Register dst, Register len,
+ FloatRegister tmp1Reg, FloatRegister tmp2Reg,
+ FloatRegister tmp3Reg, FloatRegister tmp4Reg,
+ Register result) {
+ encode_iso_array(src, dst, len, result,
+ tmp1Reg, tmp2Reg, tmp3Reg, tmp4Reg);
+ cmp(len, zr);
+ csel(result, result, zr, EQ);
}
// get_thread() can be called anywhere inside generated code so we
diff --git a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
index b114e1b9c80..0db161d5303 100644
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -536,6 +536,15 @@ public:
msr(0b011, 0b0100, 0b0100, 0b001, zr);
}
+ // DCZID_EL0: op1 == 011
+ // CRn == 0000
+ // CRm == 0000
+ // op2 == 111
+ inline void get_dczid_el0(Register reg)
+ {
+ mrs(0b011, 0b0000, 0b0000, 0b111, reg);
+ }
+
// idiv variant which deals with MINLONG as dividend and -1 as divisor
int corrected_idivl(Register result, Register ra, Register rb,
bool want_remainder, Register tmp = rscratch1);
@@ -770,6 +779,8 @@ public:
void store_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
+ void load_mirror(Register dst, Register method);
+
void load_heap_oop(Register dst, Address src);
void load_heap_oop_not_null(Register dst, Address src);
@@ -1184,6 +1195,20 @@ public:
Register result, Register cnt1,
int elem_size, bool is_string);
+ void fill_words(Register base, Register cnt, Register value);
+ void zero_words(Register base, u_int64_t cnt);
+ void zero_words(Register base, Register cnt);
+ void block_zero(Register base, Register cnt, bool is_large = false);
+
+ void byte_array_inflate(Register src, Register dst, Register len,
+ FloatRegister vtmp1, FloatRegister vtmp2,
+ FloatRegister vtmp3, Register tmp4);
+
+ void char_array_compress(Register src, Register dst, Register len,
+ FloatRegister tmp1Reg, FloatRegister tmp2Reg,
+ FloatRegister tmp3Reg, FloatRegister tmp4Reg,
+ Register result);
+
void encode_iso_array(Register src, Register dst,
Register len, Register result,
FloatRegister Vtmp1, FloatRegister Vtmp2,
diff --git a/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp
index e36434cc183..88e1d3d1460 100644
--- a/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.cpp
@@ -99,7 +99,7 @@ address NativeCall::get_trampoline() {
address bl_destination
= MacroAssembler::pd_call_destination(call_addr);
- if (code->content_contains(bl_destination) &&
+ if (code->contains(bl_destination) &&
is_NativeCallTrampolineStub_at(bl_destination))
return bl_destination;
diff --git a/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
index 760256da378..6a5bb7a66b7 100644
--- a/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
@@ -31,9 +31,9 @@
#include "code/vtableStubs.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interp_masm.hpp"
+#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_aarch64.inline.hpp"
@@ -1781,7 +1781,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
// protect the args we've loaded
save_args(masm, total_c_args, c_arg, out_regs);
__ mov_metadata(c_rarg1, method());
diff --git a/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
index b0787ddf4a9..2355579ceab 100644
--- a/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
@@ -719,6 +719,48 @@ class StubGenerator: public StubCodeGenerator {
}
}
+ address generate_zero_longs(Register base, Register cnt) {
+ Register tmp = rscratch1;
+ Register tmp2 = rscratch2;
+ int zva_length = VM_Version::zva_length();
+ Label initial_table_end, loop_zva;
+ Label fini;
+
+ __ align(CodeEntryAlignment);
+ StubCodeMark mark(this, "StubRoutines", "zero_longs");
+ address start = __ pc();
+
+ // Base must be 16 byte aligned. If not just return and let caller handle it
+ __ tst(base, 0x0f);
+ __ br(Assembler::NE, fini);
+ // Align base with ZVA length.
+ __ neg(tmp, base);
+ __ andr(tmp, tmp, zva_length - 1);
+
+ // tmp: the number of bytes to be filled to align the base with ZVA length.
+ __ add(base, base, tmp);
+ __ sub(cnt, cnt, tmp, Assembler::ASR, 3);
+ __ adr(tmp2, initial_table_end);
+ __ sub(tmp2, tmp2, tmp, Assembler::LSR, 2);
+ __ br(tmp2);
+
+ for (int i = -zva_length + 16; i < 0; i += 16)
+ __ stp(zr, zr, Address(base, i));
+ __ bind(initial_table_end);
+
+ __ sub(cnt, cnt, zva_length >> 3);
+ __ bind(loop_zva);
+ __ dc(Assembler::ZVA, base);
+ __ subs(cnt, cnt, zva_length >> 3);
+ __ add(base, base, zva_length);
+ __ br(Assembler::GE, loop_zva);
+ __ add(cnt, cnt, zva_length >> 3); // count not zeroed by DC ZVA
+ __ bind(fini);
+ __ ret(lr);
+
+ return start;
+ }
+
typedef enum {
copy_forwards = 1,
copy_backwards = -1
@@ -2021,6 +2063,154 @@ class StubGenerator: public StubCodeGenerator {
return start;
}
+ //
+ // Generate stub for array fill. If "aligned" is true, the
+ // "to" address is assumed to be heapword aligned.
+ //
+ // Arguments for generated stub:
+ // to: c_rarg0
+ // value: c_rarg1
+ // count: c_rarg2 treated as signed
+ //
+ address generate_fill(BasicType t, bool aligned, const char *name) {
+ __ align(CodeEntryAlignment);
+ StubCodeMark mark(this, "StubRoutines", name);
+ address start = __ pc();
+
+ BLOCK_COMMENT("Entry:");
+
+ const Register to = c_rarg0; // source array address
+ const Register value = c_rarg1; // value
+ const Register count = c_rarg2; // elements count
+
+ const Register bz_base = r10; // base for block_zero routine
+ const Register cnt_words = r11; // temp register
+
+ __ enter();
+
+ Label L_fill_elements, L_exit1;
+
+ int shift = -1;
+ switch (t) {
+ case T_BYTE:
+ shift = 0;
+ __ cmpw(count, 8 >> shift); // Short arrays (< 8 bytes) fill by element
+ __ bfi(value, value, 8, 8); // 8 bit -> 16 bit
+ __ bfi(value, value, 16, 16); // 16 bit -> 32 bit
+ __ br(Assembler::LO, L_fill_elements);
+ break;
+ case T_SHORT:
+ shift = 1;
+ __ cmpw(count, 8 >> shift); // Short arrays (< 8 bytes) fill by element
+ __ bfi(value, value, 16, 16); // 16 bit -> 32 bit
+ __ br(Assembler::LO, L_fill_elements);
+ break;
+ case T_INT:
+ shift = 2;
+ __ cmpw(count, 8 >> shift); // Short arrays (< 8 bytes) fill by element
+ __ br(Assembler::LO, L_fill_elements);
+ break;
+ default: ShouldNotReachHere();
+ }
+
+ // Align source address at 8 bytes address boundary.
+ Label L_skip_align1, L_skip_align2, L_skip_align4;
+ if (!aligned) {
+ switch (t) {
+ case T_BYTE:
+ // One byte misalignment happens only for byte arrays.
+ __ tbz(to, 0, L_skip_align1);
+ __ strb(value, Address(__ post(to, 1)));
+ __ subw(count, count, 1);
+ __ bind(L_skip_align1);
+ // Fallthrough
+ case T_SHORT:
+ // Two bytes misalignment happens only for byte and short (char) arrays.
+ __ tbz(to, 1, L_skip_align2);
+ __ strh(value, Address(__ post(to, 2)));
+ __ subw(count, count, 2 >> shift);
+ __ bind(L_skip_align2);
+ // Fallthrough
+ case T_INT:
+ // Align to 8 bytes, we know we are 4 byte aligned to start.
+ __ tbz(to, 2, L_skip_align4);
+ __ strw(value, Address(__ post(to, 4)));
+ __ subw(count, count, 4 >> shift);
+ __ bind(L_skip_align4);
+ break;
+ default: ShouldNotReachHere();
+ }
+ }
+
+ //
+ // Fill large chunks
+ //
+ __ lsrw(cnt_words, count, 3 - shift); // number of words
+ __ bfi(value, value, 32, 32); // 32 bit -> 64 bit
+ __ subw(count, count, cnt_words, Assembler::LSL, 3 - shift);
+ if (UseBlockZeroing) {
+ Label non_block_zeroing, rest;
+ // count >= BlockZeroingLowLimit && value == 0
+ __ cmp(cnt_words, BlockZeroingLowLimit >> 3);
+ __ ccmp(value, 0 /* comparing value */, 0 /* NZCV */, Assembler::GE);
+ __ br(Assembler::NE, non_block_zeroing);
+ __ mov(bz_base, to);
+ __ block_zero(bz_base, cnt_words, true);
+ __ mov(to, bz_base);
+ __ b(rest);
+ __ bind(non_block_zeroing);
+ __ fill_words(to, cnt_words, value);
+ __ bind(rest);
+ }
+ else {
+ __ fill_words(to, cnt_words, value);
+ }
+
+ // Remaining count is less than 8 bytes. Fill it by a single store.
+ // Note that the total length is no less than 8 bytes.
+ if (t == T_BYTE || t == T_SHORT) {
+ Label L_exit1;
+ __ cbzw(count, L_exit1);
+ __ add(to, to, count, Assembler::LSL, shift); // points to the end
+ __ str(value, Address(to, -8)); // overwrite some elements
+ __ bind(L_exit1);
+ __ leave();
+ __ ret(lr);
+ }
+
+ // Handle copies less than 8 bytes.
+ Label L_fill_2, L_fill_4, L_exit2;
+ __ bind(L_fill_elements);
+ switch (t) {
+ case T_BYTE:
+ __ tbz(count, 0, L_fill_2);
+ __ strb(value, Address(__ post(to, 1)));
+ __ bind(L_fill_2);
+ __ tbz(count, 1, L_fill_4);
+ __ strh(value, Address(__ post(to, 2)));
+ __ bind(L_fill_4);
+ __ tbz(count, 2, L_exit2);
+ __ strw(value, Address(to));
+ break;
+ case T_SHORT:
+ __ tbz(count, 0, L_fill_4);
+ __ strh(value, Address(__ post(to, 2)));
+ __ bind(L_fill_4);
+ __ tbz(count, 1, L_exit2);
+ __ strw(value, Address(to));
+ break;
+ case T_INT:
+ __ cbzw(count, L_exit2);
+ __ strw(value, Address(to));
+ break;
+ default: ShouldNotReachHere();
+ }
+ __ bind(L_exit2);
+ __ leave();
+ __ ret(lr);
+ return start;
+ }
+
void generate_arraycopy_stubs() {
address entry;
address entry_jbyte_arraycopy;
@@ -2033,6 +2223,8 @@ class StubGenerator: public StubCodeGenerator {
generate_copy_longs(copy_f, r0, r1, rscratch2, copy_forwards);
generate_copy_longs(copy_b, r0, r1, rscratch2, copy_backwards);
+ StubRoutines::aarch64::_zero_longs = generate_zero_longs(r10, r11);
+
//*** jbyte
// Always need aligned and unaligned versions
StubRoutines::_jbyte_disjoint_arraycopy = generate_disjoint_byte_copy(false, &entry,
@@ -2124,6 +2316,12 @@ class StubGenerator: public StubCodeGenerator {
entry_jlong_arraycopy,
entry_checkcast_arraycopy);
+ StubRoutines::_jbyte_fill = generate_fill(T_BYTE, false, "jbyte_fill");
+ StubRoutines::_jshort_fill = generate_fill(T_SHORT, false, "jshort_fill");
+ StubRoutines::_jint_fill = generate_fill(T_INT, false, "jint_fill");
+ StubRoutines::_arrayof_jbyte_fill = generate_fill(T_BYTE, true, "arrayof_jbyte_fill");
+ StubRoutines::_arrayof_jshort_fill = generate_fill(T_SHORT, true, "arrayof_jshort_fill");
+ StubRoutines::_arrayof_jint_fill = generate_fill(T_INT, true, "arrayof_jint_fill");
}
void generate_math_stubs() { Unimplemented(); }
diff --git a/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.cpp
index e7d7f5bce78..f5727ee03c6 100644
--- a/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.cpp
@@ -43,6 +43,7 @@ address StubRoutines::aarch64::_float_sign_mask = NULL;
address StubRoutines::aarch64::_float_sign_flip = NULL;
address StubRoutines::aarch64::_double_sign_mask = NULL;
address StubRoutines::aarch64::_double_sign_flip = NULL;
+address StubRoutines::aarch64::_zero_longs = NULL;
/**
* crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.5/crc32.h
diff --git a/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.hpp
index 8764ebf7286..1355a6836df 100644
--- a/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/stubRoutines_aarch64.hpp
@@ -61,6 +61,8 @@ class aarch64 {
static address _double_sign_mask;
static address _double_sign_flip;
+ static address _zero_longs;
+
public:
static address get_previous_fp_entry()
@@ -113,6 +115,11 @@ class aarch64 {
return _double_sign_flip;
}
+ static address get_zero_longs()
+ {
+ return _zero_longs;
+ }
+
private:
static juint _crc_table[];
diff --git a/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp
index 7fe8f147c27..e78276ed8a7 100644
--- a/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp
@@ -759,18 +759,13 @@ void TemplateInterpreterGenerator::lock_method() {
// get synchronization object
{
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
Label done;
__ ldrw(r0, access_flags);
__ tst(r0, JVM_ACC_STATIC);
// get receiver (assume this is frequent case)
__ ldr(r0, Address(rlocals, Interpreter::local_offset_in_bytes(0)));
__ br(Assembler::EQ, done);
- __ ldr(r0, Address(rmethod, Method::const_offset()));
- __ ldr(r0, Address(r0, ConstMethod::constants_offset()));
- __ ldr(r0, Address(r0,
- ConstantPool::pool_holder_offset_in_bytes()));
- __ ldr(r0, Address(r0, mirror_offset));
+ __ load_mirror(r0, rmethod);
#ifdef ASSERT
{
@@ -807,16 +802,16 @@ void TemplateInterpreterGenerator::lock_method() {
void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
// initialize fixed part of activation frame
if (native_call) {
- __ sub(esp, sp, 12 * wordSize);
+ __ sub(esp, sp, 14 * wordSize);
__ mov(rbcp, zr);
- __ stp(esp, zr, Address(__ pre(sp, -12 * wordSize)));
+ __ stp(esp, zr, Address(__ pre(sp, -14 * wordSize)));
// add 2 zero-initialized slots for native calls
- __ stp(zr, zr, Address(sp, 10 * wordSize));
+ __ stp(zr, zr, Address(sp, 12 * wordSize));
} else {
- __ sub(esp, sp, 10 * wordSize);
+ __ sub(esp, sp, 12 * wordSize);
__ ldr(rscratch1, Address(rmethod, Method::const_offset())); // get ConstMethod
__ add(rbcp, rscratch1, in_bytes(ConstMethod::codes_offset())); // get codebase
- __ stp(esp, rbcp, Address(__ pre(sp, -10 * wordSize)));
+ __ stp(esp, rbcp, Address(__ pre(sp, -12 * wordSize)));
}
if (ProfileInterpreter) {
@@ -825,22 +820,26 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
__ cbz(rscratch1, method_data_continue);
__ lea(rscratch1, Address(rscratch1, in_bytes(MethodData::data_offset())));
__ bind(method_data_continue);
- __ stp(rscratch1, rmethod, Address(sp, 4 * wordSize)); // save Method* and mdp (method data pointer)
+ __ stp(rscratch1, rmethod, Address(sp, 6 * wordSize)); // save Method* and mdp (method data pointer)
} else {
- __ stp(zr, rmethod, Address(sp, 4 * wordSize)); // save Method* (no mdp)
+ __ stp(zr, rmethod, Address(sp, 6 * wordSize)); // save Method* (no mdp)
}
+ // Get mirror and store it in the frame as GC root for this Method*
+ __ load_mirror(rscratch1, rmethod);
+ __ stp(rscratch1, zr, Address(sp, 4 * wordSize));
+
__ ldr(rcpool, Address(rmethod, Method::const_offset()));
__ ldr(rcpool, Address(rcpool, ConstMethod::constants_offset()));
__ ldr(rcpool, Address(rcpool, ConstantPool::cache_offset_in_bytes()));
__ stp(rlocals, rcpool, Address(sp, 2 * wordSize));
- __ stp(rfp, lr, Address(sp, 8 * wordSize));
- __ lea(rfp, Address(sp, 8 * wordSize));
+ __ stp(rfp, lr, Address(sp, 10 * wordSize));
+ __ lea(rfp, Address(sp, 10 * wordSize));
// set sender sp
// leave last_sp as null
- __ stp(zr, r13, Address(sp, 6 * wordSize));
+ __ stp(zr, r13, Address(sp, 8 * wordSize));
// Move SP out of the way
if (! native_call) {
@@ -1242,15 +1241,11 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
// pass mirror handle if static call
{
Label L;
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
__ ldrw(t, Address(rmethod, Method::access_flags_offset()));
__ tst(t, JVM_ACC_STATIC);
__ br(Assembler::EQ, L);
// get mirror
- __ ldr(t, Address(rmethod, Method::const_offset()));
- __ ldr(t, Address(t, ConstMethod::constants_offset()));
- __ ldr(t, Address(t, ConstantPool::pool_holder_offset_in_bytes()));
- __ ldr(t, Address(t, mirror_offset));
+ __ load_mirror(t, rmethod);
// copy mirror into activation frame
__ str(t, Address(rfp, frame::interpreter_frame_oop_temp_offset * wordSize));
// pass handle to mirror
diff --git a/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
index 6c8c5ac8bac..5c1a98463bf 100644
--- a/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
@@ -229,6 +229,7 @@ void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,
switch (bc) {
case Bytecodes::_fast_aputfield:
case Bytecodes::_fast_bputfield:
+ case Bytecodes::_fast_zputfield:
case Bytecodes::_fast_cputfield:
case Bytecodes::_fast_dputfield:
case Bytecodes::_fast_fputfield:
@@ -1082,6 +1083,17 @@ void TemplateTable::bastore()
// r1: index
// r3: array
index_check(r3, r1); // prefer index in r1
+
+ // Need to check whether array is boolean or byte
+ // since both types share the bastore bytecode.
+ __ load_klass(r2, r3);
+ __ ldrw(r2, Address(r2, Klass::layout_helper_offset()));
+ int diffbit_index = exact_log2(Klass::layout_helper_boolean_diffbit());
+ Label L_skip;
+ __ tbz(r2, diffbit_index, L_skip);
+ __ andw(r0, r0, 1); // if it is a T_BOOLEAN array, mask the stored value to 0/1
+ __ bind(L_skip);
+
__ lea(rscratch1, Address(r3, r1, Address::uxtw(0)));
__ strb(r0, Address(rscratch1,
arrayOopDesc::base_offset_in_bytes(T_BYTE)));
@@ -2193,6 +2205,13 @@ void TemplateTable::_return(TosState state)
if (_desc->bytecode() == Bytecodes::_return)
__ membar(MacroAssembler::StoreStore);
+ // Narrow result if state is itos but result type is smaller.
+ // Need to narrow in the return bytecode rather than in generate_return_entry
+ // since compiled code callers expect the result to already be narrowed.
+ if (state == itos) {
+ __ narrow(r0);
+ }
+
__ remove_activation(state);
__ ret(lr);
}
@@ -2386,7 +2405,7 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
const Address field(obj, off);
- Label Done, notByte, notInt, notShort, notChar,
+ Label Done, notByte, notBool, notInt, notShort, notChar,
notLong, notFloat, notObj, notDouble;
// x86 uses a shift and mask or wings it with a shift plus assert
@@ -2409,6 +2428,20 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
__ b(Done);
__ bind(notByte);
+ __ cmp(flags, ztos);
+ __ br(Assembler::NE, notBool);
+
+ // ztos (same code as btos)
+ __ ldrsb(r0, field);
+ __ push(ztos);
+ // Rewrite bytecode to be faster
+ if (!is_static) {
+ // use btos rewriting, no truncating to t/f bit is needed for getfield.
+ patch_bytecode(Bytecodes::_fast_bgetfield, bc, r1);
+ }
+ __ b(Done);
+
+ __ bind(notBool);
__ cmp(flags, atos);
__ br(Assembler::NE, notObj);
// atos
@@ -2604,7 +2637,7 @@ void TemplateTable::putfield_or_static(int byte_no, bool is_static, RewriteContr
// field address
const Address field(obj, off);
- Label notByte, notInt, notShort, notChar,
+ Label notByte, notBool, notInt, notShort, notChar,
notLong, notFloat, notObj, notDouble;
// x86 uses a shift and mask or wings it with a shift plus assert
@@ -2629,6 +2662,22 @@ void TemplateTable::putfield_or_static(int byte_no, bool is_static, RewriteContr
}
__ bind(notByte);
+ __ cmp(flags, ztos);
+ __ br(Assembler::NE, notBool);
+
+ // ztos
+ {
+ __ pop(ztos);
+ if (!is_static) pop_and_check_object(obj);
+ __ andw(r0, r0, 0x1);
+ __ strb(r0, field);
+ if (!is_static) {
+ patch_bytecode(Bytecodes::_fast_zputfield, bc, r1, true, byte_no);
+ }
+ __ b(Done);
+ }
+
+ __ bind(notBool);
__ cmp(flags, atos);
__ br(Assembler::NE, notObj);
@@ -2783,6 +2832,7 @@ void TemplateTable::jvmti_post_fast_field_mod()
switch (bytecode()) { // load values into the jvalue object
case Bytecodes::_fast_aputfield: __ push_ptr(r0); break;
case Bytecodes::_fast_bputfield: // fall through
+ case Bytecodes::_fast_zputfield: // fall through
case Bytecodes::_fast_sputfield: // fall through
case Bytecodes::_fast_cputfield: // fall through
case Bytecodes::_fast_iputfield: __ push_i(r0); break;
@@ -2808,6 +2858,7 @@ void TemplateTable::jvmti_post_fast_field_mod()
switch (bytecode()) { // restore tos values
case Bytecodes::_fast_aputfield: __ pop_ptr(r0); break;
case Bytecodes::_fast_bputfield: // fall through
+ case Bytecodes::_fast_zputfield: // fall through
case Bytecodes::_fast_sputfield: // fall through
case Bytecodes::_fast_cputfield: // fall through
case Bytecodes::_fast_iputfield: __ pop_i(r0); break;
@@ -2863,6 +2914,9 @@ void TemplateTable::fast_storefield(TosState state)
case Bytecodes::_fast_iputfield:
__ strw(r0, field);
break;
+ case Bytecodes::_fast_zputfield:
+ __ andw(r0, r0, 0x1); // boolean is true if LSB is 1
+ // fall through to bputfield
case Bytecodes::_fast_bputfield:
__ strb(r0, field);
break;
@@ -2982,7 +3036,7 @@ void TemplateTable::fast_xaccess(TosState state)
__ null_check(r0);
switch (state) {
case itos:
- __ ldr(r0, Address(r0, r1, Address::lsl(0)));
+ __ ldrw(r0, Address(r0, r1, Address::lsl(0)));
break;
case atos:
__ load_heap_oop(r0, Address(r0, r1, Address::lsl(0)));
@@ -3000,7 +3054,7 @@ void TemplateTable::fast_xaccess(TosState state)
__ ldrw(r3, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
ConstantPoolCacheEntry::flags_offset())));
__ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
- __ membar(MacroAssembler::LoadLoad);
+ __ membar(MacroAssembler::LoadLoad | MacroAssembler::LoadStore);
__ bind(notVolatile);
}
diff --git a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp
index 40275cabfa0..bf96f24d621 100644
--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp
@@ -71,6 +71,7 @@ int VM_Version::_model2;
int VM_Version::_variant;
int VM_Version::_revision;
int VM_Version::_stepping;
+VM_Version::PsrInfo VM_Version::_psr_info = { 0, };
static BufferBlob* stub_blob;
static const int stub_size = 550;
@@ -95,13 +96,16 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
__ c_stub_prolog(1, 0, MacroAssembler::ret_type_void);
#endif
- // void getPsrInfo(VM_Version::CpuidInfo* cpuid_info);
+ // void getPsrInfo(VM_Version::PsrInfo* psr_info);
address entry = __ pc();
- // TODO : redefine fields in CpuidInfo and generate
- // code to fill them in
+ __ enter();
+ __ get_dczid_el0(rscratch1);
+ __ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::dczid_el0_offset())));
+
+ __ leave();
__ ret(lr);
# undef __
@@ -118,6 +122,8 @@ void VM_Version::get_processor_features() {
_supports_atomic_getset8 = true;
_supports_atomic_getadd8 = true;
+ getPsrInfo_stub(&_psr_info);
+
if (FLAG_IS_DEFAULT(AllocatePrefetchDistance))
FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
if (FLAG_IS_DEFAULT(AllocatePrefetchStepSize))
@@ -285,6 +291,18 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
}
+ if (is_zva_enabled()) {
+ if (FLAG_IS_DEFAULT(UseBlockZeroing)) {
+ FLAG_SET_DEFAULT(UseBlockZeroing, true);
+ }
+ if (FLAG_IS_DEFAULT(BlockZeroingLowLimit)) {
+ FLAG_SET_DEFAULT(BlockZeroingLowLimit, 4 * VM_Version::zva_length());
+ }
+ } else if (UseBlockZeroing) {
+ warning("DC ZVA is not available on this CPU");
+ FLAG_SET_DEFAULT(UseBlockZeroing, false);
+ }
+
// This machine allows unaligned memory accesses
if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
diff --git a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp
index 2ed5e7ef9bd..25f5b929b3b 100644
--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp
@@ -40,6 +40,10 @@ protected:
static int _revision;
static int _stepping;
+ struct PsrInfo {
+ uint32_t dczid_el0;
+ };
+ static PsrInfo _psr_info;
static void get_processor_features();
public:
@@ -83,6 +87,17 @@ public:
static int cpu_model2() { return _model2; }
static int cpu_variant() { return _variant; }
static int cpu_revision() { return _revision; }
+ static ByteSize dczid_el0_offset() { return byte_offset_of(PsrInfo, dczid_el0); }
+ static bool is_zva_enabled() {
+ // Check the DZP bit (bit 4) of dczid_el0 is zero
+ // and block size (bit 0~3) is not zero.
+ return ((_psr_info.dczid_el0 & 0x10) == 0 &&
+ (_psr_info.dczid_el0 & 0xf) != 0);
+ }
+ static int zva_length() {
+ assert(is_zva_enabled(), "ZVA not available");
+ return 4 << (_psr_info.dczid_el0 & 0xf);
+ }
};
#endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
diff --git a/hotspot/src/cpu/ppc/vm/abstractInterpreter_ppc.cpp b/hotspot/src/cpu/ppc/vm/abstractInterpreter_ppc.cpp
index eaff19ddf71..933a2f44db3 100644
--- a/hotspot/src/cpu/ppc/vm/abstractInterpreter_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/abstractInterpreter_ppc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -152,6 +152,7 @@ void AbstractInterpreter::layout_activation(Method* method,
intptr_t* top_frame_sp = is_top_frame ? sp : sp + (frame::abi_minframe_size - frame::abi_reg_args_size) / Interpreter::stackElementSize;
interpreter_frame->interpreter_frame_set_method(method);
+ interpreter_frame->interpreter_frame_set_mirror(method->method_holder()->java_mirror());
interpreter_frame->interpreter_frame_set_locals(locals_base);
interpreter_frame->interpreter_frame_set_cpcache(method->constants()->cache());
interpreter_frame->interpreter_frame_set_esp(esp);
diff --git a/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp b/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp
index b7bc0cbf50d..ed381b9d631 100644
--- a/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp
@@ -2845,6 +2845,9 @@ void LIR_Assembler::membar_storeload() {
__ membar(Assembler::StoreLoad);
}
+void LIR_Assembler::on_spin_wait() {
+ Unimplemented();
+}
void LIR_Assembler::leal(LIR_Opr addr_opr, LIR_Opr dest) {
LIR_Address* addr = addr_opr->as_address_ptr();
diff --git a/hotspot/src/cpu/ppc/vm/c1_LIRGenerator_ppc.cpp b/hotspot/src/cpu/ppc/vm/c1_LIRGenerator_ppc.cpp
index 0d1cb4711bd..c3225419cc8 100644
--- a/hotspot/src/cpu/ppc/vm/c1_LIRGenerator_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/c1_LIRGenerator_ppc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -1056,7 +1056,7 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
void LIRGenerator::do_NewMultiArray(NewMultiArray* x) {
Values* dims = x->dims();
int i = dims->length();
- LIRItemList* items = new LIRItemList(dims->length(), NULL);
+ LIRItemList* items = new LIRItemList(i, i, NULL);
while (i-- > 0) {
LIRItem* size = new LIRItem(dims->at(i), this);
items->at_put(i, size);
@@ -1428,3 +1428,11 @@ void LIRGenerator::do_update_CRC32(Intrinsic* x) {
}
}
}
+
+void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) {
+ fatal("vectorizedMismatch intrinsic is not implemented on this platform");
+}
+
+void LIRGenerator::do_update_CRC32C(Intrinsic* x) {
+ Unimplemented();
+}
diff --git a/hotspot/src/cpu/ppc/vm/compiledIC_ppc.cpp b/hotspot/src/cpu/ppc/vm/compiledIC_ppc.cpp
index 68dabc4b031..e50399de682 100644
--- a/hotspot/src/cpu/ppc/vm/compiledIC_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/compiledIC_ppc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -35,22 +35,6 @@
#include "opto/matcher.hpp"
#endif
-// Release the CompiledICHolder* associated with this call site is there is one.
-void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- if (is_icholder_entry(call->destination())) {
- NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
- InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
- }
-}
-
-bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- return is_icholder_entry(call->destination());
-}
-
// ----------------------------------------------------------------------------
// A PPC CompiledStaticCall looks like this:
diff --git a/hotspot/src/cpu/ppc/vm/frame_ppc.hpp b/hotspot/src/cpu/ppc/vm/frame_ppc.hpp
index 6f8f0296f83..ae6847ecab2 100644
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.hpp
+++ b/hotspot/src/cpu/ppc/vm/frame_ppc.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -261,6 +261,7 @@
uint64_t ijava_reserved2; // Inserted for alignment.
#endif
uint64_t method;
+ uint64_t mirror;
uint64_t locals;
uint64_t monitors;
uint64_t cpoolCache;
diff --git a/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp b/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp
index 7fce0585f10..d22f5b564e8 100644
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp
+++ b/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -40,7 +40,7 @@ inline void frame::find_codeblob_and_set_pc_and_deopt_state(address pc) {
_fp = (intptr_t*)own_abi()->callers_sp;
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -148,6 +148,11 @@ inline BasicObjectLock* frame::interpreter_frame_monitor_begin() const {
inline Method** frame::interpreter_frame_method_addr() const {
return (Method**) &(get_ijava_state()->method);
}
+
+inline oop* frame::interpreter_frame_mirror_addr() const {
+ return (oop*) &(get_ijava_state()->mirror);
+}
+
inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const {
return (ConstantPoolCache**) &(get_ijava_state()->cpoolCache);
}
diff --git a/hotspot/src/cpu/ppc/vm/globals_ppc.hpp b/hotspot/src/cpu/ppc/vm/globals_ppc.hpp
index 77f7a491b02..b69e4058507 100644
--- a/hotspot/src/cpu/ppc/vm/globals_ppc.hpp
+++ b/hotspot/src/cpu/ppc/vm/globals_ppc.hpp
@@ -79,7 +79,14 @@ define_pd_global(bool, CompactStrings, true);
define_pd_global(intx, InitArrayShortSize, 8*BytesPerLong);
// Platform dependent flag handling: flags only defined on this platform.
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
/* Load poll address from thread. This is used to implement per-thread */ \
/* safepoints on platforms != IA64. */ \
diff --git a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
index ce9d109dfdd..a18254f2f5b 100644
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
@@ -3118,6 +3118,14 @@ void MacroAssembler::load_klass(Register dst, Register src) {
}
}
+void MacroAssembler::load_mirror(Register mirror, Register method) {
+ const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+ ld(mirror, in_bytes(Method::const_offset()), method);
+ ld(mirror, in_bytes(ConstMethod::constants_offset()), mirror);
+ ld(mirror, ConstantPool::pool_holder_offset_in_bytes(), mirror);
+ ld(mirror, mirror_offset, mirror);
+}
+
// Clear Array
// Kills both input registers. tmp == R0 is allowed.
void MacroAssembler::clear_memory_doubleword(Register base_ptr, Register cnt_dwords, Register tmp) {
diff --git a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp
index 53a269a83c2..180a1ddbae9 100644
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp
@@ -647,6 +647,9 @@ class MacroAssembler: public Assembler {
void load_klass(Register dst, Register src);
void store_klass(Register dst_oop, Register klass, Register tmp = R0);
void store_klass_gap(Register dst_oop, Register val = noreg); // Will store 0 if val not specified.
+
+ void load_mirror(Register mirror, Register method);
+
static int instr_size_for_decode_klass_not_null();
void decode_klass_not_null(Register dst, Register src = noreg);
Register encode_klass_not_null(Register dst, Register src = noreg);
diff --git a/hotspot/src/cpu/ppc/vm/nativeInst_ppc.cpp b/hotspot/src/cpu/ppc/vm/nativeInst_ppc.cpp
index 08704344050..70cd4ebbd91 100644
--- a/hotspot/src/cpu/ppc/vm/nativeInst_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/nativeInst_ppc.cpp
@@ -137,7 +137,7 @@ address NativeCall::get_trampoline() {
return NULL;
address bl_destination = Assembler::bxx_destination(call_addr);
- if (code->content_contains(bl_destination) &&
+ if (code->contains(bl_destination) &&
is_NativeCallTrampolineStub_at(bl_destination))
return bl_destination;
diff --git a/hotspot/src/cpu/ppc/vm/ppc.ad b/hotspot/src/cpu/ppc/vm/ppc.ad
index 20521eb8e18..0dc5a4d2b45 100644
--- a/hotspot/src/cpu/ppc/vm/ppc.ad
+++ b/hotspot/src/cpu/ppc/vm/ppc.ad
@@ -817,6 +817,16 @@ source_hpp %{
source %{
+// Should the Matcher clone shifts on addressing modes, expecting them
+// to be subsumed into complex addressing expressions or compute them
+// into registers?
+bool Matcher::clone_address_expressions(AddPNode* m, Matcher::MStack& mstack, VectorSet& address_visited) {
+ return clone_base_plus_offset_address(m, mstack, address_visited);
+}
+
+void Compile::reshape_address(AddPNode* addp) {
+}
+
// Optimize load-acquire.
//
// Check if acquire is unnecessary due to following operation that does
@@ -1380,6 +1390,8 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
// Save return pc.
___(std) std(return_pc, _abi(lr), callers_sp);
}
+
+ C->set_frame_complete(cbuf.insts_size());
}
#undef ___
#undef ___stop
@@ -2047,6 +2059,10 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
return ret_value; // Per default match rules are supported.
}
+const bool Matcher::has_predicated_vectors(void) {
+ return false;
+}
+
const int Matcher::float_pressure(int default_pressure_threshold) {
return default_pressure_threshold;
}
@@ -2151,11 +2167,6 @@ const int Matcher::float_cmove_cost() { return ConditionalMoveLimit; }
// Power6 requires postalloc expand (see block.cpp for description of postalloc expand).
const bool Matcher::require_postalloc_expand = true;
-// Should the Matcher clone shifts on addressing modes, expecting them to
-// be subsumed into complex addressing expressions or compute them into
-// registers? True for Intel but false for most RISCs.
-const bool Matcher::clone_shift_expressions = false;
-
// Do we need to mask the count passed to shift instructions or does
// the cpu only look at the lower 5/6 bits anyway?
// PowerPC requires masked shift counts.
@@ -2307,6 +2318,8 @@ const RegMask Matcher::method_handle_invoke_SP_save_mask() {
return RegMask();
}
+const bool Matcher::convi2l_type_required = true;
+
%}
//----------ENCODING BLOCK-----------------------------------------------------
diff --git a/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp b/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
index ee8685f4f0a..38c83d39e65 100644
--- a/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
@@ -33,7 +33,6 @@
#include "interpreter/interp_masm.hpp"
#include "memory/resourceArea.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_ppc.inline.hpp"
diff --git a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
index 2eba3edacef..58222baa2fa 100644
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp
@@ -825,17 +825,6 @@ class StubGenerator: public StubCodeGenerator {
return start;
}
- // The following routine generates a subroutine to throw an asynchronous
- // UnknownError when an unsafe access gets a fault that could not be
- // reasonably prevented by the programmer. (Example: SIGBUS/OBJERR.)
- //
- address generate_handler_for_unsafe_access() {
- StubCodeMark mark(this, "StubRoutines", "handler_for_unsafe_access");
- address start = __ function_entry();
- __ unimplemented("StubRoutines::handler_for_unsafe_access", 93);
- return start;
- }
-
#if !defined(PRODUCT)
// Wrapper which calls oopDesc::is_oop_or_null()
// Only called by MacroAssembler::verify_oop
@@ -3111,8 +3100,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError), false);
StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call), false);
- StubRoutines::_handler_for_unsafe_access_entry = generate_handler_for_unsafe_access();
-
// support for verify_oop (must happen after universe_init)
StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop();
diff --git a/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp b/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
index 3602c646192..386990690a7 100644
--- a/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
+++ b/hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
@@ -871,7 +871,6 @@ void TemplateInterpreterGenerator::lock_method(Register Rflags, Register Rscratc
// Get synchronization object to Rscratch2.
{
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
Label Lstatic;
Label Ldone;
@@ -883,10 +882,7 @@ void TemplateInterpreterGenerator::lock_method(Register Rflags, Register Rscratc
__ b(Ldone);
__ bind(Lstatic); // Static case: Lock the java mirror
- __ ld(Robj_to_lock, in_bytes(Method::const_offset()), R19_method);
- __ ld(Robj_to_lock, in_bytes(ConstMethod::constants_offset()), Robj_to_lock);
- __ ld(Robj_to_lock, ConstantPool::pool_holder_offset_in_bytes(), Robj_to_lock);
- __ ld(Robj_to_lock, mirror_offset, Robj_to_lock);
+ __ load_mirror(Robj_to_lock, R19_method);
__ bind(Ldone);
__ verify_oop(Robj_to_lock);
@@ -1051,10 +1047,14 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call, Regist
__ addi(R26_monitor, R1_SP, - frame::ijava_state_size);
__ addi(R15_esp, R26_monitor, - Interpreter::stackElementSize);
+ // Get mirror and store it in the frame as GC root for this Method*
+ __ load_mirror(R12_scratch2, R19_method);
+
// Store values.
// R15_esp, R14_bcp, R26_monitor, R28_mdx are saved at java calls
// in InterpreterMacroAssembler::call_from_interpreter.
__ std(R19_method, _ijava_state_neg(method), R1_SP);
+ __ std(R12_scratch2, _ijava_state_neg(mirror), R1_SP);
__ std(R21_sender_SP, _ijava_state_neg(sender_sp), R1_SP);
__ std(R27_constPoolCache, _ijava_state_neg(cpoolCache), R1_SP);
__ std(R18_locals, _ijava_state_neg(locals), R1_SP);
@@ -1319,21 +1319,11 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
__ testbitdi(CCR0, R0, access_flags, JVM_ACC_STATIC_BIT);
__ bfalse(CCR0, method_is_not_static);
- // constants = method->constants();
- __ ld(R11_scratch1, in_bytes(Method::const_offset()), R19_method);
- __ ld(R11_scratch1, in_bytes(ConstMethod::constants_offset()), R11_scratch1);
- // pool_holder = method->constants()->pool_holder();
- __ ld(R11_scratch1/*pool_holder*/, ConstantPool::pool_holder_offset_in_bytes(),
- R11_scratch1/*constants*/);
-
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
-
- // mirror = pool_holder->klass_part()->java_mirror();
- __ ld(R0/*mirror*/, mirror_offset, R11_scratch1/*pool_holder*/);
+ __ load_mirror(R12_scratch2, R19_method);
// state->_native_mirror = mirror;
__ ld(R11_scratch1, 0, R1_SP);
- __ std(R0/*mirror*/, _ijava_state_neg(oop_tmp), R11_scratch1);
+ __ std(R12_scratch2/*mirror*/, _ijava_state_neg(oop_tmp), R11_scratch1);
// R4_ARG2 = &state->_oop_temp;
__ addi(R4_ARG2, R11_scratch1, _ijava_state_neg(oop_tmp));
BIND(method_is_not_static);
diff --git a/hotspot/src/cpu/sparc/vm/abstractInterpreter_sparc.cpp b/hotspot/src/cpu/sparc/vm/abstractInterpreter_sparc.cpp
index d85bd78bbbd..f9ba7983fd2 100644
--- a/hotspot/src/cpu/sparc/vm/abstractInterpreter_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/abstractInterpreter_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -281,11 +281,12 @@ void AbstractInterpreter::layout_activation(Method* method,
// Llast_SP will be same as SP as there is no adapter space
*interpreter_frame->register_addr(Llast_SP) = (intptr_t) interpreter_frame->sp() - STACK_BIAS;
*interpreter_frame->register_addr(LcpoolCache) = (intptr_t) method->constants()->cache();
+ // save the mirror in the interpreter frame
+ *interpreter_frame->interpreter_frame_mirror_addr() = method->method_holder()->java_mirror();
#ifdef FAST_DISPATCH
*interpreter_frame->register_addr(IdispatchTables) = (intptr_t) Interpreter::dispatch_table();
#endif
-
#ifdef ASSERT
BasicObjectLock* mp = (BasicObjectLock*)monitors;
diff --git a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
index 128f6c31171..8a9ef34eb46 100644
--- a/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
@@ -3313,6 +3313,9 @@ void LIR_Assembler::membar_storeload() {
__ membar(Assembler::Membar_mask_bits(Assembler::StoreLoad));
}
+void LIR_Assembler::on_spin_wait() {
+ Unimplemented();
+}
// Pack two sequential registers containing 32 bit values
// into a single 64 bit register.
diff --git a/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
index de568fd7693..f4d84c8dd5d 100644
--- a/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -869,6 +869,94 @@ void LIRGenerator::do_update_CRC32(Intrinsic* x) {
}
}
+void LIRGenerator::do_update_CRC32C(Intrinsic* x) {
+ // Make all state_for calls early since they can emit code
+ LIR_Opr result = rlock_result(x);
+ int flags = 0;
+ switch (x->id()) {
+ case vmIntrinsics::_updateBytesCRC32C:
+ case vmIntrinsics::_updateDirectByteBufferCRC32C: {
+
+ bool is_updateBytes = (x->id() == vmIntrinsics::_updateBytesCRC32C);
+ int array_offset = is_updateBytes ? arrayOopDesc::base_offset_in_bytes(T_BYTE) : 0;
+
+ LIRItem crc(x->argument_at(0), this);
+ LIRItem buf(x->argument_at(1), this);
+ LIRItem off(x->argument_at(2), this);
+ LIRItem end(x->argument_at(3), this);
+
+ buf.load_item();
+ off.load_nonconstant();
+ end.load_nonconstant();
+
+ // len = end - off
+ LIR_Opr len = end.result();
+ LIR_Opr tmpA = new_register(T_INT);
+ LIR_Opr tmpB = new_register(T_INT);
+ __ move(end.result(), tmpA);
+ __ move(off.result(), tmpB);
+ __ sub(tmpA, tmpB, tmpA);
+ len = tmpA;
+
+ LIR_Opr index = off.result();
+
+ if(off.result()->is_constant()) {
+ index = LIR_OprFact::illegalOpr;
+ array_offset += off.result()->as_jint();
+ }
+
+ LIR_Opr base_op = buf.result();
+
+ if (index->is_valid()) {
+ LIR_Opr tmp = new_register(T_LONG);
+ __ convert(Bytecodes::_i2l, index, tmp);
+ index = tmp;
+ if (index->is_constant()) {
+ array_offset += index->as_constant_ptr()->as_jint();
+ index = LIR_OprFact::illegalOpr;
+ } else if (index->is_register()) {
+ LIR_Opr tmp2 = new_register(T_LONG);
+ LIR_Opr tmp3 = new_register(T_LONG);
+ __ move(base_op, tmp2);
+ __ move(index, tmp3);
+ __ add(tmp2, tmp3, tmp2);
+ base_op = tmp2;
+ } else {
+ ShouldNotReachHere();
+ }
+ }
+
+ LIR_Address* a = new LIR_Address(base_op, array_offset, T_BYTE);
+
+ BasicTypeList signature(3);
+ signature.append(T_INT);
+ signature.append(T_ADDRESS);
+ signature.append(T_INT);
+ CallingConvention* cc = frame_map()->c_calling_convention(&signature);
+ const LIR_Opr result_reg = result_register_for(x->type());
+
+ LIR_Opr addr = new_pointer_register();
+ __ leal(LIR_OprFact::address(a), addr);
+
+ crc.load_item_force(cc->at(0));
+ __ move(addr, cc->at(1));
+ __ move(len, cc->at(2));
+
+ __ call_runtime_leaf(StubRoutines::updateBytesCRC32C(), getThreadTemp(), result_reg, cc->args());
+ __ move(result_reg, result);
+
+ break;
+ }
+ default: {
+ ShouldNotReachHere();
+ }
+ }
+}
+
+void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) {
+ fatal("vectorizedMismatch intrinsic is not implemented on this platform");
+}
+
// _i2l, _i2f, _i2d, _l2i, _l2f, _l2d, _f2i, _f2l, _f2d, _d2i, _d2l, _d2f
// _i2b, _i2c, _i2s
void LIRGenerator::do_Convert(Convert* x) {
@@ -1034,7 +1122,7 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
void LIRGenerator::do_NewMultiArray(NewMultiArray* x) {
Values* dims = x->dims();
int i = dims->length();
- LIRItemList* items = new LIRItemList(dims->length(), NULL);
+ LIRItemList* items = new LIRItemList(i, i, NULL);
while (i-- > 0) {
LIRItem* size = new LIRItem(dims->at(i), this);
items->at_put(i, size);
diff --git a/hotspot/src/cpu/sparc/vm/compiledIC_sparc.cpp b/hotspot/src/cpu/sparc/vm/compiledIC_sparc.cpp
index d56af1661b1..c544e7ae994 100644
--- a/hotspot/src/cpu/sparc/vm/compiledIC_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/compiledIC_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,22 +34,6 @@
#include "opto/matcher.hpp"
#endif
-// Release the CompiledICHolder* associated with this call site is there is one.
-void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- if (is_icholder_entry(call->destination())) {
- NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
- InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
- }
-}
-
-bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- return is_icholder_entry(call->destination());
-}
-
// ----------------------------------------------------------------------------
#define __ _masm.
diff --git a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp
index a9ac2a97a76..ab6aeeeeabf 100644
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -212,7 +212,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// ok. adapter blobs never have a frame complete and are never ok.
if (!_cb->is_frame_complete_at(_pc)) {
- if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
+ if (_cb->is_compiled() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
return false;
}
}
@@ -304,7 +304,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// because you must allocate window space
if (sender_blob->frame_size() <= 0) {
- assert(!sender_blob->is_nmethod(), "should count return address at least");
+ assert(!sender_blob->is_compiled(), "should count return address at least");
return false;
}
@@ -315,7 +315,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// the stack unwalkable. pd_get_top_frame_for_signal_handler tries to recover from this by unwinding
// that initial frame and retrying.
- if (!sender_blob->is_nmethod()) {
+ if (!sender_blob->is_compiled()) {
return false;
}
@@ -358,9 +358,9 @@ void frame::init(intptr_t* sp, address pc, CodeBlob* cb) {
}
_deopt_state = unknown;
#ifdef ASSERT
- if ( _cb != NULL && _cb->is_nmethod()) {
+ if ( _cb != NULL && _cb->is_compiled()) {
// Without a valid unextended_sp() we can't convert the pc to "original"
- assert(!((nmethod*)_cb)->is_deopt_pc(_pc), "invariant broken");
+ assert(!((CompiledMethod*)_cb)->is_deopt_pc(_pc), "invariant broken");
}
#endif // ASSERT
}
@@ -393,7 +393,7 @@ frame::frame(intptr_t* sp, intptr_t* younger_sp, bool younger_frame_is_interpret
// Check for MethodHandle call sites.
if (_cb != NULL) {
- nmethod* nm = _cb->as_nmethod_or_null();
+ CompiledMethod* nm = _cb->as_compiled_method_or_null();
if (nm != NULL) {
if (nm->is_deopt_mh_entry(_pc) || nm->is_method_handle_return(_pc)) {
_sp_adjustment_by_callee = (intptr_t*) ((intptr_t) sp[L7_mh_SP_save->sp_offset_in_saved_window()] + STACK_BIAS) - sp;
@@ -413,7 +413,7 @@ frame::frame(intptr_t* sp, intptr_t* younger_sp, bool younger_frame_is_interpret
// this lookup as get_deopt_original_pc() needs a correct value for
// unextended_sp() which uses _sp_adjustment_by_callee.
if (_pc != NULL) {
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -547,7 +547,7 @@ void frame::patch_pc(Thread* thread, address pc) {
_cb = CodeCache::find_blob(pc);
*O7_addr() = pc - pc_return_offset;
_cb = CodeCache::find_blob(_pc);
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
assert(original_pc == _pc, "expected original to be stored before patching");
_deopt_state = is_deoptimized;
@@ -783,7 +783,7 @@ void frame::describe_pd(FrameValues& values, int frame_no) {
if (is_interpreted_frame()) {
DESCRIBE_FP_OFFSET(interpreter_frame_d_scratch_fp);
DESCRIBE_FP_OFFSET(interpreter_frame_l_scratch_fp);
- DESCRIBE_FP_OFFSET(interpreter_frame_padding);
+ DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
DESCRIBE_FP_OFFSET(interpreter_frame_oop_temp);
// esp, according to Lesp (e.g. not depending on bci), if seems valid
diff --git a/hotspot/src/cpu/sparc/vm/frame_sparc.hpp b/hotspot/src/cpu/sparc/vm/frame_sparc.hpp
index cd91f52fd17..48cf45bd714 100644
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.hpp
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -209,7 +209,8 @@
// 2 words, also used to save float regs across calls to C
interpreter_frame_d_scratch_fp_offset = -2,
interpreter_frame_l_scratch_fp_offset = -4,
- interpreter_frame_padding_offset = -5, // for native calls only
+ interpreter_frame_mirror_offset = -5, // keep interpreted method alive
+
interpreter_frame_oop_temp_offset = -6, // for native calls only
interpreter_frame_vm_locals_fp_offset = -6, // should be same as above, and should be zero mod 8
diff --git a/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp b/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp
index 01e24727863..e10261f5033 100644
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -163,6 +163,10 @@ inline void frame::interpreter_frame_set_monitors(BasicObjectLock* monitors) {
*interpreter_frame_monitors_addr() = monitors;
}
+inline oop* frame::interpreter_frame_mirror_addr() const {
+ return (oop*)(fp() + interpreter_frame_mirror_offset);
+}
+
// Constant pool cache
// where LcpoolCache is saved:
diff --git a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
index 66889ae73b3..1e1ef759b45 100644
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp
@@ -92,7 +92,14 @@ define_pd_global(bool, CompactStrings, true);
define_pd_global(intx, InitArrayShortSize, 8*BytesPerLong);
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(intx, UseVIS, 99, \
"Highest supported VIS instructions set on Sparc") \
diff --git a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
index 580b1336bf3..ba25825ca5a 100644
--- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
@@ -26,13 +26,13 @@
#include "interp_masm_sparc.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
+#include "logging/log.hpp"
#include "oops/arrayOop.hpp"
#include "oops/markOop.hpp"
#include "oops/methodData.hpp"
#include "oops/method.hpp"
#include "oops/methodCounters.hpp"
#include "prims/jvmtiExport.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "prims/jvmtiThreadState.hpp"
#include "runtime/basicLock.hpp"
#include "runtime/biasedLocking.hpp"
@@ -2645,7 +2645,7 @@ void InterpreterMacroAssembler::notify_method_entry() {
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
call_VM_leaf(noreg,
CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
G2_thread, Lmethod);
diff --git a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp
index f6770b0c3db..5fe78adb684 100644
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp
@@ -3257,12 +3257,12 @@ void MacroAssembler::eden_allocate(
if (var_size_in_bytes->is_valid()) {
// size is unknown at compile time
cmp(free, var_size_in_bytes);
- br(Assembler::lessUnsigned, false, Assembler::pn, slow_case); // if there is not enough space go the slow case
+ brx(Assembler::lessUnsigned, false, Assembler::pn, slow_case); // if there is not enough space go the slow case
delayed()->add(obj, var_size_in_bytes, end);
} else {
// size is known at compile time
cmp(free, con_size_in_bytes);
- br(Assembler::lessUnsigned, false, Assembler::pn, slow_case); // if there is not enough space go the slow case
+ brx(Assembler::lessUnsigned, false, Assembler::pn, slow_case); // if there is not enough space go the slow case
delayed()->add(obj, con_size_in_bytes, end);
}
// Compare obj with the value at top_addr; if still equal, swap the value of
@@ -3972,6 +3972,14 @@ void MacroAssembler::card_write_barrier_post(Register store_addr, Register new_v
card_table_write(bs->byte_map_base, tmp, store_addr);
}
+void MacroAssembler::load_mirror(Register mirror, Register method) {
+ const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+ ld_ptr(method, in_bytes(Method::const_offset()), mirror);
+ ld_ptr(mirror, in_bytes(ConstMethod::constants_offset()), mirror);
+ ld_ptr(mirror, ConstantPool::pool_holder_offset_in_bytes(), mirror);
+ ld_ptr(mirror, mirror_offset, mirror);
+}
+
void MacroAssembler::load_klass(Register src_oop, Register klass) {
// The number of bytes in this code is used by
// MachCallDynamicJavaNode::ret_addr_offset()
@@ -4516,18 +4524,10 @@ void MacroAssembler::string_compare(Register str1, Register str2,
}
// Compare the rest of the characters
- if (ae == StrIntrinsicNode::UU) {
- lduh(str1, limit1, chr1);
- } else {
- ldub(str1, limit1, chr1);
- }
+ load_sized_value(Address(str1, limit1), chr1, (ae == StrIntrinsicNode::UU) ? 2 : 1, false);
bind(Lloop);
- if (ae == StrIntrinsicNode::LL) {
- ldub(str2, limit2, chr2);
- } else {
- lduh(str2, limit2, chr2);
- }
+ load_sized_value(Address(str2, limit2), chr2, (ae == StrIntrinsicNode::LL) ? 1 : 2, false);
subcc(chr1, chr2, chr1);
br(Assembler::notZero, false, Assembler::pt, Ldone);
@@ -4539,11 +4539,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
// annul LDUB if branch is not taken to prevent access past end of string
br(Assembler::notZero, true, Assembler::pt, Lloop);
- if (ae == StrIntrinsicNode::UU) {
- delayed()->lduh(str1, limit2, chr1);
- } else {
- delayed()->ldub(str1, limit1, chr1);
- }
+ delayed()->load_sized_value(Address(str1, limit1), chr1, (ae == StrIntrinsicNode::UU) ? 2 : 1, false);
// If strings are equal up to min length, return the length difference.
if (ae == StrIntrinsicNode::UU) {
@@ -4563,23 +4559,24 @@ void MacroAssembler::string_compare(Register str1, Register str2,
void MacroAssembler::array_equals(bool is_array_equ, Register ary1, Register ary2,
Register limit, Register tmp, Register result, bool is_byte) {
- Label Ldone, Lvector, Lloop;
+ Label Ldone, Lloop, Lremaining;
assert_different_registers(ary1, ary2, limit, tmp, result);
int length_offset = arrayOopDesc::length_offset_in_bytes();
int base_offset = arrayOopDesc::base_offset_in_bytes(is_byte ? T_BYTE : T_CHAR);
+ assert(base_offset % 8 == 0, "Base offset must be 8-byte aligned");
if (is_array_equ) {
// return true if the same array
cmp(ary1, ary2);
brx(Assembler::equal, true, Assembler::pn, Ldone);
- delayed()->add(G0, 1, result); // equal
+ delayed()->mov(1, result); // equal
br_null(ary1, true, Assembler::pn, Ldone);
- delayed()->mov(G0, result); // not equal
+ delayed()->clr(result); // not equal
br_null(ary2, true, Assembler::pn, Ldone);
- delayed()->mov(G0, result); // not equal
+ delayed()->clr(result); // not equal
// load the lengths of arrays
ld(Address(ary1, length_offset), limit);
@@ -4588,81 +4585,77 @@ void MacroAssembler::array_equals(bool is_array_equ, Register ary1, Register ary
// return false if the two arrays are not equal length
cmp(limit, tmp);
br(Assembler::notEqual, true, Assembler::pn, Ldone);
- delayed()->mov(G0, result); // not equal
+ delayed()->clr(result); // not equal
}
cmp_zero_and_br(Assembler::zero, limit, Ldone, true, Assembler::pn);
- delayed()->add(G0, 1, result); // zero-length arrays are equal
+ delayed()->mov(1, result); // zero-length arrays are equal
if (is_array_equ) {
// load array addresses
add(ary1, base_offset, ary1);
add(ary2, base_offset, ary2);
+ // set byte count
+ if (!is_byte) {
+ sll(limit, exact_log2(sizeof(jchar)), limit);
+ }
} else {
// We have no guarantee that on 64 bit the higher half of limit is 0
signx(limit);
}
- if (is_byte) {
- Label Lskip;
- // check for trailing byte
- andcc(limit, 0x1, tmp);
- br(Assembler::zero, false, Assembler::pt, Lskip);
- delayed()->nop();
+#ifdef ASSERT
+ // Sanity check for doubleword (8-byte) alignment of ary1 and ary2.
+ // Guaranteed on 64-bit systems (see arrayOopDesc::header_size_in_bytes()).
+ Label Laligned;
+ or3(ary1, ary2, tmp);
+ andcc(tmp, 7, tmp);
+ br_null_short(tmp, Assembler::pn, Laligned);
+ STOP("First array element is not 8-byte aligned.");
+ should_not_reach_here();
+ bind(Laligned);
+#endif
- // compare the trailing byte
- sub(limit, sizeof(jbyte), limit);
- ldub(ary1, limit, result);
- ldub(ary2, limit, tmp);
- cmp(result, tmp);
- br(Assembler::notEqual, true, Assembler::pt, Ldone);
- delayed()->mov(G0, result); // not equal
-
- // only one byte?
- cmp_zero_and_br(zero, limit, Ldone, true, Assembler::pn);
- delayed()->add(G0, 1, result); // zero-length arrays are equal
- bind(Lskip);
- } else if (is_array_equ) {
- // set byte count
- sll(limit, exact_log2(sizeof(jchar)), limit);
- }
-
- // check for trailing character
- andcc(limit, 0x2, tmp);
- br(Assembler::zero, false, Assembler::pt, Lvector);
- delayed()->nop();
-
- // compare the trailing char
- sub(limit, sizeof(jchar), limit);
- lduh(ary1, limit, result);
- lduh(ary2, limit, tmp);
- cmp(result, tmp);
- br(Assembler::notEqual, true, Assembler::pt, Ldone);
- delayed()->mov(G0, result); // not equal
-
- // only one char?
- cmp_zero_and_br(zero, limit, Ldone, true, Assembler::pn);
- delayed()->add(G0, 1, result); // zero-length arrays are equal
-
- // word by word compare, dont't need alignment check
- bind(Lvector);
// Shift ary1 and ary2 to the end of the arrays, negate limit
add(ary1, limit, ary1);
add(ary2, limit, ary2);
neg(limit, limit);
- lduw(ary1, limit, result);
+ // MAIN LOOP
+ // Load and compare array elements of size 'byte_width' until the elements are not
+ // equal or we reached the end of the arrays. If the size of the arrays is not a
+ // multiple of 'byte_width', we simply read over the end of the array, bail out and
+ // compare the remaining bytes below by skipping the garbage bytes.
+ ldx(ary1, limit, result);
bind(Lloop);
- lduw(ary2, limit, tmp);
- cmp(result, tmp);
- br(Assembler::notEqual, true, Assembler::pt, Ldone);
- delayed()->mov(G0, result); // not equal
- inccc(limit, 2*sizeof(jchar));
- // annul LDUW if branch is not taken to prevent access past end of array
- br(Assembler::notZero, true, Assembler::pt, Lloop);
- delayed()->lduw(ary1, limit, result); // hoisted
+ ldx(ary2, limit, tmp);
+ inccc(limit, 8);
+ // Bail out if we reached the end (but still do the comparison)
+ br(Assembler::positive, false, Assembler::pn, Lremaining);
+ delayed()->cmp(result, tmp);
+ // Check equality of elements
+ brx(Assembler::equal, false, Assembler::pt, target(Lloop));
+ delayed()->ldx(ary1, limit, result);
+
+ ba(Ldone);
+ delayed()->clr(result); // not equal
+
+ // TAIL COMPARISON
+ // We got here because we reached the end of the arrays. 'limit' is the number of
+ // garbage bytes we may have compared by reading over the end of the arrays. Shift
+ // out the garbage and compare the remaining elements.
+ bind(Lremaining);
+ // Optimistic shortcut: elements potentially including garbage are equal
+ brx(Assembler::equal, true, Assembler::pt, target(Ldone));
+ delayed()->mov(1, result); // equal
+ // Shift 'limit' bytes to the right and compare
+ sll(limit, 3, limit); // bytes to bits
+ srlx(result, limit, result);
+ srlx(tmp, limit, tmp);
+ cmp(result, tmp);
+ clr(result);
+ movcc(Assembler::equal, false, xcc, 1, result);
- add(G0, 1, result); // equals
bind(Ldone);
}
@@ -4774,6 +4767,7 @@ void MacroAssembler::bis_zeroing(Register to, Register count, Register temp, Lab
assert(UseBlockZeroing && VM_Version::has_block_zeroing(), "only works with BIS zeroing");
Register end = count;
int cache_line_size = VM_Version::prefetch_data_size();
+ assert(cache_line_size > 0, "cache line size should be known for this code");
// Minimum count when BIS zeroing can be used since
// it needs membar which is expensive.
int block_zero_size = MAX2(cache_line_size*3, (int)BlockZeroingLowLimit);
@@ -4852,21 +4846,21 @@ void MacroAssembler::update_byte_crc32(Register crc, Register val, Register tabl
// Reverse byte order of lower 32 bits, assuming upper 32 bits all zeros
void MacroAssembler::reverse_bytes_32(Register src, Register dst, Register tmp) {
- srlx(src, 24, dst);
+ srlx(src, 24, dst);
- sllx(src, 32+8, tmp);
- srlx(tmp, 32+24, tmp);
- sllx(tmp, 8, tmp);
- or3(dst, tmp, dst);
+ sllx(src, 32+8, tmp);
+ srlx(tmp, 32+24, tmp);
+ sllx(tmp, 8, tmp);
+ or3(dst, tmp, dst);
- sllx(src, 32+16, tmp);
- srlx(tmp, 32+24, tmp);
- sllx(tmp, 16, tmp);
- or3(dst, tmp, dst);
+ sllx(src, 32+16, tmp);
+ srlx(tmp, 32+24, tmp);
+ sllx(tmp, 16, tmp);
+ or3(dst, tmp, dst);
- sllx(src, 32+24, tmp);
- srlx(tmp, 32, tmp);
- or3(dst, tmp, dst);
+ sllx(src, 32+24, tmp);
+ srlx(tmp, 32, tmp);
+ or3(dst, tmp, dst);
}
void MacroAssembler::movitof_revbytes(Register src, FloatRegister dst, Register tmp1, Register tmp2) {
@@ -5118,3 +5112,176 @@ void MacroAssembler::kernel_crc32(Register crc, Register buf, Register len, Regi
not1(crc);
}
+#define CHUNK_LEN 128 /* 128 x 8B = 1KB */
+#define CHUNK_K1 0x1307a0206 /* reverseBits(pow(x, CHUNK_LEN*8*8*3 - 32) mod P(x)) << 1 */
+#define CHUNK_K2 0x1a0f717c4 /* reverseBits(pow(x, CHUNK_LEN*8*8*2 - 32) mod P(x)) << 1 */
+#define CHUNK_K3 0x0170076fa /* reverseBits(pow(x, CHUNK_LEN*8*8*1 - 32) mod P(x)) << 1 */
+
+void MacroAssembler::kernel_crc32c(Register crc, Register buf, Register len, Register table) {
+
+ Label L_crc32c_head, L_crc32c_aligned;
+ Label L_crc32c_parallel, L_crc32c_parallel_loop;
+ Label L_crc32c_serial, L_crc32c_x32_loop, L_crc32c_x8, L_crc32c_x8_loop;
+ Label L_crc32c_done, L_crc32c_tail, L_crc32c_return;
+
+ set(ExternalAddress(StubRoutines::crc32c_table_addr()), table);
+
+ cmp_and_br_short(len, 0, Assembler::lessEqual, Assembler::pn, L_crc32c_return);
+
+ // clear upper 32 bits of crc
+ clruwu(crc);
+
+ and3(buf, 7, G4);
+ cmp_and_brx_short(G4, 0, Assembler::equal, Assembler::pt, L_crc32c_aligned);
+
+ mov(8, G1);
+ sub(G1, G4, G4);
+
+ // ------ process the misaligned head (7 bytes or less) ------
+ bind(L_crc32c_head);
+
+ // crc = (crc >>> 8) ^ byteTable[(crc ^ b) & 0xFF];
+ ldub(buf, 0, G1);
+ update_byte_crc32(crc, G1, table);
+
+ inc(buf);
+ dec(len);
+ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pn, L_crc32c_return);
+ dec(G4);
+ cmp_and_br_short(G4, 0, Assembler::greater, Assembler::pt, L_crc32c_head);
+
+ // ------ process the 8-byte-aligned body ------
+ bind(L_crc32c_aligned);
+ nop();
+ cmp_and_br_short(len, 8, Assembler::less, Assembler::pn, L_crc32c_tail);
+
+ // reverse the byte order of lower 32 bits to big endian, and move to FP side
+ movitof_revbytes(crc, F0, G1, G3);
+
+ set(CHUNK_LEN*8*4, G4);
+ cmp_and_br_short(len, G4, Assembler::less, Assembler::pt, L_crc32c_serial);
+
+ // ------ process four 1KB chunks in parallel ------
+ bind(L_crc32c_parallel);
+
+ fzero(FloatRegisterImpl::D, F2);
+ fzero(FloatRegisterImpl::D, F4);
+ fzero(FloatRegisterImpl::D, F6);
+
+ mov(CHUNK_LEN - 1, G4);
+ bind(L_crc32c_parallel_loop);
+ // schedule ldf's ahead of crc32c's to hide the load-use latency
+ ldf(FloatRegisterImpl::D, buf, 0, F8);
+ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*8, F10);
+ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*16, F12);
+ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*24, F14);
+ crc32c(F0, F8, F0);
+ crc32c(F2, F10, F2);
+ crc32c(F4, F12, F4);
+ crc32c(F6, F14, F6);
+ inc(buf, 8);
+ dec(G4);
+ cmp_and_br_short(G4, 0, Assembler::greater, Assembler::pt, L_crc32c_parallel_loop);
+
+ ldf(FloatRegisterImpl::D, buf, 0, F8);
+ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*8, F10);
+ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*16, F12);
+ crc32c(F0, F8, F0);
+ crc32c(F2, F10, F2);
+ crc32c(F4, F12, F4);
+
+ inc(buf, CHUNK_LEN*24);
+ ldfl(FloatRegisterImpl::D, buf, G0, F14); // load in little endian
+ inc(buf, 8);
+
+ prefetch(buf, 0, Assembler::severalReads);
+ prefetch(buf, CHUNK_LEN*8, Assembler::severalReads);
+ prefetch(buf, CHUNK_LEN*16, Assembler::severalReads);
+ prefetch(buf, CHUNK_LEN*24, Assembler::severalReads);
+
+ // move to INT side, and reverse the byte order of lower 32 bits to little endian
+ movftoi_revbytes(F0, O4, G1, G4);
+ movftoi_revbytes(F2, O5, G1, G4);
+ movftoi_revbytes(F4, G5, G1, G4);
+
+ // combine the results of 4 chunks
+ set64(CHUNK_K1, G3, G1);
+ xmulx(O4, G3, O4);
+ set64(CHUNK_K2, G3, G1);
+ xmulx(O5, G3, O5);
+ set64(CHUNK_K3, G3, G1);
+ xmulx(G5, G3, G5);
+
+ movdtox(F14, G4);
+ xor3(O4, O5, O5);
+ xor3(G5, O5, O5);
+ xor3(G4, O5, O5);
+
+ // reverse the byte order to big endian, via stack, and move to FP side
+ // TODO: use new revb instruction
+ add(SP, -8, G1);
+ srlx(G1, 3, G1);
+ sllx(G1, 3, G1);
+ stx(O5, G1, G0);
+ ldfl(FloatRegisterImpl::D, G1, G0, F2); // load in little endian
+
+ crc32c(F6, F2, F0);
+
+ set(CHUNK_LEN*8*4, G4);
+ sub(len, G4, len);
+ cmp_and_br_short(len, G4, Assembler::greaterEqual, Assembler::pt, L_crc32c_parallel);
+ nop();
+ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pt, L_crc32c_done);
+
+ bind(L_crc32c_serial);
+
+ mov(32, G4);
+ cmp_and_br_short(len, G4, Assembler::less, Assembler::pn, L_crc32c_x8);
+
+ // ------ process 32B chunks ------
+ bind(L_crc32c_x32_loop);
+ ldf(FloatRegisterImpl::D, buf, 0, F2);
+ crc32c(F0, F2, F0);
+ ldf(FloatRegisterImpl::D, buf, 8, F2);
+ crc32c(F0, F2, F0);
+ ldf(FloatRegisterImpl::D, buf, 16, F2);
+ crc32c(F0, F2, F0);
+ ldf(FloatRegisterImpl::D, buf, 24, F2);
+ inc(buf, 32);
+ crc32c(F0, F2, F0);
+ dec(len, 32);
+ cmp_and_br_short(len, G4, Assembler::greaterEqual, Assembler::pt, L_crc32c_x32_loop);
+
+ bind(L_crc32c_x8);
+ nop();
+ cmp_and_br_short(len, 8, Assembler::less, Assembler::pt, L_crc32c_done);
+
+ // ------ process 8B chunks ------
+ bind(L_crc32c_x8_loop);
+ ldf(FloatRegisterImpl::D, buf, 0, F2);
+ inc(buf, 8);
+ crc32c(F0, F2, F0);
+ dec(len, 8);
+ cmp_and_br_short(len, 8, Assembler::greaterEqual, Assembler::pt, L_crc32c_x8_loop);
+
+ bind(L_crc32c_done);
+
+ // move to INT side, and reverse the byte order of lower 32 bits to little endian
+ movftoi_revbytes(F0, crc, G1, G3);
+
+ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pt, L_crc32c_return);
+
+ // ------ process the misaligned tail (7 bytes or less) ------
+ bind(L_crc32c_tail);
+
+ // crc = (crc >>> 8) ^ byteTable[(crc ^ b) & 0xFF];
+ ldub(buf, 0, G1);
+ update_byte_crc32(crc, G1, table);
+
+ inc(buf);
+ dec(len);
+ cmp_and_br_short(len, 0, Assembler::greater, Assembler::pt, L_crc32c_tail);
+
+ bind(L_crc32c_return);
+ nop();
+}
diff --git a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp
index dbbfbbc1267..d94de09c948 100644
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp
+++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp
@@ -1012,6 +1012,8 @@ public:
inline void ldbool(const Address& a, Register d);
inline void movbool( bool boolconst, Register d);
+ void load_mirror(Register mirror, Register method);
+
// klass oop manipulations if compressed
void load_klass(Register src_oop, Register klass);
void store_klass(Register klass, Register dst_oop);
@@ -1418,6 +1420,8 @@ public:
// Fold 8-bit data
void fold_8bit_crc32(Register xcrc, Register table, Register xtmp, Register tmp);
void fold_8bit_crc32(Register crc, Register table, Register tmp);
+ // CRC32C code for java.util.zip.CRC32C::updateBytes/updateDirectByteBuffer instrinsic.
+ void kernel_crc32c(Register crc, Register buf, Register len, Register table);
};
diff --git a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp
index 6727c14d63b..a587b55762e 100644
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp
@@ -28,9 +28,9 @@
#include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp"
#include "interpreter/interpreter.hpp"
+#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_sparc.inline.hpp"
@@ -2450,7 +2450,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
// create inner frame
__ save_frame(0);
__ mov(G2_thread, L7_thread_cache);
diff --git a/hotspot/src/cpu/sparc/vm/sparc.ad b/hotspot/src/cpu/sparc/vm/sparc.ad
index d669d8732b8..653da26ba0b 100644
--- a/hotspot/src/cpu/sparc/vm/sparc.ad
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad
@@ -1904,6 +1904,10 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
return ret_value; // Per default match rules are supported.
}
+const bool Matcher::has_predicated_vectors(void) {
+ return false;
+}
+
const int Matcher::float_pressure(int default_pressure_threshold) {
return default_pressure_threshold;
}
@@ -1991,11 +1995,6 @@ const int Matcher::float_cmove_cost() {
// Does the CPU require late expand (see block.cpp for description of late expand)?
const bool Matcher::require_postalloc_expand = false;
-// Should the Matcher clone shifts on addressing modes, expecting them to
-// be subsumed into complex addressing expressions or compute them into
-// registers? True for Intel but false for most RISCs
-const bool Matcher::clone_shift_expressions = false;
-
// Do we need to mask the count passed to shift instructions or does
// the cpu only look at the lower 5/6 bits anyway?
const bool Matcher::need_masked_shift_count = false;
@@ -2129,6 +2128,19 @@ const RegMask Matcher::method_handle_invoke_SP_save_mask() {
return L7_REGP_mask();
}
+
+const bool Matcher::convi2l_type_required = true;
+
+// Should the Matcher clone shifts on addressing modes, expecting them
+// to be subsumed into complex addressing expressions or compute them
+// into registers?
+bool Matcher::clone_address_expressions(AddPNode* m, Matcher::MStack& mstack, VectorSet& address_visited) {
+ return clone_base_plus_offset_address(m, mstack, address_visited);
+}
+
+void Compile::reshape_address(AddPNode* addp) {
+}
+
%}
diff --git a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
index db2c5eefac8..8babb471137 100644
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,20 +64,6 @@ static const Register& Lstub_temp = L2;
// -------------------------------------------------------------------------------------------------------------------------
// Stub Code definitions
-static address handle_unsafe_access() {
- JavaThread* thread = JavaThread::current();
- address pc = thread->saved_exception_pc();
- address npc = thread->saved_exception_npc();
- // pc is the instruction which we must emulate
- // doing a no-op is fine: return garbage from the load
-
- // request an async exception
- thread->set_pending_unsafe_access_error();
-
- // return address of next instruction to execute
- return npc;
-}
-
class StubGenerator: public StubCodeGenerator {
private:
@@ -746,62 +732,6 @@ class StubGenerator: public StubCodeGenerator {
Label _atomic_add_stub; // called from other stubs
- //------------------------------------------------------------------------------------------------------------------------
- // The following routine generates a subroutine to throw an asynchronous
- // UnknownError when an unsafe access gets a fault that could not be
- // reasonably prevented by the programmer. (Example: SIGBUS/OBJERR.)
- //
- // Arguments :
- //
- // trapping PC: O7
- //
- // Results:
- // posts an asynchronous exception, skips the trapping instruction
- //
-
- address generate_handler_for_unsafe_access() {
- StubCodeMark mark(this, "StubRoutines", "handler_for_unsafe_access");
- address start = __ pc();
-
- const int preserve_register_words = (64 * 2);
- Address preserve_addr(FP, (-preserve_register_words * wordSize) + STACK_BIAS);
-
- Register Lthread = L7_thread_cache;
- int i;
-
- __ save_frame(0);
- __ mov(G1, L1);
- __ mov(G2, L2);
- __ mov(G3, L3);
- __ mov(G4, L4);
- __ mov(G5, L5);
- for (i = 0; i < 64; i += 2) {
- __ stf(FloatRegisterImpl::D, as_FloatRegister(i), preserve_addr, i * wordSize);
- }
-
- address entry_point = CAST_FROM_FN_PTR(address, handle_unsafe_access);
- BLOCK_COMMENT("call handle_unsafe_access");
- __ call(entry_point, relocInfo::runtime_call_type);
- __ delayed()->nop();
-
- __ mov(L1, G1);
- __ mov(L2, G2);
- __ mov(L3, G3);
- __ mov(L4, G4);
- __ mov(L5, G5);
- for (i = 0; i < 64; i += 2) {
- __ ldf(FloatRegisterImpl::D, preserve_addr, as_FloatRegister(i), i * wordSize);
- }
-
- __ verify_thread();
-
- __ jmp(O0, 0);
- __ delayed()->restore();
-
- return start;
- }
-
-
// Support for uint StubRoutine::Sparc::partial_subtype_check( Klass sub, Klass super );
// Arguments :
//
@@ -4909,11 +4839,6 @@ class StubGenerator: public StubCodeGenerator {
return start;
}
-#define CHUNK_LEN 128 /* 128 x 8B = 1KB */
-#define CHUNK_K1 0x1307a0206 /* reverseBits(pow(x, CHUNK_LEN*8*8*3 - 32) mod P(x)) << 1 */
-#define CHUNK_K2 0x1a0f717c4 /* reverseBits(pow(x, CHUNK_LEN*8*8*2 - 32) mod P(x)) << 1 */
-#define CHUNK_K3 0x0170076fa /* reverseBits(pow(x, CHUNK_LEN*8*8*1 - 32) mod P(x)) << 1 */
-
/**
* Arguments:
*
@@ -4938,171 +4863,8 @@ class StubGenerator: public StubCodeGenerator {
const Register len = O2; // number of bytes
const Register table = O3; // byteTable
- Label L_crc32c_head, L_crc32c_aligned;
- Label L_crc32c_parallel, L_crc32c_parallel_loop;
- Label L_crc32c_serial, L_crc32c_x32_loop, L_crc32c_x8, L_crc32c_x8_loop;
- Label L_crc32c_done, L_crc32c_tail, L_crc32c_return;
+ __ kernel_crc32c(crc, buf, len, table);
- __ cmp_and_br_short(len, 0, Assembler::lessEqual, Assembler::pn, L_crc32c_return);
-
- // clear upper 32 bits of crc
- __ clruwu(crc);
-
- __ and3(buf, 7, G4);
- __ cmp_and_brx_short(G4, 0, Assembler::equal, Assembler::pt, L_crc32c_aligned);
-
- __ mov(8, G1);
- __ sub(G1, G4, G4);
-
- // ------ process the misaligned head (7 bytes or less) ------
- __ BIND(L_crc32c_head);
-
- // crc = (crc >>> 8) ^ byteTable[(crc ^ b) & 0xFF];
- __ ldub(buf, 0, G1);
- __ update_byte_crc32(crc, G1, table);
-
- __ inc(buf);
- __ dec(len);
- __ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pn, L_crc32c_return);
- __ dec(G4);
- __ cmp_and_br_short(G4, 0, Assembler::greater, Assembler::pt, L_crc32c_head);
-
- // ------ process the 8-byte-aligned body ------
- __ BIND(L_crc32c_aligned);
- __ nop();
- __ cmp_and_br_short(len, 8, Assembler::less, Assembler::pn, L_crc32c_tail);
-
- // reverse the byte order of lower 32 bits to big endian, and move to FP side
- __ movitof_revbytes(crc, F0, G1, G3);
-
- __ set(CHUNK_LEN*8*4, G4);
- __ cmp_and_br_short(len, G4, Assembler::less, Assembler::pt, L_crc32c_serial);
-
- // ------ process four 1KB chunks in parallel ------
- __ BIND(L_crc32c_parallel);
-
- __ fzero(FloatRegisterImpl::D, F2);
- __ fzero(FloatRegisterImpl::D, F4);
- __ fzero(FloatRegisterImpl::D, F6);
-
- __ mov(CHUNK_LEN - 1, G4);
- __ BIND(L_crc32c_parallel_loop);
- // schedule ldf's ahead of crc32c's to hide the load-use latency
- __ ldf(FloatRegisterImpl::D, buf, 0, F8);
- __ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*8, F10);
- __ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*16, F12);
- __ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*24, F14);
- __ crc32c(F0, F8, F0);
- __ crc32c(F2, F10, F2);
- __ crc32c(F4, F12, F4);
- __ crc32c(F6, F14, F6);
- __ inc(buf, 8);
- __ dec(G4);
- __ cmp_and_br_short(G4, 0, Assembler::greater, Assembler::pt, L_crc32c_parallel_loop);
-
- __ ldf(FloatRegisterImpl::D, buf, 0, F8);
- __ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*8, F10);
- __ ldf(FloatRegisterImpl::D, buf, CHUNK_LEN*16, F12);
- __ crc32c(F0, F8, F0);
- __ crc32c(F2, F10, F2);
- __ crc32c(F4, F12, F4);
-
- __ inc(buf, CHUNK_LEN*24);
- __ ldfl(FloatRegisterImpl::D, buf, G0, F14); // load in little endian
- __ inc(buf, 8);
-
- __ prefetch(buf, 0, Assembler::severalReads);
- __ prefetch(buf, CHUNK_LEN*8, Assembler::severalReads);
- __ prefetch(buf, CHUNK_LEN*16, Assembler::severalReads);
- __ prefetch(buf, CHUNK_LEN*24, Assembler::severalReads);
-
- // move to INT side, and reverse the byte order of lower 32 bits to little endian
- __ movftoi_revbytes(F0, O4, G1, G4);
- __ movftoi_revbytes(F2, O5, G1, G4);
- __ movftoi_revbytes(F4, G5, G1, G4);
-
- // combine the results of 4 chunks
- __ set64(CHUNK_K1, G3, G1);
- __ xmulx(O4, G3, O4);
- __ set64(CHUNK_K2, G3, G1);
- __ xmulx(O5, G3, O5);
- __ set64(CHUNK_K3, G3, G1);
- __ xmulx(G5, G3, G5);
-
- __ movdtox(F14, G4);
- __ xor3(O4, O5, O5);
- __ xor3(G5, O5, O5);
- __ xor3(G4, O5, O5);
-
- // reverse the byte order to big endian, via stack, and move to FP side
- __ add(SP, -8, G1);
- __ srlx(G1, 3, G1);
- __ sllx(G1, 3, G1);
- __ stx(O5, G1, G0);
- __ ldfl(FloatRegisterImpl::D, G1, G0, F2); // load in little endian
-
- __ crc32c(F6, F2, F0);
-
- __ set(CHUNK_LEN*8*4, G4);
- __ sub(len, G4, len);
- __ cmp_and_br_short(len, G4, Assembler::greaterEqual, Assembler::pt, L_crc32c_parallel);
- __ nop();
- __ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pt, L_crc32c_done);
-
- __ BIND(L_crc32c_serial);
-
- __ mov(32, G4);
- __ cmp_and_br_short(len, G4, Assembler::less, Assembler::pn, L_crc32c_x8);
-
- // ------ process 32B chunks ------
- __ BIND(L_crc32c_x32_loop);
- __ ldf(FloatRegisterImpl::D, buf, 0, F2);
- __ inc(buf, 8);
- __ crc32c(F0, F2, F0);
- __ ldf(FloatRegisterImpl::D, buf, 0, F2);
- __ inc(buf, 8);
- __ crc32c(F0, F2, F0);
- __ ldf(FloatRegisterImpl::D, buf, 0, F2);
- __ inc(buf, 8);
- __ crc32c(F0, F2, F0);
- __ ldf(FloatRegisterImpl::D, buf, 0, F2);
- __ inc(buf, 8);
- __ crc32c(F0, F2, F0);
- __ dec(len, 32);
- __ cmp_and_br_short(len, G4, Assembler::greaterEqual, Assembler::pt, L_crc32c_x32_loop);
-
- __ BIND(L_crc32c_x8);
- __ nop();
- __ cmp_and_br_short(len, 8, Assembler::less, Assembler::pt, L_crc32c_done);
-
- // ------ process 8B chunks ------
- __ BIND(L_crc32c_x8_loop);
- __ ldf(FloatRegisterImpl::D, buf, 0, F2);
- __ inc(buf, 8);
- __ crc32c(F0, F2, F0);
- __ dec(len, 8);
- __ cmp_and_br_short(len, 8, Assembler::greaterEqual, Assembler::pt, L_crc32c_x8_loop);
-
- __ BIND(L_crc32c_done);
-
- // move to INT side, and reverse the byte order of lower 32 bits to little endian
- __ movftoi_revbytes(F0, crc, G1, G3);
-
- __ cmp_and_br_short(len, 0, Assembler::equal, Assembler::pt, L_crc32c_return);
-
- // ------ process the misaligned tail (7 bytes or less) ------
- __ BIND(L_crc32c_tail);
-
- // crc = (crc >>> 8) ^ byteTable[(crc ^ b) & 0xFF];
- __ ldub(buf, 0, G1);
- __ update_byte_crc32(crc, G1, table);
-
- __ inc(buf);
- __ dec(len);
- __ cmp_and_br_short(len, 0, Assembler::greater, Assembler::pt, L_crc32c_tail);
-
- __ BIND(L_crc32c_return);
- __ nop();
__ retl();
__ delayed()->nop();
@@ -5366,6 +5128,12 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_crc_table_adr = (address)StubRoutines::Sparc::_crc_table;
StubRoutines::_updateBytesCRC32 = generate_updateBytesCRC32();
}
+
+ if (UseCRC32CIntrinsics) {
+ // set table address before stub generation which use it
+ StubRoutines::_crc32c_table_addr = (address)StubRoutines::Sparc::_crc32c_table;
+ StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C();
+ }
}
@@ -5380,9 +5148,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_throw_IncompatibleClassChangeError_entry= generate_throw_exception("IncompatibleClassChangeError throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_IncompatibleClassChangeError));
StubRoutines::_throw_NullPointerException_at_call_entry= generate_throw_exception("NullPointerException at call throw_exception", CAST_FROM_FN_PTR(address, SharedRuntime::throw_NullPointerException_at_call));
- StubRoutines::_handler_for_unsafe_access_entry =
- generate_handler_for_unsafe_access();
-
// support for verify_oop (must happen after universe_init)
StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop_subroutine();
@@ -5425,12 +5190,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_sha512_implCompress = generate_sha512_implCompress(false, "sha512_implCompress");
StubRoutines::_sha512_implCompressMB = generate_sha512_implCompress(true, "sha512_implCompressMB");
}
-
- // generate CRC32C intrinsic code
- if (UseCRC32CIntrinsics) {
- StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C();
- }
-
// generate Adler32 intrinsics code
if (UseAdler32Intrinsics) {
StubRoutines::_updateBytesAdler32 = generate_updateBytesAdler32();
diff --git a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp
index f8083c0f273..63cbcf05945 100644
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -147,3 +147,62 @@ juint StubRoutines::Sparc::_crc_table[] =
0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
0x2d02ef8dUL
};
+
+/**
+ * CRC32C constants lookup table
+ */
+juint StubRoutines::Sparc::_crc32c_table[] =
+{
+ 0x00000000UL, 0xF26B8303UL, 0xE13B70F7UL, 0x1350F3F4UL, 0xC79A971FUL,
+ 0x35F1141CUL, 0x26A1E7E8UL, 0xD4CA64EBUL, 0x8AD958CFUL, 0x78B2DBCCUL,
+ 0x6BE22838UL, 0x9989AB3BUL, 0x4D43CFD0UL, 0xBF284CD3UL, 0xAC78BF27UL,
+ 0x5E133C24UL, 0x105EC76FUL, 0xE235446CUL, 0xF165B798UL, 0x030E349BUL,
+ 0xD7C45070UL, 0x25AFD373UL, 0x36FF2087UL, 0xC494A384UL, 0x9A879FA0UL,
+ 0x68EC1CA3UL, 0x7BBCEF57UL, 0x89D76C54UL, 0x5D1D08BFUL, 0xAF768BBCUL,
+ 0xBC267848UL, 0x4E4DFB4BUL, 0x20BD8EDEUL, 0xD2D60DDDUL, 0xC186FE29UL,
+ 0x33ED7D2AUL, 0xE72719C1UL, 0x154C9AC2UL, 0x061C6936UL, 0xF477EA35UL,
+ 0xAA64D611UL, 0x580F5512UL, 0x4B5FA6E6UL, 0xB93425E5UL, 0x6DFE410EUL,
+ 0x9F95C20DUL, 0x8CC531F9UL, 0x7EAEB2FAUL, 0x30E349B1UL, 0xC288CAB2UL,
+ 0xD1D83946UL, 0x23B3BA45UL, 0xF779DEAEUL, 0x05125DADUL, 0x1642AE59UL,
+ 0xE4292D5AUL, 0xBA3A117EUL, 0x4851927DUL, 0x5B016189UL, 0xA96AE28AUL,
+ 0x7DA08661UL, 0x8FCB0562UL, 0x9C9BF696UL, 0x6EF07595UL, 0x417B1DBCUL,
+ 0xB3109EBFUL, 0xA0406D4BUL, 0x522BEE48UL, 0x86E18AA3UL, 0x748A09A0UL,
+ 0x67DAFA54UL, 0x95B17957UL, 0xCBA24573UL, 0x39C9C670UL, 0x2A993584UL,
+ 0xD8F2B687UL, 0x0C38D26CUL, 0xFE53516FUL, 0xED03A29BUL, 0x1F682198UL,
+ 0x5125DAD3UL, 0xA34E59D0UL, 0xB01EAA24UL, 0x42752927UL, 0x96BF4DCCUL,
+ 0x64D4CECFUL, 0x77843D3BUL, 0x85EFBE38UL, 0xDBFC821CUL, 0x2997011FUL,
+ 0x3AC7F2EBUL, 0xC8AC71E8UL, 0x1C661503UL, 0xEE0D9600UL, 0xFD5D65F4UL,
+ 0x0F36E6F7UL, 0x61C69362UL, 0x93AD1061UL, 0x80FDE395UL, 0x72966096UL,
+ 0xA65C047DUL, 0x5437877EUL, 0x4767748AUL, 0xB50CF789UL, 0xEB1FCBADUL,
+ 0x197448AEUL, 0x0A24BB5AUL, 0xF84F3859UL, 0x2C855CB2UL, 0xDEEEDFB1UL,
+ 0xCDBE2C45UL, 0x3FD5AF46UL, 0x7198540DUL, 0x83F3D70EUL, 0x90A324FAUL,
+ 0x62C8A7F9UL, 0xB602C312UL, 0x44694011UL, 0x5739B3E5UL, 0xA55230E6UL,
+ 0xFB410CC2UL, 0x092A8FC1UL, 0x1A7A7C35UL, 0xE811FF36UL, 0x3CDB9BDDUL,
+ 0xCEB018DEUL, 0xDDE0EB2AUL, 0x2F8B6829UL, 0x82F63B78UL, 0x709DB87BUL,
+ 0x63CD4B8FUL, 0x91A6C88CUL, 0x456CAC67UL, 0xB7072F64UL, 0xA457DC90UL,
+ 0x563C5F93UL, 0x082F63B7UL, 0xFA44E0B4UL, 0xE9141340UL, 0x1B7F9043UL,
+ 0xCFB5F4A8UL, 0x3DDE77ABUL, 0x2E8E845FUL, 0xDCE5075CUL, 0x92A8FC17UL,
+ 0x60C37F14UL, 0x73938CE0UL, 0x81F80FE3UL, 0x55326B08UL, 0xA759E80BUL,
+ 0xB4091BFFUL, 0x466298FCUL, 0x1871A4D8UL, 0xEA1A27DBUL, 0xF94AD42FUL,
+ 0x0B21572CUL, 0xDFEB33C7UL, 0x2D80B0C4UL, 0x3ED04330UL, 0xCCBBC033UL,
+ 0xA24BB5A6UL, 0x502036A5UL, 0x4370C551UL, 0xB11B4652UL, 0x65D122B9UL,
+ 0x97BAA1BAUL, 0x84EA524EUL, 0x7681D14DUL, 0x2892ED69UL, 0xDAF96E6AUL,
+ 0xC9A99D9EUL, 0x3BC21E9DUL, 0xEF087A76UL, 0x1D63F975UL, 0x0E330A81UL,
+ 0xFC588982UL, 0xB21572C9UL, 0x407EF1CAUL, 0x532E023EUL, 0xA145813DUL,
+ 0x758FE5D6UL, 0x87E466D5UL, 0x94B49521UL, 0x66DF1622UL, 0x38CC2A06UL,
+ 0xCAA7A905UL, 0xD9F75AF1UL, 0x2B9CD9F2UL, 0xFF56BD19UL, 0x0D3D3E1AUL,
+ 0x1E6DCDEEUL, 0xEC064EEDUL, 0xC38D26C4UL, 0x31E6A5C7UL, 0x22B65633UL,
+ 0xD0DDD530UL, 0x0417B1DBUL, 0xF67C32D8UL, 0xE52CC12CUL, 0x1747422FUL,
+ 0x49547E0BUL, 0xBB3FFD08UL, 0xA86F0EFCUL, 0x5A048DFFUL, 0x8ECEE914UL,
+ 0x7CA56A17UL, 0x6FF599E3UL, 0x9D9E1AE0UL, 0xD3D3E1ABUL, 0x21B862A8UL,
+ 0x32E8915CUL, 0xC083125FUL, 0x144976B4UL, 0xE622F5B7UL, 0xF5720643UL,
+ 0x07198540UL, 0x590AB964UL, 0xAB613A67UL, 0xB831C993UL, 0x4A5A4A90UL,
+ 0x9E902E7BUL, 0x6CFBAD78UL, 0x7FAB5E8CUL, 0x8DC0DD8FUL, 0xE330A81AUL,
+ 0x115B2B19UL, 0x020BD8EDUL, 0xF0605BEEUL, 0x24AA3F05UL, 0xD6C1BC06UL,
+ 0xC5914FF2UL, 0x37FACCF1UL, 0x69E9F0D5UL, 0x9B8273D6UL, 0x88D28022UL,
+ 0x7AB90321UL, 0xAE7367CAUL, 0x5C18E4C9UL, 0x4F48173DUL, 0xBD23943EUL,
+ 0xF36E6F75UL, 0x0105EC76UL, 0x12551F82UL, 0xE03E9C81UL, 0x34F4F86AUL,
+ 0xC69F7B69UL, 0xD5CF889DUL, 0x27A40B9EUL, 0x79B737BAUL, 0x8BDCB4B9UL,
+ 0x988C474DUL, 0x6AE7C44EUL, 0xBE2DA0A5UL, 0x4C4623A6UL, 0x5F16D052UL,
+ 0xAD7D5351UL
+};
diff --git a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp
index e28ec2ffb31..eb6c909c0b3 100644
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,6 +56,7 @@ class Sparc {
// masks and table for CRC32
static uint64_t _crc_by128_masks[];
static juint _crc_table[];
+ static juint _crc32c_table[];
public:
// test assembler stop routine by setting registers
diff --git a/hotspot/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp b/hotspot/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp
index 008fcee7a6a..f96b3e440a5 100644
--- a/hotspot/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp
@@ -557,17 +557,12 @@ void TemplateInterpreterGenerator::lock_method() {
// get synchronization object to O0
{ Label done;
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
__ btst(JVM_ACC_STATIC, O0);
__ br( Assembler::zero, true, Assembler::pt, done);
__ delayed()->ld_ptr(Llocals, Interpreter::local_offset_in_bytes(0), O0); // get receiver for not-static case
- __ ld_ptr( Lmethod, in_bytes(Method::const_offset()), O0);
- __ ld_ptr( O0, in_bytes(ConstMethod::constants_offset()), O0);
- __ ld_ptr( O0, ConstantPool::pool_holder_offset_in_bytes(), O0);
-
// lock the mirror, not the Klass*
- __ ld_ptr( O0, mirror_offset, O0);
+ __ load_mirror(O0, Lmethod);
#ifdef ASSERT
__ tst(O0);
@@ -881,6 +876,10 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
__ add(Lbcp, in_bytes(ConstMethod::codes_offset()), Lbcp);
}
__ mov( G5_method, Lmethod); // set Lmethod
+ // Get mirror and store it in the frame as GC root for this Method*
+ Register mirror = LcpoolCache;
+ __ load_mirror(mirror, Lmethod);
+ __ st_ptr(mirror, FP, (frame::interpreter_frame_mirror_offset * wordSize) + STACK_BIAS);
__ get_constant_pool_cache( LcpoolCache ); // set LcpoolCache
__ sub(FP, rounded_vm_local_words * BytesPerWord, Lmonitors ); // set Lmonitors
#ifdef _LP64
@@ -1082,8 +1081,56 @@ address TemplateInterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractI
return NULL;
}
-// Not supported
+/**
+ * Method entry for intrinsic-candidate (non-native) methods:
+ * int java.util.zip.CRC32C.updateBytes(int crc, byte[] b, int off, int end)
+ * int java.util.zip.CRC32C.updateDirectByteBuffer(int crc, long buf, int off, int end)
+ * Unlike CRC32, CRC32C does not have any methods marked as native
+ * CRC32C also uses an "end" variable instead of the length variable CRC32 uses
+ */
address TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
+
+ if (UseCRC32CIntrinsics) {
+ address entry = __ pc();
+
+ // Load parameters from the stack
+ const Register crc = O0; // initial crc
+ const Register buf = O1; // source java byte array address
+ const Register offset = O2; // offset
+ const Register end = O3; // index of last element to process
+ const Register len = O2; // len argument to the kernel
+ const Register table = O3; // crc32c lookup table address
+
+ // Arguments are reversed on java expression stack
+ // Calculate address of start element
+ if (kind == Interpreter::java_util_zip_CRC32C_updateDirectByteBuffer) {
+ __ lduw(Gargs, 0, end);
+ __ lduw(Gargs, 8, offset);
+ __ ldx( Gargs, 16, buf);
+ __ lduw(Gargs, 32, crc);
+ __ add(buf, offset, buf);
+ __ sub(end, offset, len);
+ } else {
+ __ lduw(Gargs, 0, end);
+ __ lduw(Gargs, 8, offset);
+ __ ldx( Gargs, 16, buf);
+ __ lduw(Gargs, 24, crc);
+ __ add(buf, arrayOopDesc::base_offset_in_bytes(T_BYTE), buf); // account for the header size
+ __ add(buf, offset, buf);
+ __ sub(end, offset, len);
+ }
+
+ // Call the crc32c kernel
+ __ MacroAssembler::save_thread(L7_thread_cache);
+ __ kernel_crc32c(crc, buf, len, table);
+ __ MacroAssembler::restore_thread(L7_thread_cache);
+
+ // result in O0
+ __ retl();
+ __ delayed()->nop();
+
+ return entry;
+ }
return NULL;
}
@@ -1297,12 +1344,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
// get native function entry point(O0 is a good temp until the very end)
__ delayed()->ld_ptr(Lmethod, in_bytes(Method::native_function_offset()), O0);
// for static methods insert the mirror argument
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
-
- __ ld_ptr(Lmethod, Method:: const_offset(), O1);
- __ ld_ptr(O1, ConstMethod::constants_offset(), O1);
- __ ld_ptr(O1, ConstantPool::pool_holder_offset_in_bytes(), O1);
- __ ld_ptr(O1, mirror_offset, O1);
+ __ load_mirror(O1, Lmethod);
#ifdef ASSERT
if (!PrintSignatureHandlers) // do not dirty the output with this
{ Label L;
diff --git a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
index 93c8d40891e..88ac31e096d 100644
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
@@ -49,9 +49,11 @@ void VM_Version::initialize() {
AllocatePrefetchDistance = allocate_prefetch_distance();
AllocatePrefetchStyle = allocate_prefetch_style();
- if (AllocatePrefetchStyle == 3 && !has_blk_init()) {
- warning("BIS instructions are not available on this CPU");
- FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
+ if (!has_blk_init() || cache_line_size <= 0) {
+ if (AllocatePrefetchInstr == 1) {
+ warning("BIS instructions required for AllocatePrefetchInstr 1 unavailable");
+ FLAG_SET_DEFAULT(AllocatePrefetchInstr, 0);
+ }
}
UseSSE = 0; // Only on x86 and x64
@@ -85,14 +87,16 @@ void VM_Version::initialize() {
FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
}
if (is_niagara_plus()) {
- if (has_blk_init() && UseTLAB &&
+ if (has_blk_init() && (cache_line_size > 0) && UseTLAB &&
FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
// Use BIS instruction for TLAB allocation prefetch.
- FLAG_SET_ERGO(intx, AllocatePrefetchInstr, 1);
- if (FLAG_IS_DEFAULT(AllocatePrefetchStyle)) {
- FLAG_SET_ERGO(intx, AllocatePrefetchStyle, 3);
- }
- if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+ FLAG_SET_DEFAULT(AllocatePrefetchInstr, 1);
+ }
+ if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
+ if (AllocatePrefetchInstr == 0) {
+ // Use different prefetch distance without BIS
+ FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
+ } else {
// Use smaller prefetch distance with BIS
FLAG_SET_DEFAULT(AllocatePrefetchDistance, 64);
}
@@ -107,22 +111,14 @@ void VM_Version::initialize() {
FLAG_SET_ERGO(intx, AllocateInstancePrefetchLines, AllocateInstancePrefetchLines*2);
}
}
- if (AllocatePrefetchStyle != 3 && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
- // Use different prefetch distance without BIS
- FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
- }
- if (AllocatePrefetchInstr == 1) {
- // Need a space at the end of TLAB for BIS since it
- // will fault when accessing memory outside of heap.
-
- // +1 for rounding up to next cache line, +1 to be safe
- int lines = AllocatePrefetchLines + 2;
- int step_size = AllocatePrefetchStepSize;
- int distance = AllocatePrefetchDistance;
- _reserve_for_allocation_prefetch = (distance + step_size*lines)/(int)HeapWordSize;
- }
}
-#endif
+
+ if (AllocatePrefetchInstr == 1) {
+ // Use allocation prefetch style 3 because BIS instructions
+ // require aligned memory addresses.
+ FLAG_SET_DEFAULT(AllocatePrefetchStyle, 3);
+ }
+#endif /* COMPILER2 */
}
// Use hardware population count instruction if available.
diff --git a/hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp b/hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp
index ed991d5c1b8..5a1f37f26a7 100644
--- a/hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -113,6 +113,8 @@ void AbstractInterpreter::layout_activation(Method* method,
}
*interpreter_frame->interpreter_frame_cache_addr() =
method->constants()->cache();
+ *interpreter_frame->interpreter_frame_mirror_addr() =
+ method->method_holder()->java_mirror();
}
#ifndef _LP64
diff --git a/hotspot/src/cpu/x86/vm/assembler_x86.cpp b/hotspot/src/cpu/x86/vm/assembler_x86.cpp
index e30a0289b32..d65577ffca5 100644
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp
@@ -1240,6 +1240,7 @@ void Assembler::addr_nop_8() {
void Assembler::addsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_int8((unsigned char)(0xC0 | encode));
@@ -1250,6 +1251,7 @@ void Assembler::addsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_operand(dst, src);
@@ -1599,6 +1601,7 @@ void Assembler::comisd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);;
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x2F);
emit_operand(dst, src);
@@ -1607,6 +1610,7 @@ void Assembler::comisd(XMMRegister dst, Address src) {
void Assembler::comisd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x2F);
emit_int8((unsigned char)(0xC0 | encode));
@@ -1733,6 +1737,7 @@ void Assembler::cvtdq2ps(XMMRegister dst, XMMRegister src) {
void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5A);
emit_int8((unsigned char)(0xC0 | encode));
@@ -1743,6 +1748,7 @@ void Assembler::cvtsd2ss(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5A);
emit_operand(dst, src);
@@ -1827,6 +1833,15 @@ void Assembler::cvttss2sil(Register dst, XMMRegister src) {
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::cvttpd2dq(XMMRegister dst, XMMRegister src) {
+ NOT_LP64(assert(VM_Version::supports_sse2(), ""));
+ int vector_len = VM_Version::supports_avx512novl() ? AVX_512bit : AVX_128bit;
+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0xE6);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
void Assembler::decl(Address dst) {
// Don't use it directly. Use MacroAssembler::decrement() instead.
InstructionMark im(this);
@@ -1840,6 +1855,7 @@ void Assembler::divsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_operand(dst, src);
@@ -1848,6 +1864,7 @@ void Assembler::divsd(XMMRegister dst, Address src) {
void Assembler::divsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_int8((unsigned char)(0xC0 | encode));
@@ -2122,6 +2139,7 @@ void Assembler::movapd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
int vector_len = VM_Version::supports_avx512novl() ? AVX_512bit : AVX_128bit;
InstructionAttr attributes(vector_len, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x28);
emit_int8((unsigned char)(0xC0 | encode));
@@ -2156,6 +2174,7 @@ void Assembler::movddup(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse3(), ""));
int vector_len = VM_Version::supports_avx512novl() ? AVX_512bit : AVX_128bit;
InstructionAttr attributes(vector_len, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x12);
emit_int8(0xC0 | encode);
@@ -2193,6 +2212,15 @@ void Assembler::kmovwl(Register dst, KRegister src) {
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::kmovwl(KRegister dst, Address src) {
+ assert(VM_Version::supports_evex(), "");
+ InstructionMark im(this);
+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0x90);
+ emit_operand((Register)dst, src);
+}
+
void Assembler::kmovdl(KRegister dst, Register src) {
assert(VM_Version::supports_avx512bw(), "");
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
@@ -2251,6 +2279,14 @@ void Assembler::kmovql(Register dst, KRegister src) {
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::knotwl(KRegister dst, KRegister src) {
+ assert(VM_Version::supports_evex(), "");
+ InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0x44);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
// This instruction produces ZF or CF flags
void Assembler::kortestbl(KRegister src1, KRegister src2) {
assert(VM_Version::supports_avx512dq(), "");
@@ -2287,6 +2323,31 @@ void Assembler::kortestql(KRegister src1, KRegister src2) {
emit_int8((unsigned char)(0xC0 | encode));
}
+// This instruction produces ZF or CF flags
+void Assembler::ktestql(KRegister src1, KRegister src2) {
+ assert(VM_Version::supports_avx512bw(), "");
+ InstructionAttr attributes(AVX_128bit, /* rex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(src1->encoding(), 0, src2->encoding(), VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0x99);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
+void Assembler::ktestq(KRegister src1, KRegister src2) {
+ assert(VM_Version::supports_avx512bw(), "");
+ InstructionAttr attributes(AVX_128bit, /* rex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(src1->encoding(), 0, src2->encoding(), VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0x99);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
+void Assembler::ktestd(KRegister src1, KRegister src2) {
+ assert(VM_Version::supports_avx512bw(), "");
+ InstructionAttr attributes(AVX_128bit, /* rex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(src1->encoding(), 0, src2->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8((unsigned char)0x99);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
void Assembler::movb(Address dst, int imm8) {
InstructionMark im(this);
prefix(dst);
@@ -2423,6 +2484,7 @@ void Assembler::vmovdqu(Address dst, XMMRegister src) {
void Assembler::evmovdqub(XMMRegister dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
emit_int8(0x6F);
@@ -2435,6 +2497,7 @@ void Assembler::evmovdqub(XMMRegister dst, Address src, int vector_len) {
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
vex_prefix(src, 0, dst->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
emit_int8(0x6F);
emit_operand(dst, src);
@@ -2447,18 +2510,23 @@ void Assembler::evmovdqub(Address dst, XMMRegister src, int vector_len) {
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
vex_prefix(dst, 0, src->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
emit_int8(0x7F);
emit_operand(src, dst);
}
-void Assembler::evmovdquw(XMMRegister dst, XMMRegister src, int vector_len) {
- assert(VM_Version::supports_evex(), "");
- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
- int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
- int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
+void Assembler::evmovdqub(XMMRegister dst, KRegister mask, Address src, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(is_vector_masking(), ""); // For stub code use only
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x6F);
- emit_int8((unsigned char)(0xC0 | encode));
+ emit_operand(dst, src);
}
void Assembler::evmovdquw(XMMRegister dst, Address src, int vector_len) {
@@ -2466,24 +2534,52 @@ void Assembler::evmovdquw(XMMRegister dst, Address src, int vector_len) {
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
vex_prefix(src, 0, dst->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
emit_int8(0x6F);
emit_operand(dst, src);
}
+void Assembler::evmovdquw(XMMRegister dst, KRegister mask, Address src, int vector_len) {
+ assert(is_vector_masking(), "");
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x6F);
+ emit_operand(dst, src);
+}
+
void Assembler::evmovdquw(Address dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_evex(), "");
assert(src != xnoreg, "sanity");
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
int prefix = (_legacy_mode_bw) ? VEX_SIMD_F2 : VEX_SIMD_F3;
vex_prefix(dst, 0, src->encoding(), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
emit_int8(0x7F);
emit_operand(src, dst);
}
+void Assembler::evmovdquw(Address dst, KRegister mask, XMMRegister src, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(src != xnoreg, "sanity");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(dst, 0, src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x7F);
+ emit_operand(src, dst);
+}
+
void Assembler::evmovdqul(XMMRegister dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
@@ -2509,8 +2605,8 @@ void Assembler::evmovdqul(Address dst, XMMRegister src, int vector_len) {
assert(src != xnoreg, "sanity");
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
- attributes.set_is_evex_instruction();
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
vex_prefix(dst, 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
emit_int8(0x7F);
emit_operand(src, dst);
@@ -2529,8 +2625,8 @@ void Assembler::evmovdquq(XMMRegister dst, Address src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
- attributes.set_is_evex_instruction();
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
emit_int8(0x6F);
emit_operand(dst, src);
@@ -2541,8 +2637,8 @@ void Assembler::evmovdquq(Address dst, XMMRegister src, int vector_len) {
assert(src != xnoreg, "sanity");
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
- attributes.set_is_evex_instruction();
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
vex_prefix(dst, 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
emit_int8(0x7F);
emit_operand(src, dst);
@@ -2591,7 +2687,8 @@ void Assembler::movlpd(XMMRegister dst, Address src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
- attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_32bit);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x12);
emit_operand(dst, src);
@@ -2622,6 +2719,7 @@ void Assembler::movq(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, xnoreg, src, VEX_SIMD_F3, VEX_OPCODE_0F, &attributes);
emit_int8(0x7E);
emit_operand(dst, src);
@@ -2632,6 +2730,7 @@ void Assembler::movq(Address dst, XMMRegister src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(src, xnoreg, dst, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD6);
emit_operand(src, dst);
@@ -2656,6 +2755,7 @@ void Assembler::movsbl(Register dst, Register src) { // movsxb
void Assembler::movsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x10);
emit_int8((unsigned char)(0xC0 | encode));
@@ -2666,6 +2766,7 @@ void Assembler::movsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, xnoreg, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x10);
emit_operand(dst, src);
@@ -2676,6 +2777,7 @@ void Assembler::movsd(Address dst, XMMRegister src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(src, xnoreg, dst, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x11);
emit_operand(src, dst);
@@ -2799,6 +2901,7 @@ void Assembler::mulsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_operand(dst, src);
@@ -2807,6 +2910,7 @@ void Assembler::mulsd(XMMRegister dst, Address src) {
void Assembler::mulsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_int8((unsigned char)(0xC0 | encode));
@@ -3161,6 +3265,16 @@ void Assembler::vpermq(XMMRegister dst, XMMRegister src, int imm8, int vector_le
emit_int8(imm8);
}
+void Assembler::vperm2i128(XMMRegister dst, XMMRegister nds, XMMRegister src, int imm8) {
+ assert(VM_Version::supports_avx2(), "");
+ InstructionAttr attributes(AVX_256bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8(0x46);
+ emit_int8(0xC0 | encode);
+ emit_int8(imm8);
+}
+
+
void Assembler::pause() {
emit_int8((unsigned char)0xF3);
emit_int8((unsigned char)0x90);
@@ -3213,10 +3327,71 @@ void Assembler::evpcmpeqb(KRegister kdst, XMMRegister nds, XMMRegister src, int
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::evpcmpgtb(KRegister kdst, XMMRegister nds, Address src, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
+ int dst_enc = kdst->encoding();
+ vex_prefix(src, nds->encoding(), dst_enc, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x64);
+ emit_operand(as_Register(dst_enc), src);
+}
+
+void Assembler::evpcmpgtb(KRegister kdst, KRegister mask, XMMRegister nds, Address src, int vector_len) {
+ assert(is_vector_masking(), "");
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ int dst_enc = kdst->encoding();
+ vex_prefix(src, nds->encoding(), dst_enc, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x64);
+ emit_operand(as_Register(dst_enc), src);
+}
+
+void Assembler::evpcmpuw(KRegister kdst, XMMRegister nds, XMMRegister src, ComparisonPredicate vcc, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_is_evex_instruction();
+ int encode = vex_prefix_and_encode(kdst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8(0x3E);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(vcc);
+}
+
+void Assembler::evpcmpuw(KRegister kdst, KRegister mask, XMMRegister nds, XMMRegister src, ComparisonPredicate vcc, int vector_len) {
+ assert(is_vector_masking(), "");
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ int encode = vex_prefix_and_encode(kdst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8(0x3E);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(vcc);
+}
+
+void Assembler::evpcmpuw(KRegister kdst, XMMRegister nds, Address src, ComparisonPredicate vcc, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
+ int dst_enc = kdst->encoding();
+ vex_prefix(src, nds->encoding(), kdst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8(0x3E);
+ emit_operand(as_Register(dst_enc), src);
+ emit_int8(vcc);
+}
+
void Assembler::evpcmpeqb(KRegister kdst, XMMRegister nds, Address src, int vector_len) {
assert(VM_Version::supports_avx512bw(), "");
InstructionMark im(this);
- InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
attributes.set_is_evex_instruction();
attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
int dst_enc = kdst->encoding();
@@ -3225,6 +3400,19 @@ void Assembler::evpcmpeqb(KRegister kdst, XMMRegister nds, Address src, int vect
emit_operand(as_Register(dst_enc), src);
}
+void Assembler::evpcmpeqb(KRegister kdst, KRegister mask, XMMRegister nds, Address src, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(is_vector_masking(), ""); // For stub code use only
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_reg_mask */ false, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(src, nds->encoding(), kdst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x74);
+ emit_operand(as_Register(kdst->encoding()), src);
+}
+
// In this context, the dst vector contains the components that are equal, non equal components are zeroed in dst
void Assembler::pcmpeqw(XMMRegister dst, XMMRegister src) {
assert(VM_Version::supports_sse2(), "");
@@ -3525,6 +3713,46 @@ void Assembler::vpmovzxbw(XMMRegister dst, Address src, int vector_len) {
emit_operand(dst, src);
}
+void Assembler::evpmovzxbw(XMMRegister dst, KRegister mask, Address src, int vector_len) {
+ assert(is_vector_masking(), "");
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(dst != xnoreg, "sanity");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_HVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x30);
+ emit_operand(dst, src);
+}
+
+void Assembler::evpmovwb(Address dst, XMMRegister src, int vector_len) {
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(src != xnoreg, "sanity");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_HVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_is_evex_instruction();
+ vex_prefix(dst, 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x30);
+ emit_operand(src, dst);
+}
+
+void Assembler::evpmovwb(Address dst, KRegister mask, XMMRegister src, int vector_len) {
+ assert(is_vector_masking(), "");
+ assert(VM_Version::supports_avx512vlbw(), "");
+ assert(src != xnoreg, "sanity");
+ InstructionMark im(this);
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_address_attributes(/* tuple_type */ EVEX_HVM, /* input_size_in_bits */ EVEX_NObit);
+ attributes.set_embedded_opmask_register_specifier(mask);
+ attributes.set_is_evex_instruction();
+ vex_prefix(dst, 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x30);
+ emit_operand(src, dst);
+}
+
// generic
void Assembler::pop(Register dst) {
int encode = prefix_and_encode(dst->encoding());
@@ -3629,6 +3857,16 @@ void Assembler::pshufb(XMMRegister dst, XMMRegister src) {
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::vpshufb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
+ assert(vector_len == AVX_128bit? VM_Version::supports_avx() :
+ vector_len == AVX_256bit? VM_Version::supports_avx2() :
+ 0, "");
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
+ int encode = simd_prefix_and_encode(dst, nds, src, VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8(0x00);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
void Assembler::pshufb(XMMRegister dst, Address src) {
assert(VM_Version::supports_ssse3(), "");
InstructionMark im(this);
@@ -3650,6 +3888,18 @@ void Assembler::pshufd(XMMRegister dst, XMMRegister src, int mode) {
emit_int8(mode & 0xFF);
}
+void Assembler::vpshufd(XMMRegister dst, XMMRegister src, int mode, int vector_len) {
+ assert(vector_len == AVX_128bit? VM_Version::supports_avx() :
+ vector_len == AVX_256bit? VM_Version::supports_avx2() :
+ 0, "");
+ NOT_LP64(assert(VM_Version::supports_sse2(), ""));
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
+ emit_int8(0x70);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(mode & 0xFF);
+}
+
void Assembler::pshufd(XMMRegister dst, Address src, int mode) {
assert(isByte(mode), "invalid value");
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
@@ -3690,7 +3940,6 @@ void Assembler::psrldq(XMMRegister dst, int shift) {
// Shift left 128 bit value in dst XMMRegister by shift number of bytes.
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ false);
- // XMM3 is for /3 encoding: 66 0F 73 /3 ib
int encode = simd_prefix_and_encode(xmm3, dst, dst, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x73);
emit_int8((unsigned char)(0xC0 | encode));
@@ -3786,6 +4035,7 @@ void Assembler::punpckldq(XMMRegister dst, XMMRegister src) {
void Assembler::punpcklqdq(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x6C);
emit_int8((unsigned char)(0xC0 | encode));
@@ -3972,6 +4222,17 @@ void Assembler::palignr(XMMRegister dst, XMMRegister src, int imm8) {
emit_int8(imm8);
}
+void Assembler::vpalignr(XMMRegister dst, XMMRegister nds, XMMRegister src, int imm8, int vector_len) {
+ assert(vector_len == AVX_128bit? VM_Version::supports_avx() :
+ vector_len == AVX_256bit? VM_Version::supports_avx2() :
+ 0, "");
+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true);
+ int encode = simd_prefix_and_encode(dst, nds, src, VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8((unsigned char)0x0F);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(imm8);
+}
+
void Assembler::pblendw(XMMRegister dst, XMMRegister src, int imm8) {
assert(VM_Version::supports_sse4_1(), "");
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
@@ -4081,6 +4342,7 @@ void Assembler::smovl() {
void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x51);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4091,6 +4353,7 @@ void Assembler::sqrtsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x51);
emit_operand(dst, src);
@@ -4166,6 +4429,7 @@ void Assembler::subl(Register dst, Register src) {
void Assembler::subsd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4176,6 +4440,7 @@ void Assembler::subsd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_operand(dst, src);
@@ -4263,6 +4528,7 @@ void Assembler::ucomisd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x2E);
emit_operand(dst, src);
@@ -4271,6 +4537,7 @@ void Assembler::ucomisd(XMMRegister dst, Address src) {
void Assembler::ucomisd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x2E);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4382,6 +4649,7 @@ void Assembler::vaddsd(XMMRegister dst, XMMRegister nds, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_operand(dst, src);
@@ -4390,6 +4658,7 @@ void Assembler::vaddsd(XMMRegister dst, XMMRegister nds, Address src) {
void Assembler::vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4418,6 +4687,7 @@ void Assembler::vdivsd(XMMRegister dst, XMMRegister nds, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_operand(dst, src);
@@ -4426,6 +4696,7 @@ void Assembler::vdivsd(XMMRegister dst, XMMRegister nds, Address src) {
void Assembler::vdivsd(XMMRegister dst, XMMRegister nds, XMMRegister src) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4454,6 +4725,7 @@ void Assembler::vmulsd(XMMRegister dst, XMMRegister nds, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_operand(dst, src);
@@ -4462,6 +4734,7 @@ void Assembler::vmulsd(XMMRegister dst, XMMRegister nds, Address src) {
void Assembler::vmulsd(XMMRegister dst, XMMRegister nds, XMMRegister src) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4490,6 +4763,7 @@ void Assembler::vsubsd(XMMRegister dst, XMMRegister nds, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_operand(dst, src);
@@ -4498,6 +4772,7 @@ void Assembler::vsubsd(XMMRegister dst, XMMRegister nds, Address src) {
void Assembler::vsubsd(XMMRegister dst, XMMRegister nds, XMMRegister src) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4528,6 +4803,7 @@ void Assembler::vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src) {
void Assembler::addpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4537,6 +4813,7 @@ void Assembler::addpd(XMMRegister dst, Address src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
@@ -4555,6 +4832,7 @@ void Assembler::addps(XMMRegister dst, XMMRegister src) {
void Assembler::vaddpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4573,6 +4851,7 @@ void Assembler::vaddpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x58);
emit_operand(dst, src);
@@ -4591,6 +4870,7 @@ void Assembler::vaddps(XMMRegister dst, XMMRegister nds, Address src, int vector
void Assembler::subpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4607,6 +4887,7 @@ void Assembler::subps(XMMRegister dst, XMMRegister src) {
void Assembler::vsubpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4625,6 +4906,7 @@ void Assembler::vsubpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5C);
emit_operand(dst, src);
@@ -4643,6 +4925,7 @@ void Assembler::vsubps(XMMRegister dst, XMMRegister nds, Address src, int vector
void Assembler::mulpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4653,6 +4936,7 @@ void Assembler::mulpd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_operand(dst, src);
@@ -4669,6 +4953,7 @@ void Assembler::mulps(XMMRegister dst, XMMRegister src) {
void Assembler::vmulpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4687,6 +4972,7 @@ void Assembler::vmulpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x59);
emit_operand(dst, src);
@@ -4705,6 +4991,7 @@ void Assembler::vmulps(XMMRegister dst, XMMRegister nds, Address src, int vector
void Assembler::divpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4721,6 +5008,7 @@ void Assembler::divps(XMMRegister dst, XMMRegister src) {
void Assembler::vdivpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4739,6 +5027,7 @@ void Assembler::vdivpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x5E);
emit_operand(dst, src);
@@ -4757,6 +5046,7 @@ void Assembler::vdivps(XMMRegister dst, XMMRegister nds, Address src, int vector
void Assembler::vsqrtpd(XMMRegister dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x51);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4767,6 +5057,7 @@ void Assembler::vsqrtpd(XMMRegister dst, Address src, int vector_len) {
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x51);
emit_operand(dst, src);
@@ -4775,6 +5066,7 @@ void Assembler::vsqrtpd(XMMRegister dst, Address src, int vector_len) {
void Assembler::andpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x54);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4803,6 +5095,7 @@ void Assembler::andpd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x54);
emit_operand(dst, src);
@@ -4811,6 +5104,7 @@ void Assembler::andpd(XMMRegister dst, Address src) {
void Assembler::vandpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x54);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4829,6 +5123,7 @@ void Assembler::vandpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x54);
emit_operand(dst, src);
@@ -4847,6 +5142,7 @@ void Assembler::vandps(XMMRegister dst, XMMRegister nds, Address src, int vector
void Assembler::unpckhpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x15);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4855,6 +5151,7 @@ void Assembler::unpckhpd(XMMRegister dst, XMMRegister src) {
void Assembler::unpcklpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x14);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4863,6 +5160,7 @@ void Assembler::unpcklpd(XMMRegister dst, XMMRegister src) {
void Assembler::xorpd(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x57);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4881,6 +5179,7 @@ void Assembler::xorpd(XMMRegister dst, Address src) {
InstructionMark im(this);
InstructionAttr attributes(AVX_128bit, /* rex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x57);
emit_operand(dst, src);
@@ -4899,6 +5198,7 @@ void Assembler::xorps(XMMRegister dst, Address src) {
void Assembler::vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(VM_Version::supports_avx(), "");
InstructionAttr attributes(vector_len, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x57);
emit_int8((unsigned char)(0xC0 | encode));
@@ -4917,6 +5217,7 @@ void Assembler::vxorpd(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x57);
emit_operand(dst, src);
@@ -4987,13 +5288,14 @@ void Assembler::paddd(XMMRegister dst, Address src) {
void Assembler::paddq(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD4);
emit_int8((unsigned char)(0xC0 | encode));
}
void Assembler::phaddw(XMMRegister dst, XMMRegister src) {
- NOT_LP64(assert(VM_Version::supports_sse3(), ""));
+ assert(VM_Version::supports_sse3(), "");
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x01);
@@ -5001,7 +5303,7 @@ void Assembler::phaddw(XMMRegister dst, XMMRegister src) {
}
void Assembler::phaddd(XMMRegister dst, XMMRegister src) {
- NOT_LP64(assert(VM_Version::supports_sse3(), ""));
+ assert(VM_Version::supports_sse3(), "");
InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x02);
@@ -5035,6 +5337,7 @@ void Assembler::vpaddd(XMMRegister dst, XMMRegister nds, XMMRegister src, int ve
void Assembler::vpaddq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD4);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5075,6 +5378,7 @@ void Assembler::vpaddq(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD4);
emit_operand(dst, src);
@@ -5106,6 +5410,7 @@ void Assembler::psubd(XMMRegister dst, XMMRegister src) {
void Assembler::psubq(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xFB);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5138,6 +5443,7 @@ void Assembler::vpsubd(XMMRegister dst, XMMRegister nds, XMMRegister src, int ve
void Assembler::vpsubq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xFB);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5178,6 +5484,7 @@ void Assembler::vpsubq(XMMRegister dst, XMMRegister nds, Address src, int vector
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xFB);
emit_operand(dst, src);
@@ -5216,8 +5523,9 @@ void Assembler::vpmulld(XMMRegister dst, XMMRegister nds, XMMRegister src, int v
}
void Assembler::vpmullq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
- assert(UseAVX > 2, "requires some form of AVX");
- InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ assert(UseAVX > 2, "requires some form of EVEX");
+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x40);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5244,10 +5552,11 @@ void Assembler::vpmulld(XMMRegister dst, XMMRegister nds, Address src, int vecto
}
void Assembler::vpmullq(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
- assert(UseAVX > 0, "requires some form of AVX");
+ assert(UseAVX > 2, "requires some form of EVEX");
InstructionMark im(this);
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_dq, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_is_evex_instruction();
vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x40);
emit_operand(dst, src);
@@ -5303,6 +5612,7 @@ void Assembler::pslld(XMMRegister dst, XMMRegister shift) {
void Assembler::psllq(XMMRegister dst, XMMRegister shift) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, shift, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xF3);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5332,6 +5642,7 @@ void Assembler::vpslld(XMMRegister dst, XMMRegister src, int shift, int vector_l
void Assembler::vpsllq(XMMRegister dst, XMMRegister src, int shift, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
// XMM6 is for /6 encoding: 66 0F 73 /6 ib
int encode = vex_prefix_and_encode(xmm6->encoding(), dst->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x73);
@@ -5358,6 +5669,7 @@ void Assembler::vpslld(XMMRegister dst, XMMRegister src, XMMRegister shift, int
void Assembler::vpsllq(XMMRegister dst, XMMRegister src, XMMRegister shift, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), src->encoding(), shift->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xF3);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5389,6 +5701,7 @@ void Assembler::psrlq(XMMRegister dst, int shift) {
// shifts 128 bit value in xmm register by number of bytes.
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
// XMM2 is for /2 encoding: 66 0F 73 /2 ib
int encode = simd_prefix_and_encode(xmm2, dst, dst, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x73);
@@ -5415,6 +5728,7 @@ void Assembler::psrld(XMMRegister dst, XMMRegister shift) {
void Assembler::psrlq(XMMRegister dst, XMMRegister shift) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* rex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, shift, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD3);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5443,6 +5757,7 @@ void Assembler::vpsrld(XMMRegister dst, XMMRegister src, int shift, int vector_l
void Assembler::vpsrlq(XMMRegister dst, XMMRegister src, int shift, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
// XMM2 is for /2 encoding: 66 0F 73 /2 ib
int encode = vex_prefix_and_encode(xmm2->encoding(), dst->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8(0x73);
@@ -5469,6 +5784,7 @@ void Assembler::vpsrld(XMMRegister dst, XMMRegister src, XMMRegister shift, int
void Assembler::vpsrlq(XMMRegister dst, XMMRegister src, XMMRegister shift, int vector_len) {
assert(UseAVX > 0, "requires some form of AVX");
InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), src->encoding(), shift->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xD3);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5578,6 +5894,7 @@ void Assembler::vpand(XMMRegister dst, XMMRegister nds, Address src, int vector_
void Assembler::pandn(XMMRegister dst, XMMRegister src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
InstructionAttr attributes(AVX_128bit, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
emit_int8((unsigned char)0xDF);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5867,9 +6184,9 @@ void Assembler::vextracti32x4(Address dst, XMMRegister src, uint8_t imm8) {
}
void Assembler::vextracti64x2(XMMRegister dst, XMMRegister src, uint8_t imm8) {
- assert(VM_Version::supports_evex(), "");
+ assert(VM_Version::supports_avx512dq(), "");
assert(imm8 <= 0x03, "imm8: %u", imm8);
- InstructionAttr attributes(AVX_512bit, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ InstructionAttr attributes(AVX_512bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
int encode = vex_prefix_and_encode(src->encoding(), 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
emit_int8(0x39);
emit_int8((unsigned char)(0xC0 | encode));
@@ -5957,9 +6274,9 @@ void Assembler::vextractf32x4(Address dst, XMMRegister src, uint8_t imm8) {
}
void Assembler::vextractf64x2(XMMRegister dst, XMMRegister src, uint8_t imm8) {
- assert(VM_Version::supports_evex(), "");
+ assert(VM_Version::supports_avx512dq(), "");
assert(imm8 <= 0x03, "imm8: %u", imm8);
- InstructionAttr attributes(AVX_512bit, /* vex_w */ !_legacy_mode_dq, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
+ InstructionAttr attributes(AVX_512bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ false);
int encode = vex_prefix_and_encode(src->encoding(), 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_3A, &attributes);
emit_int8(0x19);
emit_int8((unsigned char)(0xC0 | encode));
@@ -6084,7 +6401,8 @@ void Assembler::evpbroadcastd(XMMRegister dst, Address src, int vector_len) {
// duplicate 8-byte integer data from src into programmed locations in dest : requires AVX512VL
void Assembler::evpbroadcastq(XMMRegister dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_evex(), "");
- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x59);
emit_int8((unsigned char)(0xC0 | encode));
@@ -6094,7 +6412,8 @@ void Assembler::evpbroadcastq(XMMRegister dst, Address src, int vector_len) {
assert(VM_Version::supports_evex(), "");
assert(dst != xnoreg, "sanity");
InstructionMark im(this);
- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
// swap src<->dst for encoding
vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
@@ -6129,7 +6448,8 @@ void Assembler::evpbroadcastss(XMMRegister dst, Address src, int vector_len) {
// duplicate double precision data from src into programmed locations in dest : requires AVX512VL
void Assembler::evpbroadcastsd(XMMRegister dst, XMMRegister src, int vector_len) {
assert(VM_Version::supports_evex(), "");
- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_rex_vex_w_reverted();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x19);
emit_int8((unsigned char)(0xC0 | encode));
@@ -6139,8 +6459,9 @@ void Assembler::evpbroadcastsd(XMMRegister dst, Address src, int vector_len) {
assert(VM_Version::supports_evex(), "");
assert(dst != xnoreg, "sanity");
InstructionMark im(this);
- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ InstructionAttr attributes(vector_len, /* vex_w */ VM_Version::supports_evex(), /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
+ attributes.set_rex_vex_w_reverted();
// swap src<->dst for encoding
vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
emit_int8(0x19);
@@ -6154,12 +6475,9 @@ void Assembler::evpbroadcastsd(XMMRegister dst, Address src, int vector_len) {
void Assembler::evpbroadcastb(XMMRegister dst, Register src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
- if (attributes.is_evex_instruction()) {
- emit_int8(0x7A);
- } else {
- emit_int8(0x78);
- }
+ emit_int8(0x7A);
emit_int8((unsigned char)(0xC0 | encode));
}
@@ -6167,12 +6485,9 @@ void Assembler::evpbroadcastb(XMMRegister dst, Register src, int vector_len) {
void Assembler::evpbroadcastw(XMMRegister dst, Register src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
- if (attributes.is_evex_instruction()) {
- emit_int8(0x7B);
- } else {
- emit_int8(0x79);
- }
+ emit_int8(0x7B);
emit_int8((unsigned char)(0xC0 | encode));
}
@@ -6180,12 +6495,9 @@ void Assembler::evpbroadcastw(XMMRegister dst, Register src, int vector_len) {
void Assembler::evpbroadcastd(XMMRegister dst, Register src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
- if (attributes.is_evex_instruction()) {
- emit_int8(0x7C);
- } else {
- emit_int8(0x58);
- }
+ emit_int8(0x7C);
emit_int8((unsigned char)(0xC0 | encode));
}
@@ -6193,12 +6505,9 @@ void Assembler::evpbroadcastd(XMMRegister dst, Register src, int vector_len) {
void Assembler::evpbroadcastq(XMMRegister dst, Register src, int vector_len) {
assert(VM_Version::supports_evex(), "");
InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true);
+ attributes.set_is_evex_instruction();
int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
- if (attributes.is_evex_instruction()) {
- emit_int8(0x7C);
- } else {
- emit_int8(0x59);
- }
+ emit_int8(0x7C);
emit_int8((unsigned char)(0xC0 | encode));
}
@@ -6230,7 +6539,6 @@ void Assembler::vzeroupper() {
emit_int8(0x77);
}
-
#ifndef _LP64
// 32bit only pieces of the assembler
@@ -6797,7 +7105,10 @@ void Assembler::evex_prefix(bool vex_r, bool vex_b, bool vex_x, bool evex_r, boo
emit_int8(byte3);
// P2: byte 4 as zL'Lbv'aaa
- int byte4 = (_attributes->is_no_reg_mask()) ? 0 : 1; // kregs are implemented in the low 3 bits as aaa (hard code k1, it will be initialized for now)
+ // kregs are implemented in the low 3 bits as aaa (hard code k1, it will be initialized for now)
+ int byte4 = (_attributes->is_no_reg_mask()) ?
+ 0 :
+ _attributes->get_embedded_opmask_register_specifier();
// EVEX.v` for extending EVEX.vvvv or VIDX
byte4 |= (evex_v ? 0: EVEX_V);
// third EXEC.b for broadcast actions
@@ -6853,6 +7164,9 @@ void Assembler::vex_prefix(Address adr, int nds_enc, int xreg_enc, VexSimdPrefix
attributes->set_is_evex_instruction();
evex_prefix(vex_r, vex_b, vex_x, evex_r, evex_v, nds_enc, pre, opc);
} else {
+ if (UseAVX > 2 && attributes->is_rex_vex_w_reverted()) {
+ attributes->set_rex_vex_w(false);
+ }
vex_prefix(vex_r, vex_b, vex_x, nds_enc, pre, opc);
}
}
@@ -6912,6 +7226,9 @@ int Assembler::vex_prefix_and_encode(int dst_enc, int nds_enc, int src_enc, VexS
attributes->set_is_evex_instruction();
evex_prefix(vex_r, vex_b, vex_x, evex_r, evex_v, nds_enc, pre, opc);
} else {
+ if (UseAVX > 2 && attributes->is_rex_vex_w_reverted()) {
+ attributes->set_rex_vex_w(false);
+ }
vex_prefix(vex_r, vex_b, vex_x, nds_enc, pre, opc);
}
@@ -6966,6 +7283,21 @@ void Assembler::vpblendd(XMMRegister dst, XMMRegister nds, XMMRegister src1, XMM
emit_int8((unsigned char)(0xF0 & src2_enc<<4));
}
+void Assembler::shlxl(Register dst, Register src1, Register src2) {
+ assert(VM_Version::supports_bmi2(), "");
+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(dst->encoding(), src2->encoding(), src1->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8((unsigned char)0xF7);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
+void Assembler::shlxq(Register dst, Register src1, Register src2) {
+ assert(VM_Version::supports_bmi2(), "");
+ InstructionAttr attributes(AVX_128bit, /* vex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(dst->encoding(), src2->encoding(), src1->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
+ emit_int8((unsigned char)0xF7);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
#ifndef _LP64
@@ -8185,6 +8517,15 @@ void Assembler::rorxq(Register dst, Register src, int imm8) {
emit_int8(imm8);
}
+void Assembler::rorxd(Register dst, Register src, int imm8) {
+ assert(VM_Version::supports_bmi2(), "bit manipulation instructions not supported");
+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false);
+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_F2, VEX_OPCODE_0F_3A, &attributes);
+ emit_int8((unsigned char)0xF0);
+ emit_int8((unsigned char)(0xC0 | encode));
+ emit_int8(imm8);
+}
+
void Assembler::sarq(Register dst, int imm8) {
assert(isShiftCount(imm8 >> 1), "illegal shift count");
int encode = prefixq_and_encode(dst->encoding());
diff --git a/hotspot/src/cpu/x86/vm/assembler_x86.hpp b/hotspot/src/cpu/x86/vm/assembler_x86.hpp
index fd3053d1e6f..56165382936 100644
--- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp
@@ -587,6 +587,16 @@ class Assembler : public AbstractAssembler {
#endif
};
+ enum ComparisonPredicate {
+ eq = 0,
+ lt = 1,
+ le = 2,
+ _false = 3,
+ neq = 4,
+ nlt = 5,
+ nle = 6,
+ _true = 7
+ };
// NOTE: The general philopsophy of the declarations here is that 64bit versions
@@ -606,6 +616,7 @@ private:
bool _legacy_mode_vl;
bool _legacy_mode_vlbw;
bool _is_managed;
+ bool _vector_masking; // For stub code use only
class InstructionAttr *_attributes;
@@ -813,6 +824,7 @@ private:
_legacy_mode_vl = (VM_Version::supports_avx512vl() == false);
_legacy_mode_vlbw = (VM_Version::supports_avx512vlbw() == false);
_is_managed = false;
+ _vector_masking = false;
_attributes = NULL;
}
@@ -823,6 +835,11 @@ private:
void clear_managed(void) { _is_managed = false; }
bool is_managed(void) { return _is_managed; }
+ // Following functions are for stub code use only
+ void set_vector_masking(void) { _vector_masking = true; }
+ void clear_vector_masking(void) { _vector_masking = false; }
+ bool is_vector_masking(void) { return _vector_masking; }
+
void lea(Register dst, Address src);
void mov(Register dst, Register src);
@@ -1048,6 +1065,8 @@ private:
void cvttss2sil(Register dst, XMMRegister src);
void cvttss2siq(Register dst, XMMRegister src);
+ void cvttpd2dq(XMMRegister dst, XMMRegister src);
+
// Divide Scalar Double-Precision Floating-Point Values
void divsd(XMMRegister dst, Address src);
void divsd(XMMRegister dst, XMMRegister src);
@@ -1335,6 +1354,7 @@ private:
void kmovbl(KRegister dst, Register src);
void kmovbl(Register dst, KRegister src);
void kmovwl(KRegister dst, Register src);
+ void kmovwl(KRegister dst, Address src);
void kmovwl(Register dst, KRegister src);
void kmovdl(KRegister dst, Register src);
void kmovdl(Register dst, KRegister src);
@@ -1344,11 +1364,18 @@ private:
void kmovql(KRegister dst, Register src);
void kmovql(Register dst, KRegister src);
+ void knotwl(KRegister dst, KRegister src);
+
void kortestbl(KRegister dst, KRegister src);
void kortestwl(KRegister dst, KRegister src);
void kortestdl(KRegister dst, KRegister src);
void kortestql(KRegister dst, KRegister src);
+ void ktestq(KRegister src1, KRegister src2);
+ void ktestd(KRegister src1, KRegister src2);
+
+ void ktestql(KRegister dst, KRegister src);
+
void movdl(XMMRegister dst, Register src);
void movdl(Register dst, XMMRegister src);
void movdl(XMMRegister dst, Address src);
@@ -1376,9 +1403,11 @@ private:
void evmovdqub(Address dst, XMMRegister src, int vector_len);
void evmovdqub(XMMRegister dst, Address src, int vector_len);
void evmovdqub(XMMRegister dst, XMMRegister src, int vector_len);
+ void evmovdqub(XMMRegister dst, KRegister mask, Address src, int vector_len);
void evmovdquw(Address dst, XMMRegister src, int vector_len);
+ void evmovdquw(Address dst, KRegister mask, XMMRegister src, int vector_len);
void evmovdquw(XMMRegister dst, Address src, int vector_len);
- void evmovdquw(XMMRegister dst, XMMRegister src, int vector_len);
+ void evmovdquw(XMMRegister dst, KRegister mask, Address src, int vector_len);
void evmovdqul(Address dst, XMMRegister src, int vector_len);
void evmovdqul(XMMRegister dst, Address src, int vector_len);
void evmovdqul(XMMRegister dst, XMMRegister src, int vector_len);
@@ -1517,6 +1546,7 @@ private:
// Pemutation of 64bit words
void vpermq(XMMRegister dst, XMMRegister src, int imm8, int vector_len);
void vpermq(XMMRegister dst, XMMRegister src, int imm8);
+ void vperm2i128(XMMRegister dst, XMMRegister nds, XMMRegister src, int imm8);
void pause();
@@ -1528,6 +1558,14 @@ private:
void vpcmpeqb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
void evpcmpeqb(KRegister kdst, XMMRegister nds, XMMRegister src, int vector_len);
void evpcmpeqb(KRegister kdst, XMMRegister nds, Address src, int vector_len);
+ void evpcmpeqb(KRegister kdst, KRegister mask, XMMRegister nds, Address src, int vector_len);
+
+ void evpcmpgtb(KRegister kdst, XMMRegister nds, Address src, int vector_len);
+ void evpcmpgtb(KRegister kdst, KRegister mask, XMMRegister nds, Address src, int vector_len);
+
+ void evpcmpuw(KRegister kdst, XMMRegister nds, XMMRegister src, ComparisonPredicate vcc, int vector_len);
+ void evpcmpuw(KRegister kdst, KRegister mask, XMMRegister nds, XMMRegister src, ComparisonPredicate of, int vector_len);
+ void evpcmpuw(KRegister kdst, XMMRegister nds, Address src, ComparisonPredicate vcc, int vector_len);
void pcmpeqw(XMMRegister dst, XMMRegister src);
void vpcmpeqw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
@@ -1571,7 +1609,11 @@ private:
void pmovzxbw(XMMRegister dst, XMMRegister src);
void pmovzxbw(XMMRegister dst, Address src);
- void vpmovzxbw(XMMRegister dst, Address src, int vector_len);
+ void vpmovzxbw( XMMRegister dst, Address src, int vector_len);
+ void evpmovzxbw(XMMRegister dst, KRegister mask, Address src, int vector_len);
+
+ void evpmovwb(Address dst, XMMRegister src, int vector_len);
+ void evpmovwb(Address dst, KRegister mask, XMMRegister src, int vector_len);
#ifndef _LP64 // no 32bit push/pop on amd64
void popl(Address dst);
@@ -1601,10 +1643,12 @@ private:
// Shuffle Bytes
void pshufb(XMMRegister dst, XMMRegister src);
void pshufb(XMMRegister dst, Address src);
+ void vpshufb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len);
// Shuffle Packed Doublewords
void pshufd(XMMRegister dst, XMMRegister src, int mode);
void pshufd(XMMRegister dst, Address src, int mode);
+ void vpshufd(XMMRegister dst, XMMRegister src, int mode, int vector_len);
// Shuffle Packed Low Words
void pshuflw(XMMRegister dst, XMMRegister src, int mode);
@@ -1656,6 +1700,7 @@ private:
#ifdef _LP64
void rorq(Register dst, int imm8);
void rorxq(Register dst, Register src, int imm8);
+ void rorxd(Register dst, Register src, int imm8);
#endif
void sahf();
@@ -1679,6 +1724,8 @@ private:
void setb(Condition cc, Register dst);
void palignr(XMMRegister dst, XMMRegister src, int imm8);
+ void vpalignr(XMMRegister dst, XMMRegister src1, XMMRegister src2, int imm8, int vector_len);
+
void pblendw(XMMRegister dst, XMMRegister src, int imm8);
void sha1rnds4(XMMRegister dst, XMMRegister src, int imm8);
@@ -1816,6 +1863,8 @@ private:
void vsubss(XMMRegister dst, XMMRegister nds, Address src);
void vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src);
+ void shlxl(Register dst, Register src1, Register src2);
+ void shlxq(Register dst, Register src1, Register src2);
//====================VECTOR ARITHMETIC=====================================
@@ -2050,7 +2099,6 @@ private:
void cmppd(XMMRegister dst, XMMRegister nds, XMMRegister src, int cop, int vector_len);
void vpblendd(XMMRegister dst, XMMRegister nds, XMMRegister src1, XMMRegister src2, int vector_len);
-
protected:
// Next instructions require address alignment 16 bytes SSE mode.
// They should be called only from corresponding MacroAssembler instructions.
@@ -2075,6 +2123,7 @@ public:
:
_avx_vector_len(vector_len),
_rex_vex_w(rex_vex_w),
+ _rex_vex_w_reverted(false),
_legacy_mode(legacy_mode),
_no_reg_mask(no_reg_mask),
_uses_vl(uses_vl),
@@ -2084,7 +2133,8 @@ public:
_evex_encoding(0),
_is_clear_context(false),
_is_extended_context(false),
- _current_assembler(NULL) {
+ _current_assembler(NULL),
+ _embedded_opmask_register_specifier(1) { // hard code k1, it will be initialized for now
if (UseAVX < 3) _legacy_mode = true;
}
@@ -2098,6 +2148,7 @@ public:
private:
int _avx_vector_len;
bool _rex_vex_w;
+ bool _rex_vex_w_reverted;
bool _legacy_mode;
bool _no_reg_mask;
bool _uses_vl;
@@ -2107,6 +2158,7 @@ private:
int _evex_encoding;
bool _is_clear_context;
bool _is_extended_context;
+ int _embedded_opmask_register_specifier;
Assembler *_current_assembler;
@@ -2114,6 +2166,7 @@ public:
// query functions for field accessors
int get_vector_len(void) const { return _avx_vector_len; }
bool is_rex_vex_w(void) const { return _rex_vex_w; }
+ bool is_rex_vex_w_reverted(void) { return _rex_vex_w_reverted; }
bool is_legacy_mode(void) const { return _legacy_mode; }
bool is_no_reg_mask(void) const { return _no_reg_mask; }
bool uses_vl(void) const { return _uses_vl; }
@@ -2123,10 +2176,17 @@ public:
int get_evex_encoding(void) const { return _evex_encoding; }
bool is_clear_context(void) const { return _is_clear_context; }
bool is_extended_context(void) const { return _is_extended_context; }
+ int get_embedded_opmask_register_specifier(void) const { return _embedded_opmask_register_specifier; }
// Set the vector len manually
void set_vector_len(int vector_len) { _avx_vector_len = vector_len; }
+ // Set revert rex_vex_w for avx encoding
+ void set_rex_vex_w_reverted(void) { _rex_vex_w_reverted = true; }
+
+ // Set rex_vex_w based on state
+ void set_rex_vex_w(bool state) { _rex_vex_w = state; }
+
// Set the instruction to be encoded in AVX mode
void set_is_legacy_mode(void) { _legacy_mode = true; }
@@ -2150,6 +2210,11 @@ public:
}
}
+ // Set embedded opmask register specifier.
+ void set_embedded_opmask_register_specifier(KRegister mask) {
+ _embedded_opmask_register_specifier = (*mask).encoding() & 0x7;
+ }
+
};
#endif // CPU_X86_VM_ASSEMBLER_X86_HPP
diff --git a/hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp b/hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp
index 3fbd57c5ca3..6d91d1948e9 100644
--- a/hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -169,18 +169,18 @@ void FpuStackSim::clear() {
intArray* FpuStackSim::write_state() {
intArray* res = new intArray(1 + FrameMap::nof_fpu_regs);
- (*res)[0] = stack_size();
+ res->append(stack_size());
for (int i = 0; i < FrameMap::nof_fpu_regs; i++) {
- (*res)[1 + i] = regs_at(i);
+ res->append(regs_at(i));
}
return res;
}
void FpuStackSim::read_state(intArray* fpu_stack_state) {
- _stack_size = (*fpu_stack_state)[0];
+ _stack_size = fpu_stack_state->at(0);
for (int i = 0; i < FrameMap::nof_fpu_regs; i++) {
- set_regs_at(i, (*fpu_stack_state)[1 + i]);
+ set_regs_at(i, fpu_stack_state->at(1 + i));
}
}
diff --git a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
index c23ebaad86f..3a9bf0a6d2f 100644
--- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
@@ -2365,13 +2365,8 @@ void LIR_Assembler::intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, L
} else if (value->is_double_fpu()) {
assert(value->fpu_regnrLo() == 0 && dest->fpu_regnrLo() == 0, "both must be on TOS");
switch(code) {
- case lir_log10 : __ flog10() ; break;
case lir_abs : __ fabs() ; break;
case lir_sqrt : __ fsqrt(); break;
- case lir_tan :
- // Should consider not saving rbx, if not necessary
- __ trigfunc('t', op->as_Op2()->fpu_stack_size());
- break;
default : ShouldNotReachHere();
}
} else {
@@ -3886,6 +3881,10 @@ void LIR_Assembler::membar_storeload() {
__ membar(Assembler::Membar_mask_bits(Assembler::StoreLoad));
}
+void LIR_Assembler::on_spin_wait() {
+ __ pause ();
+}
+
void LIR_Assembler::get_thread(LIR_Opr result_reg) {
assert(result_reg->is_register(), "check");
#ifdef _LP64
diff --git a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
index 20c19325463..26488c92dc0 100644
--- a/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -813,7 +813,8 @@ void LIRGenerator::do_MathIntrinsic(Intrinsic* x) {
if (x->id() == vmIntrinsics::_dexp || x->id() == vmIntrinsics::_dlog ||
x->id() == vmIntrinsics::_dpow || x->id() == vmIntrinsics::_dcos ||
- x->id() == vmIntrinsics::_dsin) {
+ x->id() == vmIntrinsics::_dsin || x->id() == vmIntrinsics::_dtan ||
+ x->id() == vmIntrinsics::_dlog10) {
do_LibmIntrinsic(x);
return;
}
@@ -821,58 +822,17 @@ void LIRGenerator::do_MathIntrinsic(Intrinsic* x) {
LIRItem value(x->argument_at(0), this);
bool use_fpu = false;
- if (UseSSE >= 2) {
- switch(x->id()) {
- case vmIntrinsics::_dtan:
- case vmIntrinsics::_dlog10:
- use_fpu = true;
- break;
- }
- } else {
+ if (UseSSE < 2) {
value.set_destroys_register();
}
-
value.load_item();
LIR_Opr calc_input = value.result();
- LIR_Opr calc_input2 = NULL;
- if (x->id() == vmIntrinsics::_dpow) {
- LIRItem extra_arg(x->argument_at(1), this);
- if (UseSSE < 2) {
- extra_arg.set_destroys_register();
- }
- extra_arg.load_item();
- calc_input2 = extra_arg.result();
- }
LIR_Opr calc_result = rlock_result(x);
- // sin, cos, pow and exp need two free fpu stack slots, so register
- // two temporary operands
- LIR_Opr tmp1 = FrameMap::caller_save_fpu_reg_at(0);
- LIR_Opr tmp2 = FrameMap::caller_save_fpu_reg_at(1);
-
- if (use_fpu) {
- LIR_Opr tmp = FrameMap::fpu0_double_opr;
- int tmp_start = 1;
- if (calc_input2 != NULL) {
- __ move(calc_input2, tmp);
- tmp_start = 2;
- calc_input2 = tmp;
- }
- __ move(calc_input, tmp);
-
- calc_input = tmp;
- calc_result = tmp;
-
- tmp1 = FrameMap::caller_save_fpu_reg_at(tmp_start);
- tmp2 = FrameMap::caller_save_fpu_reg_at(tmp_start + 1);
- }
-
switch(x->id()) {
case vmIntrinsics::_dabs: __ abs (calc_input, calc_result, LIR_OprFact::illegalOpr); break;
case vmIntrinsics::_dsqrt: __ sqrt (calc_input, calc_result, LIR_OprFact::illegalOpr); break;
- case vmIntrinsics::_dtan: __ tan (calc_input, calc_result, tmp1, tmp2); break;
- case vmIntrinsics::_dlog10: __ log10(calc_input, calc_result, tmp1); break;
default: ShouldNotReachHere();
}
@@ -913,21 +873,28 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
result_reg = tmp;
switch(x->id()) {
case vmIntrinsics::_dexp:
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dexp() != NULL) {
__ call_runtime_leaf(StubRoutines::dexp(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dexp), getThreadTemp(), result_reg, cc->args());
}
break;
case vmIntrinsics::_dlog:
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dlog() != NULL) {
__ call_runtime_leaf(StubRoutines::dlog(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog), getThreadTemp(), result_reg, cc->args());
}
break;
+ case vmIntrinsics::_dlog10:
+ if (StubRoutines::dlog10() != NULL) {
+ __ call_runtime_leaf(StubRoutines::dlog10(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10), getThreadTemp(), result_reg, cc->args());
+ }
+ break;
case vmIntrinsics::_dpow:
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dpow() != NULL) {
__ call_runtime_leaf(StubRoutines::dpow(), getThreadTemp(), result_reg, cc->args());
} else {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dpow), getThreadTemp(), result_reg, cc->args());
@@ -947,18 +914,44 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dcos), getThreadTemp(), result_reg, cc->args());
}
break;
+ case vmIntrinsics::_dtan:
+ if (StubRoutines::dtan() != NULL) {
+ __ call_runtime_leaf(StubRoutines::dtan(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtan), getThreadTemp(), result_reg, cc->args());
+ }
+ break;
default: ShouldNotReachHere();
}
#else
switch (x->id()) {
case vmIntrinsics::_dexp:
- __ call_runtime_leaf(StubRoutines::dexp(), getThreadTemp(), result_reg, cc->args());
+ if (StubRoutines::dexp() != NULL) {
+ __ call_runtime_leaf(StubRoutines::dexp(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dexp), getThreadTemp(), result_reg, cc->args());
+ }
break;
case vmIntrinsics::_dlog:
+ if (StubRoutines::dlog() != NULL) {
__ call_runtime_leaf(StubRoutines::dlog(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog), getThreadTemp(), result_reg, cc->args());
+ }
+ break;
+ case vmIntrinsics::_dlog10:
+ if (StubRoutines::dlog10() != NULL) {
+ __ call_runtime_leaf(StubRoutines::dlog10(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10), getThreadTemp(), result_reg, cc->args());
+ }
break;
case vmIntrinsics::_dpow:
+ if (StubRoutines::dpow() != NULL) {
__ call_runtime_leaf(StubRoutines::dpow(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dpow), getThreadTemp(), result_reg, cc->args());
+ }
break;
case vmIntrinsics::_dsin:
if (StubRoutines::dsin() != NULL) {
@@ -974,6 +967,13 @@ void LIRGenerator::do_LibmIntrinsic(Intrinsic* x) {
__ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dcos), getThreadTemp(), result_reg, cc->args());
}
break;
+ case vmIntrinsics::_dtan:
+ if (StubRoutines::dtan() != NULL) {
+ __ call_runtime_leaf(StubRoutines::dtan(), getThreadTemp(), result_reg, cc->args());
+ } else {
+ __ call_runtime_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtan), getThreadTemp(), result_reg, cc->args());
+ }
+ break;
default: ShouldNotReachHere();
}
#endif // _LP64
@@ -1109,6 +1109,87 @@ void LIRGenerator::do_update_CRC32(Intrinsic* x) {
}
}
+void LIRGenerator::do_update_CRC32C(Intrinsic* x) {
+ Unimplemented();
+}
+
+void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) {
+ assert(UseVectorizedMismatchIntrinsic, "need AVX instruction support");
+
+ // Make all state_for calls early since they can emit code
+ LIR_Opr result = rlock_result(x);
+
+ LIRItem a(x->argument_at(0), this); // Object
+ LIRItem aOffset(x->argument_at(1), this); // long
+ LIRItem b(x->argument_at(2), this); // Object
+ LIRItem bOffset(x->argument_at(3), this); // long
+ LIRItem length(x->argument_at(4), this); // int
+ LIRItem log2ArrayIndexScale(x->argument_at(5), this); // int
+
+ a.load_item();
+ aOffset.load_nonconstant();
+ b.load_item();
+ bOffset.load_nonconstant();
+
+ long constant_aOffset = 0;
+ LIR_Opr result_aOffset = aOffset.result();
+ if (result_aOffset->is_constant()) {
+ constant_aOffset = result_aOffset->as_jlong();
+ result_aOffset = LIR_OprFact::illegalOpr;
+ }
+ LIR_Opr result_a = a.result();
+
+ long constant_bOffset = 0;
+ LIR_Opr result_bOffset = bOffset.result();
+ if (result_bOffset->is_constant()) {
+ constant_bOffset = result_bOffset->as_jlong();
+ result_bOffset = LIR_OprFact::illegalOpr;
+ }
+ LIR_Opr result_b = b.result();
+
+#ifndef _LP64
+ result_a = new_register(T_INT);
+ __ convert(Bytecodes::_l2i, a.result(), result_a);
+ result_b = new_register(T_INT);
+ __ convert(Bytecodes::_l2i, b.result(), result_b);
+#endif
+
+
+ LIR_Address* addr_a = new LIR_Address(result_a,
+ result_aOffset,
+ LIR_Address::times_1,
+ constant_aOffset,
+ T_BYTE);
+
+ LIR_Address* addr_b = new LIR_Address(result_b,
+ result_bOffset,
+ LIR_Address::times_1,
+ constant_bOffset,
+ T_BYTE);
+
+ BasicTypeList signature(4);
+ signature.append(T_ADDRESS);
+ signature.append(T_ADDRESS);
+ signature.append(T_INT);
+ signature.append(T_INT);
+ CallingConvention* cc = frame_map()->c_calling_convention(&signature);
+ const LIR_Opr result_reg = result_register_for(x->type());
+
+ LIR_Opr ptr_addr_a = new_pointer_register();
+ __ leal(LIR_OprFact::address(addr_a), ptr_addr_a);
+
+ LIR_Opr ptr_addr_b = new_pointer_register();
+ __ leal(LIR_OprFact::address(addr_b), ptr_addr_b);
+
+ __ move(ptr_addr_a, cc->at(0));
+ __ move(ptr_addr_b, cc->at(1));
+ length.load_item_force(cc->at(2));
+ log2ArrayIndexScale.load_item_force(cc->at(3));
+
+ __ call_runtime_leaf(StubRoutines::vectorizedMismatch(), getThreadTemp(), result_reg, cc->args());
+ __ move(result_reg, result);
+}
+
// _i2l, _i2f, _i2d, _l2i, _l2f, _l2d, _f2i, _f2l, _f2d, _d2i, _d2l, _d2f
// _i2b, _i2c, _i2s
LIR_Opr fixed_register_for(BasicType type) {
@@ -1261,7 +1342,7 @@ void LIRGenerator::do_NewObjectArray(NewObjectArray* x) {
void LIRGenerator::do_NewMultiArray(NewMultiArray* x) {
Values* dims = x->dims();
int i = dims->length();
- LIRItemList* items = new LIRItemList(dims->length(), NULL);
+ LIRItemList* items = new LIRItemList(i, i, NULL);
while (i-- > 0) {
LIRItem* size = new LIRItem(dims->at(i), this);
items->at_put(i, size);
diff --git a/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp b/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp
index c3108727fec..5c411814df7 100644
--- a/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp
@@ -67,7 +67,7 @@ void LinearScan::allocate_fpu_stack() {
// register information would be incorrect.
if (b->number_of_preds() > 1) {
int id = b->first_lir_instruction_id();
- BitMap regs(FrameMap::nof_fpu_regs);
+ ResourceBitMap regs(FrameMap::nof_fpu_regs);
regs.clear();
iw.walk_to(id); // walk after the first instruction (always a label) of the block
@@ -786,58 +786,6 @@ void FpuStackAllocator::handle_op2(LIR_Op2* op2) {
break;
}
- case lir_log10: {
- // log and log10 need one temporary fpu stack slot, so
- // there is one temporary registers stored in temp of the
- // operation. the stack allocator must guarantee that the stack
- // slots are really free, otherwise there might be a stack
- // overflow.
- assert(right->is_illegal(), "must be");
- assert(left->is_fpu_register(), "must be");
- assert(res->is_fpu_register(), "must be");
- assert(op2->tmp1_opr()->is_fpu_register(), "must be");
-
- insert_free_if_dead(op2->tmp1_opr());
- insert_free_if_dead(res, left);
- insert_exchange(left);
- do_rename(left, res);
-
- new_left = to_fpu_stack_top(res);
- new_res = new_left;
-
- op2->set_fpu_stack_size(sim()->stack_size());
- assert(sim()->stack_size() <= 7, "at least one stack slot must be free");
- break;
- }
-
-
- case lir_tan: {
- // sin, cos and exp need two temporary fpu stack slots, so there are two temporary
- // registers (stored in right and temp of the operation).
- // the stack allocator must guarantee that the stack slots are really free,
- // otherwise there might be a stack overflow.
- assert(left->is_fpu_register(), "must be");
- assert(res->is_fpu_register(), "must be");
- // assert(left->is_last_use(), "old value gets destroyed");
- assert(right->is_fpu_register(), "right is used as the first temporary register");
- assert(op2->tmp1_opr()->is_fpu_register(), "temp is used as the second temporary register");
- assert(fpu_num(left) != fpu_num(right) && fpu_num(right) != fpu_num(op2->tmp1_opr()) && fpu_num(op2->tmp1_opr()) != fpu_num(res), "need distinct temp registers");
-
- insert_free_if_dead(right);
- insert_free_if_dead(op2->tmp1_opr());
-
- insert_free_if_dead(res, left);
- insert_exchange(left);
- do_rename(left, res);
-
- new_left = to_fpu_stack_top(res);
- new_res = new_left;
-
- op2->set_fpu_stack_size(sim()->stack_size());
- assert(sim()->stack_size() <= 6, "at least two stack slots must be free");
- break;
- }
-
default: {
assert(false, "missed a fpu-operation");
}
@@ -1121,7 +1069,7 @@ bool FpuStackAllocator::merge_fpu_stack_with_successors(BlockBegin* block) {
// clean up stack first so that there are no dead values on the stack
if (ComputeExactFPURegisterUsage) {
FpuStackSim* cur_sim = sim();
- BitMap live_fpu_regs = block->sux_at(0)->fpu_register_usage();
+ ResourceBitMap live_fpu_regs = block->sux_at(0)->fpu_register_usage();
assert(live_fpu_regs.size() == FrameMap::nof_fpu_regs, "missing register usage");
merge_cleanup_fpu_stack(instrs, cur_sim, live_fpu_regs);
diff --git a/hotspot/src/cpu/x86/vm/compiledIC_x86.cpp b/hotspot/src/cpu/x86/vm/compiledIC_x86.cpp
index 865e149331c..6d4c06f19ff 100644
--- a/hotspot/src/cpu/x86/vm/compiledIC_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/compiledIC_x86.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,22 +31,6 @@
#include "runtime/mutexLocker.hpp"
#include "runtime/safepoint.hpp"
-// Release the CompiledICHolder* associated with this call site is there is one.
-void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- if (is_icholder_entry(call->destination())) {
- NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
- InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
- }
-}
-
-bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- return is_icholder_entry(call->destination());
-}
-
// ----------------------------------------------------------------------------
#define __ _masm.
diff --git a/hotspot/src/cpu/x86/vm/frame_x86.cpp b/hotspot/src/cpu/x86/vm/frame_x86.cpp
index d61ae16729c..ae8628c05d2 100644
--- a/hotspot/src/cpu/x86/vm/frame_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -95,7 +95,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// ok. adapter blobs never have a frame complete and are never ok.
if (!_cb->is_frame_complete_at(_pc)) {
- if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
+ if (_cb->is_compiled() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
return false;
}
}
@@ -220,13 +220,11 @@ bool frame::safe_for_sender(JavaThread *thread) {
return jcw_safe;
}
- if (sender_blob->is_nmethod()) {
- nmethod* nm = sender_blob->as_nmethod_or_null();
- if (nm != NULL) {
- if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
- nm->method()->is_method_handle_intrinsic()) {
- return false;
- }
+ CompiledMethod* nm = sender_blob->as_compiled_method_or_null();
+ if (nm != NULL) {
+ if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
+ nm->method()->is_method_handle_intrinsic()) {
+ return false;
}
}
@@ -234,7 +232,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// because the return address counts against the callee's frame.
if (sender_blob->frame_size() <= 0) {
- assert(!sender_blob->is_nmethod(), "should count return address at least");
+ assert(!sender_blob->is_compiled(), "should count return address at least");
return false;
}
@@ -243,7 +241,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
// should not be anything but the call stub (already covered), the interpreter (already covered)
// or an nmethod.
- if (!sender_blob->is_nmethod()) {
+ if (!sender_blob->is_compiled()) {
return false;
}
@@ -286,7 +284,7 @@ void frame::patch_pc(Thread* thread, address pc) {
assert(_pc == *pc_addr || pc == *pc_addr, "must be");
*pc_addr = pc;
_cb = CodeCache::find_blob(pc);
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
assert(original_pc == _pc, "expected original PC to be stored before patching");
_deopt_state = is_deoptimized;
@@ -372,7 +370,7 @@ frame frame::sender_for_entry_frame(RegisterMap* map) const {
// Verifies the calculated original PC of a deoptimization PC for the
// given unextended SP.
#ifdef ASSERT
-void frame::verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp) {
+void frame::verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp) {
frame fr;
// This is ugly but it's better than to change {get,set}_original_pc
@@ -381,7 +379,7 @@ void frame::verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp) {
fr._unextended_sp = unextended_sp;
address original_pc = nm->get_original_pc(&fr);
- assert(nm->insts_contains(original_pc), "original PC must be in nmethod");
+ assert(nm->insts_contains(original_pc), "original PC must be in CompiledMethod");
}
#endif
@@ -392,12 +390,14 @@ void frame::adjust_unextended_sp() {
// as any other call site. Therefore, no special action is needed when we are
// returning to any of these call sites.
- nmethod* sender_nm = (_cb == NULL) ? NULL : _cb->as_nmethod_or_null();
- if (sender_nm != NULL) {
- // If the sender PC is a deoptimization point, get the original PC.
- if (sender_nm->is_deopt_entry(_pc) ||
- sender_nm->is_deopt_mh_entry(_pc)) {
- DEBUG_ONLY(verify_deopt_original_pc(sender_nm, _unextended_sp));
+ if (_cb != NULL) {
+ CompiledMethod* sender_cm = _cb->as_compiled_method_or_null();
+ if (sender_cm != NULL) {
+ // If the sender PC is a deoptimization point, get the original PC.
+ if (sender_cm->is_deopt_entry(_pc) ||
+ sender_cm->is_deopt_mh_entry(_pc)) {
+ DEBUG_ONLY(verify_deopt_original_pc(sender_cm, _unextended_sp));
+ }
}
}
}
@@ -640,6 +640,7 @@ void frame::describe_pd(FrameValues& values, int frame_no) {
DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
DESCRIBE_FP_OFFSET(interpreter_frame_method);
+ DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
DESCRIBE_FP_OFFSET(interpreter_frame_cache);
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
diff --git a/hotspot/src/cpu/x86/vm/frame_x86.hpp b/hotspot/src/cpu/x86/vm/frame_x86.hpp
index b10f9ce37e6..dbfcaf70dc3 100644
--- a/hotspot/src/cpu/x86/vm/frame_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/frame_x86.hpp
@@ -70,7 +70,8 @@
// outgoing sp before a call to an invoked method
interpreter_frame_last_sp_offset = interpreter_frame_sender_sp_offset - 1,
interpreter_frame_method_offset = interpreter_frame_last_sp_offset - 1,
- interpreter_frame_mdp_offset = interpreter_frame_method_offset - 1,
+ interpreter_frame_mirror_offset = interpreter_frame_method_offset - 1,
+ interpreter_frame_mdp_offset = interpreter_frame_mirror_offset - 1,
interpreter_frame_cache_offset = interpreter_frame_mdp_offset - 1,
interpreter_frame_locals_offset = interpreter_frame_cache_offset - 1,
interpreter_frame_bcp_offset = interpreter_frame_locals_offset - 1,
@@ -124,7 +125,7 @@
#ifdef ASSERT
// Used in frame::sender_for_{interpreter,compiled}_frame
- static void verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp);
+ static void verify_deopt_original_pc(CompiledMethod* nm, intptr_t* unextended_sp);
#endif
public:
diff --git a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp
index 374d83ca5cd..0c968ce80cf 100644
--- a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp
+++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,7 +50,7 @@ inline void frame::init(intptr_t* sp, intptr_t* fp, address pc) {
_cb = CodeCache::find_blob(pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -72,10 +72,10 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
_cb = CodeCache::find_blob(pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
- assert(((nmethod*)_cb)->insts_contains(_pc), "original PC must be in nmethod");
+ assert(((CompiledMethod*)_cb)->insts_contains(_pc), "original PC must be in CompiledMethod");
_deopt_state = is_deoptimized;
} else {
if (_cb->is_deoptimization_stub()) {
@@ -106,7 +106,7 @@ inline frame::frame(intptr_t* sp, intptr_t* fp) {
_cb = CodeCache::find_blob(_pc);
adjust_unextended_sp();
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -184,6 +184,12 @@ inline Method** frame::interpreter_frame_method_addr() const {
return (Method**)addr_at(interpreter_frame_method_offset);
}
+// Mirror
+
+inline oop* frame::interpreter_frame_mirror_addr() const {
+ return (oop*)addr_at(interpreter_frame_mirror_offset);
+}
+
// top of expression stack
inline intptr_t* frame::interpreter_frame_tos_address() const {
intptr_t* last_sp = interpreter_frame_last_sp();
diff --git a/hotspot/src/cpu/x86/vm/globals_x86.hpp b/hotspot/src/cpu/x86/vm/globals_x86.hpp
index a8d36092b58..93aea2a18d7 100644
--- a/hotspot/src/cpu/x86/vm/globals_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/globals_x86.hpp
@@ -99,7 +99,14 @@ define_pd_global(bool, PreserveFramePointer, false);
define_pd_global(intx, InitArrayShortSize, 8*BytesPerLong);
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
develop(bool, IEEEPrecision, true, \
"Enables IEEE precision (for INTEL only)") \
@@ -194,9 +201,6 @@ define_pd_global(intx, InitArrayShortSize, 8*BytesPerLong);
product(bool, UseBMI2Instructions, false, \
"Use BMI2 instructions") \
\
- diagnostic(bool, UseLibmSinIntrinsic, true, \
- "Use Libm Sin Intrinsic") \
- \
- diagnostic(bool, UseLibmCosIntrinsic, true, \
- "Use Libm Cos Intrinsic")
+ diagnostic(bool, UseLibmIntrinsic, true, \
+ "Use Libm Intrinsics")
#endif // CPU_X86_VM_GLOBALS_X86_HPP
diff --git a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp
index f8578f9f420..15cf1f751a7 100644
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp
@@ -26,12 +26,12 @@
#include "interp_masm_x86.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
+#include "logging/log.hpp"
#include "oops/arrayOop.hpp"
#include "oops/markOop.hpp"
#include "oops/methodData.hpp"
#include "oops/method.hpp"
#include "prims/jvmtiExport.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "prims/jvmtiThreadState.hpp"
#include "runtime/basicLock.hpp"
#include "runtime/biasedLocking.hpp"
@@ -1953,7 +1953,7 @@ void InterpreterMacroAssembler::notify_method_entry() {
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
NOT_LP64(get_thread(rthread);)
get_method(rarg);
call_VM_leaf(
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_32.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_32.cpp
deleted file mode 100644
index 923e8fc39b5..00000000000
--- a/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_32.cpp
+++ /dev/null
@@ -1,4571 +0,0 @@
-/*
- * Copyright (c) 2015, Intel Corporation.
- * Intel Math Library (LIBM) Source Code
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "asm/assembler.hpp"
-#include "asm/assembler.inline.hpp"
-#include "runtime/stubRoutines.hpp"
-#include "macroAssembler_x86.hpp"
-
-#ifdef _MSC_VER
-#define ALIGNED_(x) __declspec(align(x))
-#else
-#define ALIGNED_(x) __attribute__ ((aligned(x)))
-#endif
-
-// The 32 bit code is at most SSE2 compliant
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - EXP()
-// ---------------------
-//
-// Description:
-// Let K = 64 (table size).
-// x x/log(2) n
-// e = 2 = 2 * T[j] * (1 + P(y))
-// where
-// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
-// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
-// j/K
-// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-// P(y) is a minimax polynomial approximation of exp(x)-1
-// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-// To avoid problems with arithmetic overflow and underflow,
-// n n1 n2
-// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-// where BIAS is a value of exponent bias.
-//
-// Special cases:
-// exp(NaN) = NaN
-// exp(+INF) = +INF
-// exp(-INF) = 0
-// exp(x) = 1 for subnormals
-// for finite argument, only exp(0)=1 is exact
-// For IEEE double
-// if x > 709.782712893383973096 then exp(x) overflow
-// if x < -745.133219101941108420 then exp(x) underflow
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _static_const_table[] =
-{
- 0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL, 0xffffffc0UL,
- 0x00000000UL, 0xffffffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL,
- 0x0000ffc0UL, 0x00000000UL, 0x00000000UL, 0x43380000UL, 0x00000000UL,
- 0x43380000UL, 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL,
- 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL,
- 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL,
- 0xfffffffeUL, 0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL,
- 0x3fa55555UL, 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
- 0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
- 0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
- 0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
- 0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
- 0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
- 0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
- 0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
- 0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
- 0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
- 0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
- 0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
- 0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
- 0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
- 0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
- 0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
- 0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
- 0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
- 0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
- 0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
- 0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
- 0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
- 0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
- 0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
- 0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
- 0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
- 0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
- 0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
- 0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
- 0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
- 0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
- 0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
- 0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
- 0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
- 0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
- 0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
- 0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
- 0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
- 0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
- 0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
- 0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
- 0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
- 0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
- 0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
- 0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
- 0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
- 0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
- 0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
- 0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
- 0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
- 0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
- 0x000fa7c1UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x7ff00000UL,
- 0x00000000UL, 0x00000000UL, 0xffffffffUL, 0x7fefffffUL, 0x00000000UL,
- 0x00100000UL
-};
-
-//registers,
-// input: (rbp + 8)
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, rbx (tmp)
-
-// Code generated by Intel C compiler for LIBM library
-
-void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
- Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
-
- assert_different_registers(tmp, eax, ecx, edx);
- jmp(start);
- address static_const_table = (address)_static_const_table;
-
- bind(start);
- subl(rsp, 120);
- movl(Address(rsp, 64), tmp);
- lea(tmp, ExternalAddress(static_const_table));
- movdqu(xmm0, Address(rsp, 128));
- unpcklpd(xmm0, xmm0);
- movdqu(xmm1, Address(tmp, 64)); // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
- movdqu(xmm6, Address(tmp, 48)); // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
- movdqu(xmm2, Address(tmp, 80)); // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
- movdqu(xmm3, Address(tmp, 96)); // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- movl(edx, 16527);
- subl(edx, eax);
- subl(eax, 15504);
- orl(edx, eax);
- cmpl(edx, INT_MIN);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
- mulpd(xmm1, xmm0);
- addpd(xmm1, xmm6);
- movapd(xmm7, xmm1);
- subpd(xmm1, xmm6);
- mulpd(xmm2, xmm1);
- movdqu(xmm4, Address(tmp, 128)); // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
- mulpd(xmm3, xmm1);
- movdqu(xmm5, Address(tmp, 144)); // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
- subpd(xmm0, xmm2);
- movdl(eax, xmm7);
- movl(ecx, eax);
- andl(ecx, 63);
- shll(ecx, 4);
- sarl(eax, 6);
- movl(edx, eax);
- movdqu(xmm6, Address(tmp, 16)); // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
- pand(xmm7, xmm6);
- movdqu(xmm6, Address(tmp, 32)); // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
- paddq(xmm7, xmm6);
- psllq(xmm7, 46);
- subpd(xmm0, xmm3);
- movdqu(xmm2, Address(tmp, ecx, Address::times_1, 160));
- mulpd(xmm4, xmm0);
- movapd(xmm6, xmm0);
- movapd(xmm1, xmm0);
- mulpd(xmm6, xmm6);
- mulpd(xmm0, xmm6);
- addpd(xmm5, xmm4);
- mulsd(xmm0, xmm6);
- mulpd(xmm6, Address(tmp, 112)); // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
- addsd(xmm1, xmm2);
- unpckhpd(xmm2, xmm2);
- mulpd(xmm0, xmm5);
- addsd(xmm1, xmm0);
- por(xmm2, xmm7);
- unpckhpd(xmm0, xmm0);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm6);
- addl(edx, 894);
- cmpl(edx, 1916);
- jcc (Assembler::above, L_2TAG_PACKET_1_0_2);
- mulsd(xmm0, xmm2);
- addsd(xmm0, xmm2);
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_1_0_2);
- fnstcw(Address(rsp, 24));
- movzwl(edx, Address(rsp, 24));
- orl(edx, 768);
- movw(Address(rsp, 28), edx);
- fldcw(Address(rsp, 28));
- movl(edx, eax);
- sarl(eax, 1);
- subl(edx, eax);
- movdqu(xmm6, Address(tmp, 0)); // 0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL
- pandn(xmm6, xmm2);
- addl(eax, 1023);
- movdl(xmm3, eax);
- psllq(xmm3, 52);
- por(xmm6, xmm3);
- addl(edx, 1023);
- movdl(xmm4, edx);
- psllq(xmm4, 52);
- movsd(Address(rsp, 8), xmm0);
- fld_d(Address(rsp, 8));
- movsd(Address(rsp, 16), xmm6);
- fld_d(Address(rsp, 16));
- fmula(1);
- faddp(1);
- movsd(Address(rsp, 8), xmm4);
- fld_d(Address(rsp, 8));
- fmulp(1);
- fstp_d(Address(rsp, 8));
- movsd(xmm0,Address(rsp, 8));
- fldcw(Address(rsp, 24));
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32752);
- cmpl(ecx, 32752);
- jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
- cmpl(ecx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
- jmp(L_2TAG_PACKET_2_0_2);
- cmpl(ecx, INT_MIN);
- jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
- cmpl(ecx, -1064950997);
- jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
- jcc(Assembler::greater, L_2TAG_PACKET_4_0_2);
- movl(edx, Address(rsp, 128));
- cmpl(edx ,-17155601);
- jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
- jmp(L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_3_0_2);
- movl(edx, 14);
- jmp(L_2TAG_PACKET_5_0_2);
-
- bind(L_2TAG_PACKET_4_0_2);
- movl(edx, 15);
-
- bind(L_2TAG_PACKET_5_0_2);
- movsd(Address(rsp, 0), xmm0);
- movsd(xmm0, Address(rsp, 128));
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_7_0_2);
- cmpl(eax, 2146435072);
- jcc(Assembler::greaterEqual, L_2TAG_PACKET_8_0_2);
- movl(eax, Address(rsp, 132));
- cmpl(eax, INT_MIN);
- jcc(Assembler::greaterEqual, L_2TAG_PACKET_9_0_2);
- movsd(xmm0, Address(tmp, 1208)); // 0xffffffffUL, 0x7fefffffUL
- mulsd(xmm0, xmm0);
- movl(edx, 14);
- jmp(L_2TAG_PACKET_5_0_2);
-
- bind(L_2TAG_PACKET_9_0_2);
- movsd(xmm0, Address(tmp, 1216));
- mulsd(xmm0, xmm0);
- movl(edx, 15);
- jmp(L_2TAG_PACKET_5_0_2);
-
- bind(L_2TAG_PACKET_8_0_2);
- movl(edx, Address(rsp, 128));
- cmpl(eax, 2146435072);
- jcc(Assembler::above, L_2TAG_PACKET_10_0_2);
- cmpl(edx, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_2);
- movl(eax, Address(rsp, 132));
- cmpl(eax, 2146435072);
- jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
- movsd(xmm0, Address(tmp, 1192)); // 0x00000000UL, 0x7ff00000UL
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_11_0_2);
- movsd(xmm0, Address(tmp, 1200)); // 0x00000000UL, 0x00000000UL
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_10_0_2);
- movsd(xmm0, Address(rsp, 128));
- addsd(xmm0, xmm0);
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_0_0_2);
- movl(eax, Address(rsp, 132));
- andl(eax, 2147483647);
- cmpl(eax, 1083179008);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
- movsd(xmm0, Address(rsp, 128));
- addsd(xmm0, Address(tmp, 1184)); // 0x00000000UL, 0x3ff00000UL
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movsd(Address(rsp, 48), xmm0);
- fld_d(Address(rsp, 48));
-
- bind(L_2TAG_PACKET_6_0_2);
- movl(tmp, Address(rsp, 64));
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - LOG()
-// ---------------------
-//
-// x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpss instruction (B0)
-// B = int((B0*2^7+0.5))/2^7
-//
-// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log(NaN) = quiet NaN, and raise invalid exception
-// log(+INF) = that INF
-// log(0) = -INF with divide-by-zero exception raised
-// log(1) = +0
-// log(x) = NaN with invalid exception raised if x < -0, including -INF
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _static_const_table_log[] =
-{
- 0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
- 0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
- 0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
- 0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
- 0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
- 0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
- 0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
- 0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
- 0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
- 0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
- 0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
- 0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
- 0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
- 0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
- 0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
- 0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
- 0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
- 0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
- 0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
- 0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
- 0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
- 0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
- 0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
- 0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
- 0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
- 0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
- 0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
- 0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
- 0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
- 0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
- 0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
- 0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
- 0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
- 0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
- 0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
- 0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
- 0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
- 0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
- 0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
- 0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
- 0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
- 0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
- 0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
- 0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
- 0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
- 0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
- 0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
- 0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
- 0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
- 0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
- 0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
- 0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
- 0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
- 0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
- 0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
- 0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
- 0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
- 0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
- 0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
- 0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
- 0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
- 0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
- 0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
- 0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
- 0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
- 0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
- 0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
- 0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
- 0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
- 0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
- 0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
- 0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
- 0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
- 0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
- 0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
- 0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
- 0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
- 0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
- 0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
- 0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
- 0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
- 0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
- 0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
- 0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
- 0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
- 0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
- 0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
- 0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
- 0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
- 0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
- 0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
- 0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
- 0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
- 0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
- 0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
- 0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
- 0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
- 0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
- 0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
- 0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
- 0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
- 0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
- 0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x80000000UL, 0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL,
- 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
- 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
- 0x00000000UL, 0xbfe00000UL, 0x00000000UL, 0xffffe000UL, 0x00000000UL,
- 0xffffe000UL
-};
-//registers,
-// input: xmm0
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, rbx (tmp)
-
-void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2;
- Label L_2TAG_PACKET_10_0_2, start;
-
- assert_different_registers(tmp, eax, ecx, edx);
- jmp(start);
- address static_const_table = (address)_static_const_table_log;
-
- bind(start);
- subl(rsp, 104);
- movl(Address(rsp, 40), tmp);
- lea(tmp, ExternalAddress(static_const_table));
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- xorpd(xmm3, xmm3);
- movl(edx, 30704);
- pinsrw(xmm3, edx, 3);
- movsd(xmm0, Address(rsp, 112));
- movapd(xmm1, xmm0);
- movl(ecx, 32768);
- movdl(xmm4, ecx);
- movsd(xmm5, Address(tmp, 2128)); // 0x00000000UL, 0xffffe000UL
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- psllq(xmm0, 5);
- movl(ecx, 16352);
- psrlq(xmm0, 34);
- rcpss(xmm0, xmm0);
- psllq(xmm1, 12);
- pshufd(xmm6, xmm5, 228);
- psrlq(xmm1, 12);
- subl(eax, 16);
- cmpl(eax, 32736);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
-
- bind(L_2TAG_PACKET_1_0_2);
- paddd(xmm0, xmm4);
- por(xmm1, xmm3);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm1);
- pand(xmm0, xmm6);
- subsd(xmm1, xmm5);
- mulpd(xmm5, xmm0);
- andl(eax, 32752);
- subl(eax, ecx);
- cvtsi2sdl(xmm7, eax);
- mulsd(xmm1, xmm0);
- movsd(xmm6, Address(tmp, 2064)); // 0xfefa3800UL, 0x3fa62e42UL
- movdqu(xmm3, Address(tmp, 2080)); // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
- subsd(xmm5, xmm2);
- andl(edx, 16711680);
- shrl(edx, 12);
- movdqu(xmm0, Address(tmp, edx));
- movdqu(xmm4, Address(tmp, 2096)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
- addsd(xmm1, xmm5);
- movdqu(xmm2, Address(tmp, 2112)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
- mulsd(xmm6, xmm7);
- pshufd(xmm5, xmm1, 68);
- mulsd(xmm7, Address(tmp, 2072)); // 0x93c76730UL, 0x3ceef357UL, 0x92492492UL, 0x3fc24924UL
- mulsd(xmm3, xmm1);
- addsd(xmm0, xmm6);
- mulpd(xmm4, xmm5);
- mulpd(xmm5, xmm5);
- pshufd(xmm6, xmm0, 228);
- addsd(xmm0, xmm1);
- addpd(xmm4, xmm2);
- mulpd(xmm3, xmm5);
- subsd(xmm6, xmm0);
- mulsd(xmm4, xmm1);
- pshufd(xmm2, xmm0, 238);
- addsd(xmm1, xmm6);
- mulsd(xmm5, xmm5);
- addsd(xmm7, xmm2);
- addpd(xmm4, xmm3);
- addsd(xmm1, xmm7);
- mulpd(xmm4, xmm5);
- addsd(xmm1, xmm4);
- pshufd(xmm5, xmm4, 238);
- addsd(xmm1, xmm5);
- addsd(xmm0, xmm1);
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_0_0_2);
- movsd(xmm0, Address(rsp, 112));
- movdqu(xmm1, xmm0);
- addl(eax, 16);
- cmpl(eax, 32768);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_3_0_2);
- cmpl(eax, 16);
- jcc(Assembler::below, L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_5_0_2);
- addsd(xmm0, xmm0);
- jmp(L_2TAG_PACKET_2_0_2);
-
- bind(L_2TAG_PACKET_6_0_2);
- jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
- cmpl(edx, 0);
- jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
- jmp(L_2TAG_PACKET_7_0_2);
-
- bind(L_2TAG_PACKET_3_0_2);
- movdl(edx, xmm1);
- psrlq(xmm1, 32);
- movdl(ecx, xmm1);
- addl(ecx, ecx);
- cmpl(ecx, -2097152);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_6_0_2);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
-
- bind(L_2TAG_PACKET_7_0_2);
- xorpd(xmm1, xmm1);
- xorpd(xmm0, xmm0);
- movl(eax, 32752);
- pinsrw(xmm1, eax, 3);
- movl(edx, 3);
- mulsd(xmm0, xmm1);
-
- bind(L_2TAG_PACKET_9_0_2);
- movsd(Address(rsp, 0), xmm0);
- movsd(xmm0, Address(rsp, 112));
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_10_0_2);
-
- bind(L_2TAG_PACKET_8_0_2);
- xorpd(xmm1, xmm1);
- xorpd(xmm0, xmm0);
- movl(eax, 49136);
- pinsrw(xmm0, eax, 3);
- divsd(xmm0, xmm1);
- movl(edx, 2);
- jmp(L_2TAG_PACKET_9_0_2);
-
- bind(L_2TAG_PACKET_4_0_2);
- movdl(edx, xmm1);
- psrlq(xmm1, 32);
- movdl(ecx, xmm1);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
- xorpd(xmm1, xmm1);
- movl(eax, 18416);
- pinsrw(xmm1, eax, 3);
- mulsd(xmm0, xmm1);
- movapd(xmm1, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- psllq(xmm0, 5);
- movl(ecx, 18416);
- psrlq(xmm0, 34);
- rcpss(xmm0, xmm0);
- psllq(xmm1, 12);
- pshufd(xmm6, xmm5, 228);
- psrlq(xmm1, 12);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movsd(Address(rsp, 24), xmm0);
- fld_d(Address(rsp, 24));
-
- bind(L_2TAG_PACKET_10_0_2);
- movl(tmp, Address(rsp, 40));
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - POW()
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// log2(x) calculation:
-//
-// Get B~1/mx based on the output of rcpps instruction (B0)
-// B = int((B0*LH*2^9+0.5))/2^9
-// LH is a short approximation for log2(e)
-//
-// Reduced argument, scaled by LH:
-// r=B*mx-LH (computed accurately in high and low parts)
-//
-// log2(x) result: k - log2(B) + p(r)
-// p(r) is a degree 8 polynomial
-// -log2(B) read from data table (high, low parts)
-// log2(x) is formed from high and low parts
-// For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
-// based om the same table design is performed.
-//
-// Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
-// to filter out all potential OF/UF cases.
-// exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
-// polynomial
-//
-// Special cases:
-// pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd
-// integer < 0.
-// pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and
-// not an odd integer.
-// pow(-0,y) = -0 for y an odd integer > 0.
-// pow(-0,y) = +0 for y > 0 and not an odd integer.
-// pow(-1,-INF) = NaN.
-// pow(+1,y) = NaN for any y, even a NaN.
-// pow(x,-0) = 1 for any x, even a NaN.
-// pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
-// finite non-integer y.
-// pow(x,-INF) = +INF for |x|<1.
-// pow(x,-INF) = +0 for |x|>1.
-// pow(x,+INF) = +0 for |x|<1.
-// pow(x,+INF) = +INF for |x|>1.
-// pow(-INF,y) = -0 for y an odd integer < 0.
-// pow(-INF,y) = +0 for y < 0 and not an odd integer.
-// pow(-INF,y) = -INF for y an odd integer > 0.
-// pow(-INF,y) = +INF for y > 0 and not an odd integer.
-// pow(+INF,y) = +0 for y <0.
-// pow(+INF,y) = +INF for y >0.
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _static_const_table_pow[] =
-{
- 0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL, 0xf8000000UL,
- 0xffffffffUL, 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0x3ff00000UL,
- 0x00000000UL, 0x00000000UL, 0x20000000UL, 0x3feff00aUL, 0x96621f95UL,
- 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL, 0xe5916f9eUL, 0xbe325278UL,
- 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL, 0x3e595fb7UL, 0xc0000000UL,
- 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL, 0xe0000000UL, 0x3fefb069UL,
- 0xad2880a7UL, 0xbe501230UL, 0x60000000UL, 0x3fefa08fUL, 0xc8e72420UL,
- 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL, 0xc30c4500UL, 0xbe5d6c75UL,
- 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL, 0x3e2e1318UL, 0xc0000000UL,
- 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL, 0x00000000UL, 0x3fef615cUL,
- 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL, 0x3fef519cUL, 0x65c5cd68UL,
- 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL, 0x46d1306cUL, 0xbe5a840eUL,
- 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL, 0x3e5071afUL, 0xa0000000UL,
- 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL, 0xa0000000UL, 0x3fef12d4UL,
- 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL, 0x3fef032fUL, 0xbc7247faUL,
- 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL, 0xbcaa1e46UL, 0xbe53bb3bUL,
- 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL, 0xbe54c619UL, 0x80000000UL,
- 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL, 0xe0000000UL, 0x3feec4d1UL,
- 0xec678f76UL, 0xbe369af6UL, 0x80000000UL, 0x3feeb547UL, 0x41301f55UL,
- 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL, 0x676da6bdUL, 0xbe4d8dd0UL,
- 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL, 0x3e51f991UL, 0xa0000000UL,
- 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL, 0x20000000UL, 0x3fee7752UL,
- 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL, 0x3fee67e1UL, 0xd75b5bf1UL,
- 0xbe449531UL, 0x80000000UL, 0x3fee5876UL, 0xbd423b8eUL, 0x3df54fe4UL,
- 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL, 0x3e54289cUL, 0x80000000UL,
- 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL, 0xa0000000UL, 0x3fee2a53UL,
- 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL, 0x3fee1afcUL, 0x0989328dUL,
- 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL, 0xee642abdUL, 0xbe425dd8UL,
- 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL, 0x3e526362UL, 0x20000000UL,
- 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL, 0xc0000000UL, 0x3fedddd4UL,
- 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL, 0x3fedce97UL, 0x0ecac52fUL,
- 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL, 0x124cb3b8UL, 0x3e257024UL,
- 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL, 0xbe2033eeUL, 0x20000000UL,
- 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL, 0xc0000000UL, 0x3fed91d3UL,
- 0xef8a552aUL, 0xbe543390UL, 0x40000000UL, 0x3fed82afUL, 0xb8e85204UL,
- 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL, 0x3d59fe08UL, 0xbe5db728UL,
- 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL, 0x3e58804bUL, 0xc0000000UL,
- 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL, 0x00000000UL, 0x3fed464fUL,
- 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL, 0x3fed3743UL, 0xb0b0a190UL,
- 0x3e598635UL, 0x80000000UL, 0x3fed283cUL, 0xe2113295UL, 0xbe5c1119UL,
- 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL, 0xbe492e9cUL, 0x60000000UL,
- 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL, 0x20000000UL, 0x3fecfb45UL,
- 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL, 0x3fecec51UL, 0x110f7dddUL,
- 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL, 0x7dd7d508UL, 0xbe5a8943UL,
- 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL, 0xbe50676aUL, 0x80000000UL,
- 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL, 0x60000000UL, 0x3fecb0b4UL,
- 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL, 0x3feca1d9UL, 0x38a6ec89UL,
- 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL, 0x3a0b7d8eUL, 0x3e53dbfdUL,
- 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL, 0xbe27c5c9UL, 0xc0000000UL,
- 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL, 0x60000000UL, 0x3fec669bUL,
- 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL, 0x3fec57d7UL, 0x40e5e7e8UL,
- 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL, 0x5602770fUL, 0xbe55219dUL,
- 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL, 0x3e5a5d25UL, 0x60000000UL,
- 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL, 0x80000000UL, 0x3fec1cf8UL,
- 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL, 0x3fec0e4cUL, 0x580798bdUL,
- 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL, 0xb8282df6UL, 0xbe46b874UL,
- 0x20000000UL, 0x3febf102UL, 0xe33a6729UL, 0x3e54963fUL, 0x00000000UL,
- 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL, 0x60000000UL, 0x3febd3caUL,
- 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL, 0x3febc535UL, 0xa335c5eeUL,
- 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL, 0x7325b04dUL, 0x3e42ba15UL,
- 0x60000000UL, 0x3feba819UL, 0x1564540fUL, 0x3e3a9f35UL, 0x40000000UL,
- 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL, 0xa0000000UL, 0x3feb8b0fUL,
- 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL, 0x3feb7c91UL, 0x6d6f1ea4UL,
- 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL, 0x5e80a1bfUL, 0x3e4ddbb6UL,
- 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL, 0x3e592877UL, 0xa0000000UL,
- 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL, 0xa0000000UL, 0x3feb42c6UL,
- 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL, 0x3feb345fUL, 0xa3e0cceeUL,
- 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL, 0x8e752b50UL, 0xbe3da3c2UL,
- 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL, 0x3e1fb481UL, 0xc0000000UL,
- 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL, 0x20000000UL, 0x3feafaeeUL,
- 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL, 0x3feaec9dUL, 0x3c3d640eUL,
- 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL, 0x8f97a715UL, 0x3e3a8ec5UL,
- 0x20000000UL, 0x3fead008UL, 0x23ab2839UL, 0x3e2fe98aUL, 0x40000000UL,
- 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL, 0xe0000000UL, 0x3feab384UL,
- 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL, 0x3feaa549UL, 0x7c7b0eeaUL,
- 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL, 0xf56f7013UL, 0x3e386200UL,
- 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL, 0xbe514af5UL, 0xe0000000UL,
- 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL, 0x60000000UL, 0x3fea6c89UL,
- 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL, 0x3fea5e64UL, 0x3f19d970UL,
- 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL, 0x09ea3e6bUL, 0x3e5065dcUL,
- 0x80000000UL, 0x3fea4226UL, 0x78df246cUL, 0x3e5e05f6UL, 0x40000000UL,
- 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL, 0x40000000UL, 0x3fea25faUL,
- 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL, 0x3fea17eaUL, 0x9436f40aUL,
- 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL, 0x4b5253b3UL, 0x3e46380bUL,
- 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL, 0xbe386f9bUL, 0x20000000UL,
- 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL, 0x60000000UL, 0x3fe9dfd6UL,
- 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL, 0x3fe9d1dcUL, 0xeabdff1dUL,
- 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL, 0xafd30e73UL, 0xbe585e63UL,
- 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL, 0xbe43e8f9UL, 0x20000000UL,
- 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL, 0x80000000UL, 0x3fe99a1cUL,
- 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL, 0x3fe98c37UL, 0x7c9a88fbUL,
- 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL, 0xda015741UL, 0xbe5d13baUL,
- 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL, 0x3e51b947UL, 0x00000000UL,
- 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL, 0x40000000UL, 0x3fe954cbUL,
- 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL, 0x3fe946faUL, 0xe63b3767UL,
- 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL, 0xe57cc2a9UL, 0x3e34eda3UL,
- 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL, 0x3e5766a0UL, 0xc0000000UL,
- 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL, 0x80000000UL, 0x3fe90fe1UL,
- 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL, 0x3fe90225UL, 0xdbd3f369UL,
- 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL, 0x1c9be989UL, 0xbe5e2b0aUL,
- 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL, 0x3e5c8618UL, 0xe0000000UL,
- 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL, 0x20000000UL, 0x3fe8cb5eUL,
- 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL, 0x3fe8bdb6UL, 0x49e58cc3UL,
- 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL, 0xa7cfeb8fUL, 0x3e56c412UL,
- 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL, 0x3e1429b8UL, 0x60000000UL,
- 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL, 0xc0000000UL, 0x3fe8873fUL,
- 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL, 0x3fe879acUL, 0x56aee828UL,
- 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL, 0x7ceab8ecUL, 0x3e493365UL,
- 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL, 0xbe4f7f25UL, 0x00000000UL,
- 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL, 0x40000000UL, 0x3fe84385UL,
- 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL, 0x3fe83605UL, 0xa670975aUL,
- 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL, 0xf61b77b2UL, 0xbe43a20aUL,
- 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL, 0x3e5e5fe5UL, 0xc0000000UL,
- 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL, 0xa0000000UL, 0x3fe8002dUL,
- 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL, 0x3fe7f2c1UL, 0x22a16f01UL,
- 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL, 0xc38cd451UL, 0x3e506963UL,
- 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL, 0x3e4503d7UL, 0x40000000UL,
- 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL, 0xa0000000UL, 0x3fe7bd37UL,
- 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL, 0x3fe7afdeUL, 0xe3b0be70UL,
- 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL, 0xaf9f193cUL, 0xbe5dff6cUL,
- 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL, 0xbe258ed0UL, 0xa0000000UL,
- 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL, 0x40000000UL, 0x3fe77aa2UL,
- 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL, 0x3fe76d5cUL, 0x7cb0b5e4UL,
- 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL, 0x2b1bc4adUL, 0xbe32e8bbUL,
- 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL, 0x3e41f57bUL, 0xc0000000UL,
- 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL, 0x60000000UL, 0x3fe7386cUL,
- 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL, 0x3fe72b39UL, 0x91d690f7UL,
- 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL, 0x627a2159UL, 0xbe4425d5UL,
- 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL, 0x3e422b7eUL, 0x60000000UL,
- 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL, 0xe0000000UL, 0x3fe6f694UL,
- 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL, 0x3fe6e975UL, 0x306d8894UL,
- 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL, 0x30bf24aaUL, 0xbe4650caUL,
- 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL, 0xbe5db007UL, 0xc0000000UL,
- 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL, 0xc0000000UL, 0x3fe6b51aUL,
- 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL, 0x3fe6a80dUL, 0xf3559341UL,
- 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL, 0xa885899eUL, 0xbe5c2011UL,
- 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL, 0x3e224a82UL, 0xa0000000UL,
- 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL, 0x00000000UL, 0x3fe673fdUL,
- 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL, 0x3fe66702UL, 0x5df10408UL,
- 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL, 0xa4070568UL, 0xbe40b12fUL,
- 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL, 0x3e5f5e8bUL, 0x00000000UL,
- 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL, 0xa0000000UL, 0x3fe6333aUL,
- 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL, 0x3fe62651UL, 0x6f538d61UL,
- 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL, 0x14344120UL, 0xbe529af6UL,
- 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL, 0xbe3e1e4fUL, 0x00000000UL,
- 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL, 0x80000000UL, 0x3fe5f2d2UL,
- 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL, 0x3fe5e5fbUL, 0xa4695699UL,
- 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL, 0x80d118aeUL, 0x3e456b61UL,
- 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL, 0x3e54dc29UL, 0x80000000UL,
- 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL, 0xe0000000UL, 0x3fe5b2c3UL,
- 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL, 0x3fe5a5feUL, 0x9292c7eaUL,
- 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL, 0x33b4d380UL, 0x3e5d6d93UL,
- 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL, 0x3e2fe961UL, 0xa0000000UL,
- 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL, 0xa0000000UL, 0x3fe5730dUL,
- 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL, 0x3fe5665aUL, 0x024acfeaUL,
- 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL, 0xcc9edd09UL, 0xbe325403UL,
- 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL, 0x3e5d500eUL, 0x60000000UL,
- 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL, 0xc0000000UL, 0x3fe533aeUL,
- 0x154b0287UL, 0xbe401571UL, 0xa0000000UL, 0x3fe5270cUL, 0x0673f401UL,
- 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL, 0x751b639cUL, 0x3e235269UL,
- 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL, 0x3ddec887UL, 0xc0000000UL,
- 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL, 0x60000000UL, 0x3fe4f4a6UL,
- 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL, 0x3fe4e815UL, 0xf33e2a76UL,
- 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL, 0x839f3e3eUL, 0x3e57db01UL,
- 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL, 0x3e535e0fUL, 0x00000000UL,
- 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL, 0xc0000000UL, 0x3fe4b5f3UL,
- 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL, 0x3fe4a973UL, 0x4aa7cd1dUL,
- 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL, 0x8e23025eUL, 0xbe5749f2UL,
- 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL, 0x3e360f39UL, 0x20000000UL,
- 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL, 0xc0000000UL, 0x3fe47795UL,
- 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL, 0x3fe46b26UL, 0x8f0e62aaUL,
- 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL, 0x5775c40cUL, 0xbe56aad4UL,
- 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL, 0x3e48bd71UL, 0x40000000UL,
- 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL, 0x80000000UL, 0x3fe4398bUL,
- 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL, 0x3fe42d2dUL, 0x388e4d2eUL,
- 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL, 0x6f797c18UL, 0x3e554b4cUL,
- 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL, 0xbe5b1112UL, 0x80000000UL,
- 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL, 0x40000000UL, 0x3fe3fbd4UL,
- 0x50201119UL, 0x3e40b701UL, 0x40000000UL, 0x3fe3ef86UL, 0x0a4db32cUL,
- 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL, 0x0c9c148bUL, 0xbe50c1f6UL,
- 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL, 0x3e533fa0UL, 0x00000000UL,
- 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL, 0x20000000UL, 0x3fe3be6fUL,
- 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL, 0x3fe3b231UL, 0x7f908258UL,
- 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL, 0x1a09af78UL, 0x3e08038bUL,
- 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL, 0xbe5dbe42UL, 0xe0000000UL,
- 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL, 0x20000000UL, 0x3fe3815bUL,
- 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL, 0x3fe3752dUL, 0x6182e429UL,
- 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL, 0xab6eb1aeUL, 0x3e5a2cc5UL,
- 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL, 0xbe5c5878UL, 0x40000000UL,
- 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL, 0x80000000UL, 0x3fe34497UL,
- 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL, 0x3fe3387aUL, 0xf872d68cUL,
- 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL, 0x087e97c2UL, 0x3e52842eUL,
- 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL, 0xbe503edfUL, 0x80000000UL,
- 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL, 0xa0000000UL, 0x3fe30823UL,
- 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL, 0x3fe2fc15UL, 0x855a7390UL,
- 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL, 0xa2898287UL, 0x3e3d22a2UL,
- 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL, 0xbe5aa5fdUL, 0x80000000UL,
- 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL, 0x60000000UL, 0x3fe2cbfeUL,
- 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL, 0x3fe2c000UL, 0x6b01bf10UL,
- 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL, 0xb07a1cdfUL, 0x3e5c5cdaUL,
- 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL, 0xbe5668b3UL, 0xc0000000UL,
- 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL, 0x00000000UL, 0x3fe29027UL,
- 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL, 0x3fe28438UL, 0x6433c727UL,
- 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL, 0x41782631UL, 0xbe30750cUL,
- 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL, 0xbe58290eUL, 0x40000000UL,
- 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL, 0x00000000UL, 0x3fe2549dUL,
- 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL, 0x3fe248bdUL, 0x4248b9fbUL,
- 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL, 0xf35cf82fUL, 0x3e561b71UL,
- 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL, 0x3e518fb9UL, 0x60000000UL,
- 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL, 0x40000000UL, 0x3fe2195fUL,
- 0x80943911UL, 0xbe07f819UL, 0x40000000UL, 0x3fe20d8fUL, 0x386f2d6cUL,
- 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL, 0xf29664acUL, 0xbe5eb815UL,
- 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL, 0x3e5e320cUL, 0x20000000UL,
- 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL, 0x40000000UL, 0x3fe1de6dUL,
- 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL, 0x3fe1d2acUL, 0x4ae0b55eUL,
- 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL, 0x28569a5eUL, 0x3e598a4fUL,
- 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL, 0x3e46130aUL, 0x20000000UL,
- 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL, 0x00000000UL, 0x3fe1a3c6UL,
- 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL, 0x3fe19813UL, 0x2f02b836UL,
- 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL, 0x28dec9d4UL, 0x3e09064fUL,
- 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL, 0x3e5b1f46UL, 0x40000000UL,
- 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL, 0x00000000UL, 0x3fe16969UL,
- 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL, 0x3fe15dc5UL, 0x73bad6f8UL,
- 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL, 0x5385769cUL, 0x3e5e8d76UL,
- 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL, 0x3e571d08UL, 0x20000000UL,
- 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL, 0x60000000UL, 0x3fe12f55UL,
- 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL, 0x3fe123c0UL, 0x403638e1UL,
- 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL, 0x557a092bUL, 0xbdd0116bUL,
- 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL, 0x3e4a61baUL, 0xc0000000UL,
- 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL, 0x20000000UL, 0x3fe0ea04UL,
- 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL, 0x3fe0d300UL, 0x23190e54UL,
- 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL, 0x1379a5a6UL, 0xbe51619dUL,
- 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL, 0x3e5cf019UL, 0xa0000000UL,
- 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL, 0x20000000UL, 0x3fe07762UL,
- 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL, 0x3fe06097UL, 0xfd9cf274UL,
- 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL, 0x3689b49dUL, 0xbe36d26dUL,
- 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL, 0xbe54cd08UL, 0xa0000000UL,
- 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL, 0x00000000UL, 0x3fe005daUL,
- 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL, 0x3fdfde8dUL, 0xad67766dUL,
- 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL, 0x644f4ae7UL, 0x3e1ee43bUL,
- 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL, 0x3e501a86UL, 0x40000000UL,
- 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL, 0x00000000UL, 0x3fdf2acdUL,
- 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL, 0x3fdefe13UL, 0x3b94305eUL,
- 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL, 0x5d95da61UL, 0xbe55c198UL,
- 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL, 0xbdd99a19UL, 0x00000000UL,
- 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL, 0x80000000UL, 0x3fde4c04UL,
- 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL, 0x3fde1fb6UL, 0x3dfbffcbUL,
- 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL, 0x7e1be4e0UL, 0xbe5b8f8fUL,
- 0x40000000UL, 0x3fddc759UL, 0x46dae887UL, 0xbe350458UL, 0x80000000UL,
- 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL, 0x80000000UL, 0x3fdd6f50UL,
- 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL, 0x3fdd436bUL, 0xf0bccb32UL,
- 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL, 0x9bbfc779UL, 0xbe54a26aUL,
- 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL, 0x3e43c6b7UL, 0x40000000UL,
- 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL, 0x40000000UL, 0x3fdc94a7UL,
- 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL, 0x3fdc6929UL, 0xf0a8f95aUL,
- 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL, 0x6ee2693bUL, 0x3e0992e6UL,
- 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL, 0xbe2834b6UL, 0x40000000UL,
- 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL, 0x00000000UL, 0x3fdbbbffUL,
- 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL, 0x3fdb90e7UL, 0x479664c0UL,
- 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL, 0x5004975bUL, 0xbe55258fUL,
- 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL, 0xbe588407UL, 0xc0000000UL,
- 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL, 0x80000000UL, 0x3fdae54eUL,
- 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL, 0x3fdaba9aUL, 0xe19d0913UL,
- 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL, 0x43cfd006UL, 0xbe4cfdebUL,
- 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL, 0x3e5e47a8UL, 0xc0000000UL,
- 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL, 0xc0000000UL, 0x3fda108cUL,
- 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL, 0x3fd9e63aUL, 0x396f8f2cUL,
- 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL, 0xe32b25ddUL, 0x3e5c3a54UL,
- 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL, 0xbe457925UL, 0x80000000UL,
- 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL, 0x00000000UL, 0x3fd93db1UL,
- 0xd7449365UL, 0x3e306419UL, 0x80000000UL, 0x3fd913beUL, 0x1746e791UL,
- 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL, 0xf3a9028bUL, 0xbe5041b9UL,
- 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL, 0xbe26e20aUL, 0x40000000UL,
- 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL, 0x80000000UL, 0x3fd86cb2UL,
- 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL, 0x3fd8431eUL, 0xdeb39fabUL,
- 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL, 0x5d01cbe0UL, 0xbe5425b3UL,
- 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL, 0x3e146fa8UL, 0x80000000UL,
- 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL, 0xc0000000UL, 0x3fd79d88UL,
- 0x8606c236UL, 0x3e423a08UL, 0x80000000UL, 0x3fd77451UL, 0x8fd1e1b7UL,
- 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL, 0xe491456aUL, 0x3e42c1caUL,
- 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL, 0x3e36a69aUL, 0x00000000UL,
- 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL, 0x00000000UL, 0x3fd6d02cUL,
- 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL, 0x3fd6a750UL, 0x1919fd61UL,
- 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL, 0xaa7a994dUL, 0xbe3f3fbdUL,
- 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL, 0x3e33c550UL, 0x00000000UL,
- 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL, 0xc0000000UL, 0x3fd60493UL,
- 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL, 0x3fd5dc11UL, 0x1222bd5cUL,
- 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL, 0x6e8dc2d3UL, 0x3e5d4d79UL,
- 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL, 0xbe517303UL, 0x80000000UL,
- 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL, 0xc0000000UL, 0x3fd53ab8UL,
- 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL, 0x3fd5128eUL, 0xea902207UL,
- 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL, 0x9f911d79UL, 0x3e511735UL,
- 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL, 0xbe5b1643UL, 0x40000000UL,
- 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL, 0x80000000UL, 0x3fd47293UL,
- 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL, 0x3fd44abfUL, 0xe04042f5UL,
- 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL, 0x1d8bf2c8UL, 0x3e5d8810UL,
- 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL, 0xbe311454UL, 0xc0000000UL,
- 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL, 0x40000000UL, 0x3fd3ac1cUL,
- 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL, 0x3fd3849dUL, 0xd4e34b9eUL,
- 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL, 0x177204fbUL, 0xbe2b8cd7UL,
- 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL, 0xbe4356e1UL, 0x80000000UL,
- 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL, 0x00000000UL, 0x3fd2e74cUL,
- 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL, 0x3fd2c021UL, 0x516dab3fUL,
- 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL, 0x2bfb7313UL, 0x3e5674a2UL,
- 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL, 0x3e385d29UL, 0xc0000000UL,
- 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL, 0x00000000UL, 0x3fd2241cUL,
- 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL, 0x3fd1fd43UL, 0xa1543f71UL,
- 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL, 0x4ec8867cUL, 0x3df6a2dcUL,
- 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL, 0x3e41d9c0UL, 0x80000000UL,
- 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL, 0x40000000UL, 0x3fd16285UL,
- 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL, 0x3fd13bfeUL, 0xb9aec164UL,
- 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL, 0xd91e1316UL, 0xbe350630UL,
- 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL, 0x3e3f5219UL, 0x40000000UL,
- 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL, 0x00000000UL, 0x3fd0a281UL,
- 0x2a63447dUL, 0xbe541377UL, 0x80000000UL, 0x3fd07c49UL, 0xfac483b5UL,
- 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL, 0x36b8a570UL, 0xbe4fd4bdUL,
- 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL, 0xbe450388UL, 0x80000000UL,
- 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL, 0x80000000UL, 0x3fcfc811UL,
- 0x707475acUL, 0x3e38806eUL, 0x80000000UL, 0x3fcf7c3fUL, 0xc91817fcUL,
- 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL, 0xae05d5e9UL, 0xbe4919b8UL,
- 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL, 0xbe530b94UL, 0x00000000UL,
- 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL, 0x00000000UL, 0x3fce4e2dUL,
- 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL, 0x3fce02f5UL, 0x8abe2c2eUL,
- 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL, 0x1495450dUL, 0xbe0872ccUL,
- 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL, 0xbe4f59a0UL, 0x00000000UL,
- 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL, 0x00000000UL, 0x3fccd747UL,
- 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL, 0x3fcc8ca7UL, 0xd305b56cUL,
- 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL, 0x399a6910UL, 0xbe482a1cUL,
- 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL, 0xbe587372UL, 0x80000000UL,
- 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL, 0x00000000UL, 0x3fcb6355UL,
- 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL, 0x3fcb194aUL, 0x8416c0bcUL,
- 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL, 0x49f7f08fUL, 0x3e56da76UL,
- 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL, 0x3e5f390cUL, 0x00000000UL,
- 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL, 0x80000000UL, 0x3fc9f249UL,
- 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL, 0x3fc9a8d3UL, 0xde8795a6UL,
- 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL, 0x076bf41eUL, 0x3e5122feUL,
- 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL, 0x3e3dd064UL, 0x00000000UL,
- 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL, 0x80000000UL, 0x3fc8841aUL,
- 0xb2a96650UL, 0xbe575444UL, 0x80000000UL, 0x3fc83b34UL, 0x2376c0cbUL,
- 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL, 0xd8a0b653UL, 0xbe5181b6UL,
- 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL, 0xbe4a78b4UL, 0x00000000UL,
- 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL, 0x80000000UL, 0x3fc718bbUL,
- 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL, 0x3fc6d064UL, 0x3728b8cfUL,
- 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL, 0xc79a4067UL, 0x3e5c380fUL,
- 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL, 0x3e550a84UL, 0x80000000UL,
- 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL, 0x80000000UL, 0x3fc5b022UL,
- 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL, 0x3fc56858UL, 0x659b18beUL,
- 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL, 0x66ee3631UL, 0xbe57d769UL,
- 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL, 0x3e2427f7UL, 0x80000000UL,
- 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL, 0x00000000UL, 0x3fc44a44UL,
- 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL, 0x3fc40304UL, 0xcf1d3eabUL,
- 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL, 0x79aba3eaUL, 0xbdf1b7c8UL,
- 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL, 0xbe5130cfUL, 0x80000000UL,
- 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL, 0x00000000UL, 0x3fc2e716UL,
- 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL, 0x3fc2a05eUL, 0x6caed92eUL,
- 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL, 0x9cb5034eUL, 0xbe510e31UL,
- 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL, 0xbe540b43UL, 0x80000000UL,
- 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL, 0x00000000UL, 0x3fc1868eUL,
- 0x921f4106UL, 0xbe528e67UL, 0x80000000UL, 0x3fc1405cUL, 0x3969441eUL,
- 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL, 0xd941ef5bUL, 0x3e5f9079UL,
- 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL, 0xbe567691UL, 0x00000000UL,
- 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL, 0x00000000UL, 0x3fc028a2UL,
- 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL, 0x3fbfc5eaUL, 0x209897e5UL,
- 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL, 0x8458bd7bUL, 0x3e582831UL,
- 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL, 0xbe486b4aUL, 0x00000000UL,
- 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL, 0x00000000UL, 0x3fbd9a90UL,
- 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL, 0x3fbd103cUL, 0x73eb6ab7UL,
- 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL, 0x32ceaff5UL, 0xbe32dc5aUL,
- 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL, 0xbe4a71a4UL, 0x00000000UL,
- 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL, 0x00000000UL, 0x3fbae8eeUL,
- 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL, 0x3fba5f9aUL, 0x95ce1114UL,
- 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL, 0x6d7c0f78UL, 0x3e3abc2dUL,
- 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL, 0xbe566cbcUL, 0x00000000UL,
- 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL, 0x00000000UL, 0x3fb83c4aUL,
- 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL, 0x3fb7b3f4UL, 0x2193d81eUL,
- 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL, 0xdd70c122UL, 0x3e527a8cUL,
- 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL, 0xbe450393UL, 0x00000000UL,
- 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL, 0x00000000UL, 0x3fb59492UL,
- 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL, 0x3fb50d36UL, 0x950f9f45UL,
- 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL, 0x582cdcb1UL, 0x3e506d39UL,
- 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL, 0x3e4aa719UL, 0x00000000UL,
- 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL, 0x00000000UL, 0x3fb2f1b4UL,
- 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL, 0x3fb26b4eUL, 0x2fbfd7eaUL,
- 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL, 0x18913ccbUL, 0x3e465fc1UL,
- 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL, 0x3e042843UL, 0x00000000UL,
- 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL, 0x00000000UL, 0x3fb0539eUL,
- 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL, 0x3faf9c56UL, 0x1777f657UL,
- 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL, 0xc317b86aUL, 0xbe5a61e0UL,
- 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL, 0xbe41f64eUL, 0x00000000UL,
- 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL, 0x00000000UL, 0x3fab7480UL,
- 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL, 0x3faa6b78UL, 0x06a253f1UL,
- 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL, 0xa35f541bUL, 0x3e5a187aUL,
- 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL, 0xbe508150UL, 0x00000000UL,
- 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL, 0x00000000UL, 0x3fa64b10UL,
- 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL, 0x3fa543e2UL, 0x97506fefUL,
- 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL, 0xe75f7dd9UL, 0xbe388dd3UL,
- 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL, 0xbdea5177UL, 0x00000000UL,
- 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL, 0x00000000UL, 0x3fa12accUL,
- 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL, 0x3fa0256eUL, 0x7478da78UL,
- 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL, 0xf59cef7fUL, 0xbe539d0aUL,
- 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL, 0x3e53c2c8UL, 0x00000000UL,
- 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL, 0x00000000UL, 0x3f982724UL,
- 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL, 0x3f962000UL, 0x130d9356UL,
- 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL, 0x8f86f883UL, 0xbe513d0bUL,
- 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL, 0xbe534335UL, 0x00000000UL,
- 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL, 0x00000000UL, 0x3f8c1510UL,
- 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL, 0x3f880de0UL, 0x8a27857eUL,
- 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL, 0xda767328UL, 0x3e531b3dUL,
- 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL, 0xbe5f04e3UL, 0x00000000UL,
- 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL, 0x00000000UL, 0x3f6ffc40UL,
- 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL, 0x3f5ff6c0UL, 0x1ad218afUL,
- 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL,
- 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL, 0x00000000UL,
- 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL, 0x6dc96112UL, 0xbf836578UL,
- 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL,
- 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL,
- 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL, 0x9f95985aUL,
- 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL, 0x486ececbUL, 0x3fc4635eUL,
- 0x412055ccUL, 0xbdd61bb2UL, 0x00000000UL, 0xfffffff8UL, 0x00000000UL,
- 0xffffffffUL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL,
- 0xfa5abcbfUL, 0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL,
- 0x3ff0163dUL, 0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL,
- 0x0fc54eb6UL, 0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL,
- 0xbc719083UL, 0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL,
- 0xe86e7f85UL, 0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL,
- 0x3ff04e5fUL, 0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL,
- 0xa475b465UL, 0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL,
- 0xbc95cb7bUL, 0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL,
- 0x2b72a836UL, 0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL,
- 0x3ff08745UL, 0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL,
- 0x800a3fd1UL, 0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL,
- 0x3c914878UL, 0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL,
- 0x6cf9890fUL, 0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL,
- 0x3ff0c0f1UL, 0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL,
- 0x16e24f71UL, 0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL,
- 0xbc9bc14dUL, 0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL,
- 0x5fdfa9c5UL, 0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL,
- 0x3ff0fb66UL, 0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL,
- 0x1692fdd5UL, 0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL,
- 0xbc96c510UL, 0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL,
- 0xc06c31ccUL, 0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL,
- 0x3ff136a8UL, 0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL,
- 0x9af1369eUL, 0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL,
- 0xbc8b91e8UL, 0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL,
- 0x5471c3c2UL, 0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL,
- 0x3ff172b8UL, 0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL,
- 0xe2ac5a64UL, 0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL,
- 0xbc911023UL, 0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL,
- 0xeb6fcb75UL, 0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL,
- 0x3ff1af99UL, 0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL,
- 0x352ef607UL, 0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL,
- 0x3c900977UL, 0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL,
- 0x5eb44027UL, 0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL,
- 0x3ff1ed50UL, 0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL,
- 0xa097af5cUL, 0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL,
- 0x3c8dc775UL, 0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL,
- 0x917ddc96UL, 0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL,
- 0x3ff22bddUL, 0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL,
- 0xb6c70573UL, 0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL,
- 0x3c8acfccUL, 0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL,
- 0x711ece75UL, 0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL,
- 0x3ff26b45UL, 0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL,
- 0x05f9e76cUL, 0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL,
- 0xbc9a4c3aUL, 0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL,
- 0xf51fdee1UL, 0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL,
- 0x3ff2ab8aUL, 0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL,
- 0xd6381aa4UL, 0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL,
- 0xbc950145UL, 0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL,
- 0x1f641589UL, 0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL,
- 0x3ff2ecafUL, 0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL,
- 0x532bda93UL, 0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL,
- 0x3c86f46aUL, 0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL,
- 0xfc4cd831UL, 0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL,
- 0x3ff32eb8UL, 0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL,
- 0x843659a6UL, 0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL,
- 0xbc835a75UL, 0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL,
- 0xa2de883bUL, 0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL,
- 0x3ff371a7UL, 0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL,
- 0x9eceb23cUL, 0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL,
- 0xbc9e958dUL, 0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL,
- 0x34e59ff7UL, 0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL,
- 0x3ff3b57fUL, 0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL,
- 0x375d29c3UL, 0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL,
- 0x3c7fe8d0UL, 0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL,
- 0xdf1c5175UL, 0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL,
- 0x3ff3fa45UL, 0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL,
- 0xb6f4d048UL, 0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL,
- 0xbc5ef369UL, 0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL,
- 0xd950a897UL, 0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL,
- 0x3ff43ffaUL, 0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL,
- 0x04ef80d0UL, 0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL,
- 0xbc686419UL, 0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL,
- 0x668b3237UL, 0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL,
- 0x3ff486a2UL, 0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL,
- 0x5e499ea0UL, 0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL,
- 0x3c99cb62UL, 0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL,
- 0xd5362a27UL, 0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL,
- 0x3ff4ce41UL, 0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL,
- 0xbc6a7833UL, 0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL,
- 0xbc95257dUL, 0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL,
- 0x7f4531eeUL, 0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL,
- 0x3ff516daUL, 0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL,
- 0x43efef71UL, 0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL,
- 0xbc807abeUL, 0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL,
- 0xca5d920fUL, 0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL,
- 0x3ff56070UL, 0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL,
- 0x011d93adUL, 0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL,
- 0xbc90b98cUL, 0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL,
- 0x27ff07ccUL, 0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL,
- 0x3ff5ab07UL, 0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL,
- 0x4c233e1aUL, 0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL,
- 0x3c3c4b1bUL, 0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL,
- 0x15ad2148UL, 0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL,
- 0x3ff5f6a3UL, 0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL,
- 0x9b56de47UL, 0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL,
- 0x3c9e4b3eUL, 0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL,
- 0x1d1929fdUL, 0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL,
- 0x3ff64346UL, 0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL,
- 0xc9a73e09UL, 0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL,
- 0xbc9bb609UL, 0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL,
- 0xd44ca973UL, 0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL,
- 0x3ff690f4UL, 0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL,
- 0x13b26456UL, 0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL,
- 0x3c7a38f5UL, 0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL,
- 0xddd47645UL, 0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL,
- 0x3ff6dfb2UL, 0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL,
- 0x9e1ac8b2UL, 0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL,
- 0xbc883c0fUL, 0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL,
- 0xe8ec5f74UL, 0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL,
- 0x3ff72f82UL, 0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL,
- 0x6c65d53cUL, 0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL,
- 0x3c9047fdUL, 0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL,
- 0xb1ab6e09UL, 0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL,
- 0x3ff78069UL, 0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL,
- 0x62aadd3eUL, 0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL,
- 0xbc841577UL, 0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL,
- 0x0130c132UL, 0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL,
- 0x3ff7d26aUL, 0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL,
- 0xba15797eUL, 0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL,
- 0xbc807f11UL, 0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL,
- 0xadd106d9UL, 0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL,
- 0x3ff82589UL, 0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL,
- 0x31df2bd5UL, 0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL,
- 0xbc88d684UL, 0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL,
- 0x9b4492edUL, 0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL,
- 0x3ff879caUL, 0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL,
- 0xf37cb53aUL, 0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL,
- 0x3c9d5395UL, 0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL,
- 0xbad61778UL, 0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL,
- 0x3ff8cf32UL, 0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL,
- 0x6fc9b2e6UL, 0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL,
- 0x3c85cc13UL, 0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL,
- 0x0b91ffc6UL, 0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL,
- 0x3ff925c3UL, 0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL,
- 0x81b57ebcUL, 0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL,
- 0xbc8dc3d6UL, 0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL,
- 0x9a7670b3UL, 0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL,
- 0x3ff97d82UL, 0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL,
- 0xa24c78ecUL, 0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL,
- 0xbc9173bdUL, 0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL,
- 0x82a3f090UL, 0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL,
- 0x3ff9d674UL, 0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL,
- 0x78e64c6eUL, 0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL,
- 0xbc84a9ceUL, 0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL,
- 0xed8eb8bbUL, 0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL,
- 0x3ffa309bUL, 0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL,
- 0x589fb120UL, 0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL,
- 0xbc9d2f6eUL, 0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL,
- 0x1330b358UL, 0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL,
- 0x3ffa8bfeUL, 0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL,
- 0x0ef7fd31UL, 0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL,
- 0x3c889c31UL, 0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL,
- 0x3a3c2774UL, 0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL,
- 0x3ffae89fUL, 0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL,
- 0x0f315ecdUL, 0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL,
- 0xbc9bdef5UL, 0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL,
- 0xb84f15fbUL, 0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL,
- 0x3ffb4684UL, 0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL,
- 0xbbba6de3UL, 0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL,
- 0x3c92a8f3UL, 0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL,
- 0xf22749e4UL, 0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL,
- 0x3ffba5b0UL, 0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL,
- 0xc9696205UL, 0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL,
- 0x3c823dd0UL, 0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL,
- 0x5bd71e09UL, 0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL,
- 0x3ffc0628UL, 0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL,
- 0x895048ddUL, 0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL,
- 0xbc96e516UL, 0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL,
- 0x78fafb22UL, 0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL,
- 0x3ffc67f1UL, 0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL,
- 0xbe255559UL, 0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL,
- 0x3c71acbcUL, 0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL,
- 0xdcef9069UL, 0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL,
- 0x3ffccb0fUL, 0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL,
- 0x53829d72UL, 0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL,
- 0xbc9a08e9UL, 0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL,
- 0x2b08c968UL, 0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL,
- 0x3ffd2f87UL, 0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL,
- 0xbf5a1614UL, 0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL,
- 0x3c82ed02UL, 0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL,
- 0x16c98398UL, 0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL,
- 0x3ffd955dUL, 0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL,
- 0x696db532UL, 0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL,
- 0xbc9b76f1UL, 0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL,
- 0x641c0658UL, 0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL,
- 0x3ffdfc97UL, 0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL,
- 0xbd5c7f44UL, 0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL,
- 0xbc97b627UL, 0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL,
- 0xe78b3ff6UL, 0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL,
- 0x3ffe6539UL, 0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL,
- 0xca0c8de2UL, 0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL,
- 0xbc910894UL, 0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL,
- 0x867cca6eUL, 0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL,
- 0x3ffecf48UL, 0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL,
- 0xa487568dUL, 0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL,
- 0x3c9dc7f4UL, 0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL,
- 0x376bba97UL, 0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL,
- 0x3fff3ac9UL, 0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL,
- 0x2dd8a18bUL, 0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL,
- 0x3c9fa37bUL, 0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL,
- 0x02243c89UL, 0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL,
- 0x3fffa7c1UL, 0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL,
- 0x15098eb6UL, 0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL,
- 0x3c62eb74UL, 0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL,
- 0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
- 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
- 0x00000000UL, 0x00000000UL, 0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL,
- 0xbfe62e42UL, 0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL,
- 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL
-
-};
-
-//registers,
-// input: xmm0, xmm1
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// eax, edx, ecx, ebx
-
-// Code generated by Intel C compiler for LIBM library
-
-void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
- Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
- Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
- Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
- Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
- Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
- Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
- Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
- Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
- Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
- Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
- Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
- Label L_2TAG_PACKET_56_0_2, L_2TAG_PACKET_57_0_2, L_2TAG_PACKET_58_0_2, start;
-
- assert_different_registers(tmp, eax, ecx, edx);
-
- address static_const_table_pow = (address)_static_const_table_pow;
-
- bind(start);
- subl(rsp, 120);
- movl(Address(rsp, 64), tmp);
- lea(tmp, ExternalAddress(static_const_table_pow));
- movsd(xmm0, Address(rsp, 128));
- movsd(xmm1, Address(rsp, 136));
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- movl(ecx, 1069088768);
- movdl(xmm7, ecx);
- movsd(Address(rsp, 16), xmm1);
- xorpd(xmm1, xmm1);
- movl(edx, 30704);
- pinsrw(xmm1, edx, 3);
- movsd(Address(rsp, 8), xmm0);
- movdqu(xmm3, xmm0);
- movl(edx, 8192);
- movdl(xmm4, edx);
- movdqu(xmm6, Address(tmp, 8240));
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- psllq(xmm0, 5);
- movsd(xmm2, Address(tmp, 8256));
- psrlq(xmm0, 34);
- movl(edx, eax);
- andl(edx, 32752);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- rcpss(xmm0, xmm0);
- psllq(xmm3, 12);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- psrlq(xmm3, 12);
- movl(Address(rsp, 24), rsi);
- subl(eax, 16);
- cmpl(eax, 32736);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
- movl(rsi, 0);
-
- bind(L_2TAG_PACKET_1_0_2);
- mulss(xmm0, xmm7);
- movl(edx, -1);
- subl(ecx, 4);
- shll(edx);
- movdl(xmm5, edx);
- por(xmm3, xmm1);
- subl(eax, 16351);
- cmpl(eax, 1);
- jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm3);
-
- bind(L_2TAG_PACKET_3_0_2);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- subl(eax, 1);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
-
- bind(L_2TAG_PACKET_4_0_2);
- mulsd(xmm3, xmm0);
- movdqu(xmm1, Address(tmp, 8272));
- subsd(xmm5, xmm2);
- movdqu(xmm4, Address(tmp, 8288));
- movl(ecx, eax);
- sarl(eax, 31);
- addl(ecx, eax);
- xorl(eax, ecx);
- addl(eax, 1);
- bsrl(eax, eax);
- unpcklpd(xmm5, xmm3);
- movdqu(xmm6, Address(tmp, 8304));
- addsd(xmm3, xmm5);
- andl(edx, 16760832);
- shrl(edx, 10);
- addpd(xmm5, Address(tmp, edx, Address::times_1, -3616));
- movdqu(xmm0, Address(tmp, 8320));
- pshufd(xmm2, xmm3, 68);
- mulsd(xmm3, xmm3);
- mulpd(xmm1, xmm2);
- mulpd(xmm4, xmm2);
- addsd(xmm5, xmm7);
- mulsd(xmm2, xmm3);
- addpd(xmm6, xmm1);
- mulsd(xmm3, xmm3);
- addpd(xmm0, xmm4);
- movsd(xmm1, Address(rsp, 16));
- movzwl(ecx, Address(rsp, 22));
- pshufd(xmm7, xmm5, 238);
- movsd(xmm4, Address(tmp, 8368));
- mulpd(xmm6, xmm2);
- pshufd(xmm3, xmm3, 68);
- mulpd(xmm0, xmm2);
- shll(eax, 4);
- subl(eax, 15872);
- andl(ecx, 32752);
- addl(eax, ecx);
- mulpd(xmm3, xmm6);
- cmpl(eax, 624);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
- xorpd(xmm6, xmm6);
- movl(edx, 17080);
- pinsrw(xmm6, edx, 3);
- movdqu(xmm2, xmm1);
- pand(xmm4, xmm1);
- subsd(xmm1, xmm4);
- mulsd(xmm4, xmm5);
- addsd(xmm0, xmm7);
- mulsd(xmm1, xmm5);
- movdqu(xmm7, xmm6);
- addsd(xmm6, xmm4);
- addpd(xmm3, xmm0);
- movdl(edx, xmm6);
- subsd(xmm6, xmm7);
- pshufd(xmm0, xmm3, 238);
- subsd(xmm4, xmm6);
- addsd(xmm0, xmm3);
- movl(ecx, edx);
- andl(edx, 255);
- addl(edx, edx);
- movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
- addsd(xmm4, xmm1);
- mulsd(xmm2, xmm0);
- movdqu(xmm7, Address(tmp, 12480));
- movdqu(xmm3, Address(tmp, 12496));
- shll(ecx, 12);
- xorl(ecx, rsi);
- andl(ecx, -1048576);
- movdl(xmm6, ecx);
- addsd(xmm2, xmm4);
- movsd(xmm1, Address(tmp, 12512));
- pshufd(xmm0, xmm2, 68);
- pshufd(xmm4, xmm2, 68);
- mulpd(xmm0, xmm0);
- movl(rsi, Address(rsp, 24));
- mulpd(xmm7, xmm4);
- pshufd(xmm6, xmm6, 17);
- mulsd(xmm1, xmm2);
- mulsd(xmm0, xmm0);
- paddd(xmm5, xmm6);
- addpd(xmm3, xmm7);
- mulsd(xmm1, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulpd(xmm0, xmm3);
- addsd(xmm1, xmm6);
- pshufd(xmm3, xmm0, 238);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm3);
- addsd(xmm0, xmm5);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_7_0_2);
- movsd(xmm0, Address(rsp, 128));
- movsd(xmm1, Address(rsp, 136));
- mulsd(xmm0, xmm1);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_0_0_2);
- addl(eax, 16);
- movl(edx, 32752);
- andl(edx, eax);
- cmpl(edx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
- testl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_2);
-
- bind(L_2TAG_PACKET_10_0_2);
- movl(ecx, Address(rsp, 16));
- xorl(edx, edx);
- testl(ecx, ecx);
- movl(ecx, 1);
- cmovl(Assembler::notEqual, edx, ecx);
- orl(edx, Address(rsp, 20));
- cmpl(edx, 1072693248);
- jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
- movsd(xmm0, Address(rsp, 8));
- movsd(xmm3, Address(rsp, 8));
- movdl(edx, xmm3);
- psrlq(xmm3, 32);
- movdl(ecx, xmm3);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
- xorpd(xmm3, xmm3);
- movl(eax, 18416);
- pinsrw(xmm3, eax, 3);
- mulsd(xmm0, xmm3);
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm3, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- movl(ecx, 18416);
- psllq(xmm0, 5);
- movsd(xmm2, Address(tmp, 8256));
- psrlq(xmm0, 34);
- rcpss(xmm0, xmm0);
- psllq(xmm3, 12);
- movdqu(xmm6, Address(tmp, 8240));
- psrlq(xmm3, 12);
- mulss(xmm0, xmm7);
- movl(edx, -1024);
- movdl(xmm5, edx);
- por(xmm3, xmm1);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm3);
- movl(rsi, 0);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- andl(eax, 32752);
- subl(eax, 18416);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- jmp(L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_12_0_2);
- movl(ecx, Address(rsp, 16));
- xorl(edx, edx);
- testl(ecx, ecx);
- movl(ecx, 1);
- cmovl(Assembler::notEqual, edx, ecx);
- orl(edx, Address(rsp, 20));
- cmpl(edx, 1072693248);
- jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
- movsd(xmm0, Address(rsp, 8));
- movsd(xmm3, Address(rsp, 8));
- movdl(edx, xmm3);
- psrlq(xmm3, 32);
- movdl(ecx, xmm3);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
- xorpd(xmm3, xmm3);
- movl(eax, 18416);
- pinsrw(xmm3, eax, 3);
- mulsd(xmm0, xmm3);
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm3, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- movl(ecx, 18416);
- psllq(xmm0, 5);
- movsd(xmm2, Address(tmp, 8256));
- psrlq(xmm0, 34);
- rcpss(xmm0, xmm0);
- psllq(xmm3, 12);
- movdqu(xmm6, Address(tmp, 8240));
- psrlq(xmm3, 12);
- mulss(xmm0, xmm7);
- movl(edx, -1024);
- movdl(xmm5, edx);
- por(xmm3, xmm1);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm3);
- movl(rsi, INT_MIN);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- andl(eax, 32752);
- subl(eax, 18416);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- jmp(L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_5_0_2);
- cmpl(eax, 0);
- jcc(Assembler::less, L_2TAG_PACKET_13_0_2);
- cmpl(eax, 752);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_14_0_2);
-
- bind(L_2TAG_PACKET_15_0_2);
- addsd(xmm0, xmm7);
- movsd(xmm2, Address(tmp, 12544));
- addpd(xmm3, xmm0);
- xorpd(xmm6, xmm6);
- movl(eax, 17080);
- pinsrw(xmm6, eax, 3);
- pshufd(xmm0, xmm3, 238);
- addsd(xmm0, xmm3);
- movdqu(xmm3, xmm5);
- addsd(xmm5, xmm0);
- movdqu(xmm4, xmm2);
- subsd(xmm3, xmm5);
- movdqu(xmm7, xmm5);
- pand(xmm5, xmm2);
- movdqu(xmm2, xmm1);
- pand(xmm4, xmm1);
- subsd(xmm7, xmm5);
- addsd(xmm0, xmm3);
- subsd(xmm1, xmm4);
- mulsd(xmm4, xmm5);
- addsd(xmm0, xmm7);
- mulsd(xmm2, xmm0);
- movdqu(xmm7, xmm6);
- mulsd(xmm1, xmm5);
- addsd(xmm6, xmm4);
- movdl(eax, xmm6);
- subsd(xmm6, xmm7);
- addsd(xmm2, xmm1);
- movdqu(xmm7, Address(tmp, 12480));
- movdqu(xmm3, Address(tmp, 12496));
- subsd(xmm4, xmm6);
- pextrw(edx, xmm6, 3);
- movl(ecx, eax);
- andl(eax, 255);
- addl(eax, eax);
- movdqu(xmm5, Address(tmp, eax, Address::times_8, 8384));
- addsd(xmm2, xmm4);
- sarl(ecx, 8);
- movl(eax, ecx);
- sarl(ecx, 1);
- subl(eax, ecx);
- shll(ecx, 20);
- xorl(ecx, rsi);
- movdl(xmm6, ecx);
- movsd(xmm1, Address(tmp, 12512));
- andl(edx, 32767);
- cmpl(edx, 16529);
- jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
- pshufd(xmm0, xmm2, 68);
- pshufd(xmm4, xmm2, 68);
- mulpd(xmm0, xmm0);
- mulpd(xmm7, xmm4);
- pshufd(xmm6, xmm6, 17);
- mulsd(xmm1, xmm2);
- mulsd(xmm0, xmm0);
- paddd(xmm5, xmm6);
- addpd(xmm3, xmm7);
- mulsd(xmm1, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulpd(xmm0, xmm3);
- addsd(xmm1, xmm6);
- pshufd(xmm3, xmm0, 238);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- shll(eax, 4);
- xorpd(xmm4, xmm4);
- addl(eax, 16368);
- pinsrw(xmm4, eax, 3);
- addsd(xmm0, xmm1);
- movl(rsi, Address(rsp, 24));
- addsd(xmm0, xmm3);
- movdqu(xmm1, xmm0);
- addsd(xmm0, xmm5);
- mulsd(xmm0, xmm4);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_18_0_2);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_8_0_2);
- movsd(xmm1, Address(rsp, 16));
- movsd(xmm0, Address(rsp, 8));
- movdqu(xmm2, xmm0);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
- addsd(xmm0, xmm0);
- movdl(eax, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_20_0_2);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_20_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- movl(edx, 29);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_22_0_2);
- movsd(xmm0, Address(rsp, 16));
- addpd(xmm0, xmm0);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_19_0_2);
- movdl(eax, xmm1);
- movdqu(xmm2, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_23_0_2);
- pextrw(eax, xmm2, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
-
- bind(L_2TAG_PACKET_24_0_2);
- pextrw(eax, xmm0, 3);
- testl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
- testl(ecx, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_27_0_2);
- movsd(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
- testl(eax, 2);
- jcc(Assembler::notEqual, L_2TAG_PACKET_29_0_2);
- jmp(L_2TAG_PACKET_28_0_2);
-
- bind(L_2TAG_PACKET_25_0_2);
- shrl(ecx, 20);
- andl(ecx, 2047);
- cmpl(ecx, 1075);
- jcc(Assembler::above, L_2TAG_PACKET_28_0_2);
- jcc(Assembler::equal, L_2TAG_PACKET_30_0_2);
- cmpl(ecx, 1074);
- jcc(Assembler::above, L_2TAG_PACKET_27_0_2);
- cmpl(ecx, 1023);
- jcc(Assembler::below, L_2TAG_PACKET_28_0_2);
- movsd(xmm1, Address(rsp, 16));
- movl(eax, 17208);
- xorpd(xmm3, xmm3);
- pinsrw(xmm3, eax, 3);
- movdqu(xmm4, xmm3);
- addsd(xmm3, xmm1);
- subsd(xmm4, xmm3);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
- movdl(eax, xmm3);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
-
- bind(L_2TAG_PACKET_29_0_2);
- movsd(xmm1, Address(rsp, 16));
- pextrw(eax, xmm1, 3);
- andl(eax, 32768);
- jcc(Assembler::equal, L_2TAG_PACKET_18_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32768);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_28_0_2);
- movsd(xmm1, Address(rsp, 16));
- pextrw(eax, xmm1, 3);
- andl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
-
- bind(L_2TAG_PACKET_31_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32752);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_30_0_2);
- movsd(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
- jmp(L_2TAG_PACKET_29_0_2);
-
- bind(L_2TAG_PACKET_32_0_2);
- movdl(eax, xmm1);
- psrlq(xmm1, 20);
- movdl(edx, xmm1);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_33_0_2);
- movsd(xmm0, Address(rsp, 16));
- addsd(xmm0, xmm0);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_33_0_2);
- movsd(xmm0, Address(rsp, 8));
- pextrw(eax, xmm0, 3);
- cmpl(eax, 49136);
- jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
- movdl(ecx, xmm0);
- psrlq(xmm0, 20);
- movdl(edx, xmm0);
- orl(ecx, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32760);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_34_0_2);
- movsd(xmm1, Address(rsp, 16));
- andl(eax, 32752);
- subl(eax, 16368);
- pextrw(edx, xmm1, 3);
- xorpd(xmm0, xmm0);
- xorl(eax, edx);
- andl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
- movl(ecx, 32752);
- pinsrw(xmm0, ecx, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_35_0_2);
- movdl(eax, xmm1);
- cmpl(edx, 17184);
- jcc(Assembler::above, L_2TAG_PACKET_36_0_2);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
- testl(eax, 2);
- jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
- jmp(L_2TAG_PACKET_39_0_2);
-
- bind(L_2TAG_PACKET_36_0_2);
- testl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
- jmp(L_2TAG_PACKET_39_0_2);
-
- bind(L_2TAG_PACKET_9_0_2);
- movsd(xmm2, Address(rsp, 8));
- movdl(eax, xmm2);
- psrlq(xmm2, 31);
- movdl(ecx, xmm2);
- orl(eax, ecx);
- jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
- movsd(xmm1, Address(rsp, 16));
- pextrw(edx, xmm1, 3);
- movdl(eax, xmm1);
- movdqu(xmm2, xmm1);
- psrlq(xmm2, 32);
- movdl(ecx, xmm2);
- addl(ecx, ecx);
- orl(ecx, eax);
- jcc(Assembler::equal, L_2TAG_PACKET_40_0_2);
- andl(edx, 32752);
- cmpl(edx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_32_0_2);
- cmpl(edx, 17200);
- jcc(Assembler::above, L_2TAG_PACKET_38_0_2);
- cmpl(edx, 17184);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_35_0_2);
- cmpl(edx, 16368);
- jcc(Assembler::below, L_2TAG_PACKET_37_0_2);
- movl(eax, 17208);
- xorpd(xmm2, xmm2);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm4, xmm2);
- addsd(xmm2, xmm1);
- subsd(xmm4, xmm2);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32767);
- jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
- movdl(eax, xmm2);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
-
- bind(L_2TAG_PACKET_39_0_2);
- xorpd(xmm1, xmm1);
- movl(edx, 30704);
- pinsrw(xmm1, edx, 3);
- movsd(xmm2, Address(tmp, 8256));
- movsd(xmm4, Address(rsp, 8));
- pextrw(eax, xmm4, 3);
- movl(edx, 8192);
- movdl(xmm4, edx);
- andl(eax, 32767);
- subl(eax, 16);
- jcc(Assembler::less, L_2TAG_PACKET_12_0_2);
- movl(edx, eax);
- andl(edx, 32752);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- movl(rsi, INT_MIN);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_37_0_2);
- xorpd(xmm1, xmm1);
- movl(eax, 32752);
- pinsrw(xmm1, eax, 3);
- xorpd(xmm0, xmm0);
- mulsd(xmm0, xmm1);
- movl(edx, 28);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_38_0_2);
- xorpd(xmm1, xmm1);
- movl(edx, 30704);
- pinsrw(xmm1, edx, 3);
- movsd(xmm2, Address(tmp, 8256));
- movsd(xmm4, Address(rsp, 8));
- pextrw(eax, xmm4, 3);
- movl(edx, 8192);
- movdl(xmm4, edx);
- andl(eax, 32767);
- subl(eax, 16);
- jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
- movl(edx, eax);
- andl(edx, 32752);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- movl(rsi, 0);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_23_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_26_0_2);
- xorpd(xmm0, xmm0);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_13_0_2);
- addl(eax, 384);
- cmpl(eax, 0);
- jcc(Assembler::less, L_2TAG_PACKET_41_0_2);
- mulsd(xmm5, xmm1);
- addsd(xmm0, xmm7);
- shrl(rsi, 31);
- addpd(xmm3, xmm0);
- pshufd(xmm0, xmm3, 238);
- addsd(xmm3, xmm0);
- movsd(xmm4, Address(tmp, rsi, Address::times_8, 12528));
- mulsd(xmm1, xmm3);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- shll(rsi, 15);
- orl(eax, rsi);
- pinsrw(xmm0, eax, 3);
- addsd(xmm5, xmm1);
- movl(rsi, Address(rsp, 24));
- mulsd(xmm5, xmm4);
- addsd(xmm0, xmm5);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_41_0_2);
- movl(rsi, Address(rsp, 24));
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_40_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_42_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- movl(edx, 26);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_11_0_2);
- movsd(xmm1, Address(rsp, 16));
- movdqu(xmm2, xmm1);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
-
- bind(L_2TAG_PACKET_43_0_2);
- movdl(eax, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
- shrl(edx, 21);
- cmpl(edx, 1075);
- jcc(Assembler::above, L_2TAG_PACKET_44_0_2);
- jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
- cmpl(edx, 1023);
- jcc(Assembler::below, L_2TAG_PACKET_44_0_2);
- movsd(xmm1, Address(rsp, 16));
- movl(eax, 17208);
- xorpd(xmm3, xmm3);
- pinsrw(xmm3, eax, 3);
- movdqu(xmm4, xmm3);
- addsd(xmm3, xmm1);
- subsd(xmm4, xmm3);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
- movdl(eax, xmm3);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_44_0_2);
-
- bind(L_2TAG_PACKET_46_0_2);
- movsd(xmm0, Address(rsp, 8));
- testl(ecx, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_47_0_2);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_45_0_2);
- movsd(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
-
- bind(L_2TAG_PACKET_44_0_2);
- testl(ecx, INT_MIN);
- jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
- xorpd(xmm0, xmm0);
-
- bind(L_2TAG_PACKET_47_0_2);
- movl(eax, 16368);
- xorpd(xmm1, xmm1);
- pinsrw(xmm1, eax, 3);
- divsd(xmm1, xmm0);
- movdqu(xmm0, xmm1);
- movl(edx, 27);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_14_0_2);
- movsd(xmm2, Address(rsp, 8));
- movsd(xmm6, Address(rsp, 16));
- pextrw(eax, xmm2, 3);
- pextrw(edx, xmm6, 3);
- movl(ecx, 32752);
- andl(ecx, edx);
- cmpl(ecx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
- andl(eax, 32752);
- subl(eax, 16368);
- xorl(edx, eax);
- testl(edx, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_49_0_2);
-
- bind(L_2TAG_PACKET_50_0_2);
- movl(eax, 32736);
- pinsrw(xmm0, eax, 3);
- shrl(rsi, 16);
- orl(eax, rsi);
- pinsrw(xmm1, eax, 3);
- movl(rsi, Address(rsp, 24));
- mulsd(xmm0, xmm1);
-
- bind(L_2TAG_PACKET_17_0_2);
- movl(edx, 24);
-
- bind(L_2TAG_PACKET_21_0_2);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_49_0_2);
- movl(eax, 16);
- pinsrw(xmm0, eax, 3);
- mulsd(xmm0, xmm0);
- testl(rsi, INT_MIN);
- jcc(Assembler::equal, L_2TAG_PACKET_51_0_2);
- movsd(xmm2, Address(tmp, 12560));
- xorpd(xmm0, xmm2);
-
- bind(L_2TAG_PACKET_51_0_2);
- movl(rsi, Address(rsp, 24));
- movl(edx, 25);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_16_0_2);
- pextrw(ecx, xmm5, 3);
- pextrw(edx, xmm4, 3);
- movl(eax, -1);
- andl(ecx, 32752);
- subl(ecx, 16368);
- andl(edx, 32752);
- addl(edx, ecx);
- movl(ecx, -31);
- sarl(edx, 4);
- subl(ecx, edx);
- jcc(Assembler::lessEqual, L_2TAG_PACKET_52_0_2);
- cmpl(ecx, 20);
- jcc(Assembler::above, L_2TAG_PACKET_53_0_2);
- shll(eax);
-
- bind(L_2TAG_PACKET_52_0_2);
- movdl(xmm0, eax);
- psllq(xmm0, 32);
- pand(xmm0, xmm5);
- subsd(xmm5, xmm0);
- addsd(xmm5, xmm1);
- mulsd(xmm0, xmm4);
- mulsd(xmm5, xmm4);
- addsd(xmm0, xmm5);
-
- bind(L_2TAG_PACKET_53_0_2);
- movl(edx, 25);
- jmp(L_2TAG_PACKET_21_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movzwl(ecx, Address(rsp, 22));
- movl(edx, INT_MIN);
- movdl(xmm1, edx);
- xorpd(xmm7, xmm7);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- paddq(xmm1, xmm3);
- pand(xmm5, xmm1);
- andl(ecx, 32752);
- cmpl(ecx, 16560);
- jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- addl(eax, 16351);
- shrl(eax, 4);
- subl(eax, 1022);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- movsd(xmm4, Address(tmp, 0));
- mulsd(xmm3, xmm0);
- movsd(xmm6, Address(tmp, 0));
- subsd(xmm5, xmm2);
- movsd(xmm1, Address(tmp, 8));
- pshufd(xmm2, xmm3, 68);
- unpcklpd(xmm5, xmm3);
- addsd(xmm3, xmm5);
- movsd(xmm0, Address(tmp, 8));
- andl(edx, 16760832);
- shrl(edx, 10);
- addpd(xmm7, Address(tmp, edx, Address::times_1, -3616));
- mulsd(xmm4, xmm5);
- mulsd(xmm0, xmm5);
- mulsd(xmm6, xmm2);
- mulsd(xmm1, xmm2);
- movdqu(xmm2, xmm5);
- mulsd(xmm4, xmm5);
- addsd(xmm5, xmm0);
- movdqu(xmm0, xmm7);
- addsd(xmm2, xmm3);
- addsd(xmm7, xmm5);
- mulsd(xmm6, xmm2);
- subsd(xmm0, xmm7);
- movdqu(xmm2, xmm7);
- addsd(xmm7, xmm4);
- addsd(xmm0, xmm5);
- subsd(xmm2, xmm7);
- addsd(xmm4, xmm2);
- pshufd(xmm2, xmm5, 238);
- movdqu(xmm5, xmm7);
- addsd(xmm7, xmm2);
- addsd(xmm4, xmm0);
- movdqu(xmm0, Address(tmp, 8272));
- subsd(xmm5, xmm7);
- addsd(xmm6, xmm4);
- movdqu(xmm4, xmm7);
- addsd(xmm5, xmm2);
- addsd(xmm7, xmm1);
- movdqu(xmm2, Address(tmp, 8336));
- subsd(xmm4, xmm7);
- addsd(xmm6, xmm5);
- addsd(xmm4, xmm1);
- pshufd(xmm5, xmm7, 238);
- movdqu(xmm1, xmm7);
- addsd(xmm7, xmm5);
- subsd(xmm1, xmm7);
- addsd(xmm1, xmm5);
- movdqu(xmm5, Address(tmp, 8352));
- pshufd(xmm3, xmm3, 68);
- addsd(xmm6, xmm4);
- addsd(xmm6, xmm1);
- movdqu(xmm1, Address(tmp, 8304));
- mulpd(xmm0, xmm3);
- mulpd(xmm2, xmm3);
- pshufd(xmm4, xmm3, 68);
- mulpd(xmm3, xmm3);
- addpd(xmm0, xmm1);
- addpd(xmm5, xmm2);
- mulsd(xmm4, xmm3);
- movsd(xmm2, Address(tmp, 16));
- mulpd(xmm3, xmm3);
- movsd(xmm1, Address(rsp, 16));
- movzwl(ecx, Address(rsp, 22));
- mulpd(xmm0, xmm4);
- pextrw(eax, xmm7, 3);
- mulpd(xmm5, xmm4);
- mulpd(xmm0, xmm3);
- movsd(xmm4, Address(tmp, 8376));
- pand(xmm2, xmm7);
- addsd(xmm5, xmm6);
- subsd(xmm7, xmm2);
- addpd(xmm5, xmm0);
- andl(eax, 32752);
- subl(eax, 16368);
- andl(ecx, 32752);
- cmpl(ecx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
- addl(ecx, eax);
- cmpl(ecx, 16576);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_54_0_2);
- pshufd(xmm0, xmm5, 238);
- pand(xmm4, xmm1);
- movdqu(xmm3, xmm1);
- addsd(xmm5, xmm0);
- subsd(xmm1, xmm4);
- xorpd(xmm6, xmm6);
- movl(edx, 17080);
- pinsrw(xmm6, edx, 3);
- addsd(xmm7, xmm5);
- mulsd(xmm4, xmm2);
- mulsd(xmm1, xmm2);
- movdqu(xmm5, xmm6);
- mulsd(xmm3, xmm7);
- addsd(xmm6, xmm4);
- addsd(xmm1, xmm3);
- movdqu(xmm7, Address(tmp, 12480));
- movdl(edx, xmm6);
- subsd(xmm6, xmm5);
- movdqu(xmm3, Address(tmp, 12496));
- movsd(xmm2, Address(tmp, 12512));
- subsd(xmm4, xmm6);
- movl(ecx, edx);
- andl(edx, 255);
- addl(edx, edx);
- movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
- addsd(xmm4, xmm1);
- pextrw(edx, xmm6, 3);
- shrl(ecx, 8);
- movl(eax, ecx);
- shrl(ecx, 1);
- subl(eax, ecx);
- shll(ecx, 20);
- movdl(xmm6, ecx);
- pshufd(xmm0, xmm4, 68);
- pshufd(xmm1, xmm4, 68);
- mulpd(xmm0, xmm0);
- mulpd(xmm7, xmm1);
- pshufd(xmm6, xmm6, 17);
- mulsd(xmm2, xmm4);
- andl(edx, 32767);
- cmpl(edx, 16529);
- jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
- mulsd(xmm0, xmm0);
- paddd(xmm5, xmm6);
- addpd(xmm3, xmm7);
- mulsd(xmm2, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulpd(xmm0, xmm3);
- addsd(xmm2, xmm6);
- pshufd(xmm3, xmm0, 238);
- addl(eax, 1023);
- shll(eax, 20);
- orl(eax, rsi);
- movdl(xmm4, eax);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- addsd(xmm0, xmm2);
- psllq(xmm4, 32);
- addsd(xmm0, xmm3);
- movdqu(xmm1, xmm0);
- addsd(xmm0, xmm5);
- movl(rsi, Address(rsp, 24));
- mulsd(xmm0, xmm4);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_55_0_2);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_48_0_2);
- movl(rsi, Address(rsp, 24));
-
- bind(L_2TAG_PACKET_56_0_2);
- movsd(xmm0, Address(rsp, 8));
- movsd(xmm1, Address(rsp, 16));
- addsd(xmm1, xmm1);
- xorpd(xmm2, xmm2);
- movl(eax, 49136);
- pinsrw(xmm2, eax, 3);
- addsd(xmm2, xmm0);
- pextrw(eax, xmm2, 3);
- cmpl(eax, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_57_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32760);
- pinsrw(xmm0, eax, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_57_0_2);
- movdl(edx, xmm1);
- movdqu(xmm3, xmm1);
- psrlq(xmm3, 20);
- movdl(ecx, xmm3);
- orl(ecx, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_58_0_2);
- addsd(xmm1, xmm1);
- movdqu(xmm0, xmm1);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_58_0_2);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- pextrw(edx, xmm1, 3);
- xorpd(xmm0, xmm0);
- subl(eax, 16368);
- xorl(eax, edx);
- testl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
- movl(edx, 32752);
- pinsrw(xmm0, edx, 3);
- jmp(L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_54_0_2);
- pextrw(eax, xmm1, 3);
- pextrw(ecx, xmm2, 3);
- xorl(eax, ecx);
- testl(eax, 32768);
- jcc(Assembler::equal, L_2TAG_PACKET_50_0_2);
- jmp(L_2TAG_PACKET_49_0_2);
-
- bind(L_2TAG_PACKET_6_0_2);
- movl(tmp, Address(rsp, 64));
-
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - SIN()
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-//
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// If |x| < SNN (SNN meaning the smallest normal number), we
-// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-// do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-// sin(NaN) = quiet NaN, and raise invalid exception
-// sin(INF) = NaN and raise invalid exception
-// sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-ALIGNED_(8) juint _zero_none[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL
-};
-
-ALIGNED_(4) juint __4onpi_d[] =
-{
- 0x6dc9c883UL, 0x3ff45f30UL
-};
-
-ALIGNED_(4) juint _TWO_32H[] =
-{
- 0x00000000UL, 0x41f80000UL
-};
-
-ALIGNED_(4) juint _pi04_3d[] =
-{
- 0x54442d00UL, 0x3fe921fbUL, 0x98cc5180UL, 0x3ce84698UL, 0xcbb5bf6cUL,
- 0xb9dfc8f8UL
-};
-
-ALIGNED_(4) juint _pi04_5d[] =
-{
- 0x54400000UL, 0x3fe921fbUL, 0x1a600000UL, 0x3dc0b461UL, 0x2e000000UL,
- 0x3b93198aUL, 0x25200000UL, 0x396b839aUL, 0x533e63a0UL, 0x37027044UL
-};
-
-ALIGNED_(4) juint _SCALE[] =
-{
- 0x00000000UL, 0x32600000UL
-};
-
-ALIGNED_(4) juint _zeros[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL
-};
-
-ALIGNED_(4) juint _pi04_2d[] =
-{
- 0x54400000UL, 0x3fe921fbUL, 0x1a626331UL, 0x3dc0b461UL
-};
-
-ALIGNED_(4) juint _TWO_12H[] =
-{
- 0x00000000UL, 0x40b80000UL
-};
-
-ALIGNED_(2) jushort __4onpi_31l[] =
-{
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x836e, 0xa2f9,
- 0x40d8, 0x0000, 0x0000, 0x0000, 0x2a50, 0x9c88, 0x40b7, 0x0000, 0x0000, 0x0000,
- 0xabe8, 0xfe13, 0x4099, 0x0000, 0x0000, 0x0000, 0x6ee0, 0xfa9a, 0x4079, 0x0000,
- 0x0000, 0x0000, 0x9580, 0xdb62, 0x4058, 0x0000, 0x0000, 0x0000, 0x1c82, 0xc9e2,
- 0x403d, 0x0000, 0x0000, 0x0000, 0xb1c0, 0xff28, 0x4019, 0x0000, 0x0000, 0x0000,
- 0xef14, 0xaf7a, 0x3ffe, 0x0000, 0x0000, 0x0000, 0x48dc, 0xc36e, 0x3fdf, 0x0000,
- 0x0000, 0x0000, 0x3740, 0xe909, 0x3fbe, 0x0000, 0x0000, 0x0000, 0x924a, 0xb801,
- 0x3fa2, 0x0000, 0x0000, 0x0000, 0x3a32, 0xdd41, 0x3f83, 0x0000, 0x0000, 0x0000,
- 0x8778, 0x873f, 0x3f62, 0x0000, 0x0000, 0x0000, 0x1298, 0xb1cb, 0x3f44, 0x0000,
- 0x0000, 0x0000, 0xa208, 0x9cfb, 0x3f26, 0x0000, 0x0000, 0x0000, 0xbaec, 0xd7d4,
- 0x3f06, 0x0000, 0x0000, 0x0000, 0xd338, 0x8909, 0x3ee7, 0x0000, 0x0000, 0x0000,
- 0x68b8, 0xe04d, 0x3ec7, 0x0000, 0x0000, 0x0000, 0x4e64, 0xdf90, 0x3eaa, 0x0000,
- 0x0000, 0x0000, 0xc1a8, 0xeb1c, 0x3e89, 0x0000, 0x0000, 0x0000, 0x2720, 0xce7d,
- 0x3e6a, 0x0000, 0x0000, 0x0000, 0x77b8, 0x8bf1, 0x3e4b, 0x0000, 0x0000, 0x0000,
- 0xec7e, 0xe4a0, 0x3e2e, 0x0000, 0x0000, 0x0000, 0xffbc, 0xf12f, 0x3e0f, 0x0000,
- 0x0000, 0x0000, 0xfdc0, 0xb301, 0x3deb, 0x0000, 0x0000, 0x0000, 0xc5ac, 0x9788,
- 0x3dd1, 0x0000, 0x0000, 0x0000, 0x47da, 0x829b, 0x3db2, 0x0000, 0x0000, 0x0000,
- 0xd9e4, 0xa6cf, 0x3d93, 0x0000, 0x0000, 0x0000, 0x36e8, 0xf961, 0x3d73, 0x0000,
- 0x0000, 0x0000, 0xf668, 0xf463, 0x3d54, 0x0000, 0x0000, 0x0000, 0x5168, 0xf2ff,
- 0x3d35, 0x0000, 0x0000, 0x0000, 0x758e, 0xea4f, 0x3d17, 0x0000, 0x0000, 0x0000,
- 0xf17a, 0xebe5, 0x3cf8, 0x0000, 0x0000, 0x0000, 0x9cfa, 0x9e83, 0x3cd9, 0x0000,
- 0x0000, 0x0000, 0xa4ba, 0xe294, 0x3cba, 0x0000, 0x0000, 0x0000, 0xd7ec, 0x9afe,
- 0x3c9a, 0x0000, 0x0000, 0x0000, 0xae80, 0x8fc6, 0x3c79, 0x0000, 0x0000, 0x0000,
- 0x3304, 0x8560, 0x3c5c, 0x0000, 0x0000, 0x0000, 0x6d70, 0xdf8f, 0x3c3b, 0x0000,
- 0x0000, 0x0000, 0x3ef0, 0xafc3, 0x3c1e, 0x0000, 0x0000, 0x0000, 0xd0d8, 0x826b,
- 0x3bfe, 0x0000, 0x0000, 0x0000, 0x1c80, 0xed4f, 0x3bdd, 0x0000, 0x0000, 0x0000,
- 0x730c, 0xb0af, 0x3bc1, 0x0000, 0x0000, 0x0000, 0x6660, 0xc219, 0x3ba2, 0x0000,
- 0x0000, 0x0000, 0x940c, 0xabe2, 0x3b83, 0x0000, 0x0000, 0x0000, 0xdffc, 0x8408,
- 0x3b64, 0x0000, 0x0000, 0x0000, 0x6b98, 0xc402, 0x3b45, 0x0000, 0x0000, 0x0000,
- 0x1818, 0x9cc4, 0x3b26, 0x0000, 0x0000, 0x0000, 0x5390, 0xaab6, 0x3b05, 0x0000,
- 0x0000, 0x0000, 0xb070, 0xd464, 0x3ae9, 0x0000, 0x0000, 0x0000, 0x231a, 0x9ef0,
- 0x3aca, 0x0000, 0x0000, 0x0000, 0x0670, 0xd1f1, 0x3aaa, 0x0000, 0x0000, 0x0000,
- 0x7738, 0xd9f3, 0x3a8a, 0x0000, 0x0000, 0x0000, 0xa834, 0x8092, 0x3a6c, 0x0000,
- 0x0000, 0x0000, 0xb45c, 0xce23, 0x3a4d, 0x0000, 0x0000, 0x0000, 0x36e8, 0xb0e5,
- 0x3a2d, 0x0000, 0x0000, 0x0000, 0xd156, 0xaf44, 0x3a10, 0x0000, 0x0000, 0x0000,
- 0x9f52, 0x8c82, 0x39f1, 0x0000, 0x0000, 0x0000, 0x829c, 0xff83, 0x39d1, 0x0000,
- 0x0000, 0x0000, 0x7d06, 0xefc6, 0x39b3, 0x0000, 0x0000, 0x0000, 0x93e0, 0xb0b7,
- 0x3992, 0x0000, 0x0000, 0x0000, 0xedde, 0xc193, 0x3975, 0x0000, 0x0000, 0x0000,
- 0xbbc0, 0xcf49, 0x3952, 0x0000, 0x0000, 0x0000, 0xbdf0, 0xd63c, 0x3937, 0x0000,
- 0x0000, 0x0000, 0x1f34, 0x9f3a, 0x3918, 0x0000, 0x0000, 0x0000, 0x3f8e, 0xe579,
- 0x38f9, 0x0000, 0x0000, 0x0000, 0x90c8, 0xc3f8, 0x38d9, 0x0000, 0x0000, 0x0000,
- 0x48c0, 0xf8f8, 0x38b7, 0x0000, 0x0000, 0x0000, 0xed56, 0xafa6, 0x389c, 0x0000,
- 0x0000, 0x0000, 0x8218, 0xb969, 0x387d, 0x0000, 0x0000, 0x0000, 0x1852, 0xec57,
- 0x385e, 0x0000, 0x0000, 0x0000, 0x670c, 0xd674, 0x383e, 0x0000, 0x0000, 0x0000,
- 0xad40, 0xc2c4, 0x3820, 0x0000, 0x0000, 0x0000, 0x2e80, 0xa696, 0x3801, 0x0000,
- 0x0000, 0x0000, 0xd800, 0xc467, 0x37dc, 0x0000, 0x0000, 0x0000, 0x3c72, 0xc5ae,
- 0x37c3, 0x0000, 0x0000, 0x0000, 0xb006, 0xac69, 0x37a4, 0x0000, 0x0000, 0x0000,
- 0x34a0, 0x8cdf, 0x3782, 0x0000, 0x0000, 0x0000, 0x9ed2, 0xd25e, 0x3766, 0x0000,
- 0x0000, 0x0000, 0x6fec, 0xaaaa, 0x3747, 0x0000, 0x0000, 0x0000, 0x6040, 0xfb5c,
- 0x3726, 0x0000, 0x0000, 0x0000, 0x764c, 0xa3fc, 0x3708, 0x0000, 0x0000, 0x0000,
- 0xb254, 0x954e, 0x36e9, 0x0000, 0x0000, 0x0000, 0x3e1c, 0xf5dc, 0x36ca, 0x0000,
- 0x0000, 0x0000, 0x7b06, 0xc635, 0x36ac, 0x0000, 0x0000, 0x0000, 0xa8ba, 0xd738,
- 0x368d, 0x0000, 0x0000, 0x0000, 0x06cc, 0xb24e, 0x366d, 0x0000, 0x0000, 0x0000,
- 0x7108, 0xac76, 0x364f, 0x0000, 0x0000, 0x0000, 0x2324, 0xa7cb, 0x3630, 0x0000,
- 0x0000, 0x0000, 0xac40, 0xef15, 0x360f, 0x0000, 0x0000, 0x0000, 0xae46, 0xd516,
- 0x35f2, 0x0000, 0x0000, 0x0000, 0x615e, 0xe003, 0x35d3, 0x0000, 0x0000, 0x0000,
- 0x0cf0, 0xefe7, 0x35b1, 0x0000, 0x0000, 0x0000, 0xfb50, 0xf98c, 0x3595, 0x0000,
- 0x0000, 0x0000, 0x0abc, 0xf333, 0x3575, 0x0000, 0x0000, 0x0000, 0xdd60, 0xca3f,
- 0x3555, 0x0000, 0x0000, 0x0000, 0x7eb6, 0xd87f, 0x3538, 0x0000, 0x0000, 0x0000,
- 0x44f4, 0xb291, 0x3519, 0x0000, 0x0000, 0x0000, 0xff80, 0xc982, 0x34f6, 0x0000,
- 0x0000, 0x0000, 0x9de0, 0xd9b8, 0x34db, 0x0000, 0x0000, 0x0000, 0xcd42, 0x9366,
- 0x34bc, 0x0000, 0x0000, 0x0000, 0xbef0, 0xfaee, 0x349d, 0x0000, 0x0000, 0x0000,
- 0xdac4, 0xb6f1, 0x347d, 0x0000, 0x0000, 0x0000, 0xf140, 0x94de, 0x345d, 0x0000,
- 0x0000, 0x0000, 0xa218, 0x8b4b, 0x343e, 0x0000, 0x0000, 0x0000, 0x6380, 0xa135,
- 0x341e, 0x0000, 0x0000, 0x0000, 0xb184, 0x8cb2, 0x3402, 0x0000, 0x0000, 0x0000,
- 0x196e, 0xdc61, 0x33e3, 0x0000, 0x0000, 0x0000, 0x0c00, 0xde05, 0x33c4, 0x0000,
- 0x0000, 0x0000, 0xef9a, 0xbd38, 0x33a5, 0x0000, 0x0000, 0x0000, 0xc1a0, 0xdf00,
- 0x3385, 0x0000, 0x0000, 0x0000, 0x1090, 0x9973, 0x3365, 0x0000, 0x0000, 0x0000,
- 0x4882, 0x8301, 0x3348, 0x0000, 0x0000, 0x0000, 0x7abe, 0xadc7, 0x3329, 0x0000,
- 0x0000, 0x0000, 0x7cba, 0xec2b, 0x330a, 0x0000, 0x0000, 0x0000, 0xa520, 0x8f21,
- 0x32e9, 0x0000, 0x0000, 0x0000, 0x710c, 0x8d36, 0x32cc, 0x0000, 0x0000, 0x0000,
- 0x5212, 0xc6ed, 0x32ad, 0x0000, 0x0000, 0x0000, 0x7308, 0xfd76, 0x328d, 0x0000,
- 0x0000, 0x0000, 0x5014, 0xd548, 0x326f, 0x0000, 0x0000, 0x0000, 0xd3f2, 0xb499,
- 0x3250, 0x0000, 0x0000, 0x0000, 0x7f74, 0xa606, 0x3230, 0x0000, 0x0000, 0x0000,
- 0xf0a8, 0xd720, 0x3212, 0x0000, 0x0000, 0x0000, 0x185c, 0xe20f, 0x31f2, 0x0000,
- 0x0000, 0x0000, 0xa5a8, 0x8738, 0x31d4, 0x0000, 0x0000, 0x0000, 0xdd74, 0xcafb,
- 0x31b4, 0x0000, 0x0000, 0x0000, 0x98b6, 0xbd8e, 0x3196, 0x0000, 0x0000, 0x0000,
- 0xe9de, 0x977f, 0x3177, 0x0000, 0x0000, 0x0000, 0x67c0, 0x818d, 0x3158, 0x0000,
- 0x0000, 0x0000, 0xe52a, 0x9322, 0x3139, 0x0000, 0x0000, 0x0000, 0xe568, 0x9b6c,
- 0x3119, 0x0000, 0x0000, 0x0000, 0x2358, 0xaa0a, 0x30fa, 0x0000, 0x0000, 0x0000,
- 0xe480, 0xe13b, 0x30d9, 0x0000, 0x0000, 0x0000, 0x3024, 0x90a1, 0x30bd, 0x0000,
- 0x0000, 0x0000, 0x9620, 0xda30, 0x309d, 0x0000, 0x0000, 0x0000, 0x898a, 0xb388,
- 0x307f, 0x0000, 0x0000, 0x0000, 0xb24c, 0xc891, 0x3060, 0x0000, 0x0000, 0x0000,
- 0x8056, 0xf98b, 0x3041, 0x0000, 0x0000, 0x0000, 0x72a4, 0xa1ea, 0x3021, 0x0000,
- 0x0000, 0x0000, 0x6af8, 0x9488, 0x3001, 0x0000, 0x0000, 0x0000, 0xe00c, 0xdfcb,
- 0x2fe4, 0x0000, 0x0000, 0x0000, 0xeeec, 0xc941, 0x2fc4, 0x0000, 0x0000, 0x0000,
- 0x53e0, 0xe70f, 0x2fa4, 0x0000, 0x0000, 0x0000, 0x8f60, 0x9c07, 0x2f85, 0x0000,
- 0x0000, 0x0000, 0xb328, 0xc3e7, 0x2f68, 0x0000, 0x0000, 0x0000, 0x9404, 0xf8c7,
- 0x2f48, 0x0000, 0x0000, 0x0000, 0x38e0, 0xc99f, 0x2f29, 0x0000, 0x0000, 0x0000,
- 0x9778, 0xd984, 0x2f09, 0x0000, 0x0000, 0x0000, 0xe700, 0xd142, 0x2eea, 0x0000,
- 0x0000, 0x0000, 0xd904, 0x9443, 0x2ecd, 0x0000, 0x0000, 0x0000, 0xd4ba, 0xae7e,
- 0x2eae, 0x0000, 0x0000, 0x0000, 0x8e5e, 0x8524, 0x2e8f, 0x0000, 0x0000, 0x0000,
- 0xb550, 0xc9ed, 0x2e6e, 0x0000, 0x0000, 0x0000, 0x53b8, 0x8648, 0x2e51, 0x0000,
- 0x0000, 0x0000, 0xdae4, 0x87f9, 0x2e32, 0x0000, 0x0000, 0x0000, 0x2942, 0xd966,
- 0x2e13, 0x0000, 0x0000, 0x0000, 0x4f28, 0xcf3c, 0x2df3, 0x0000, 0x0000, 0x0000,
- 0xfa40, 0xc4ef, 0x2dd1, 0x0000, 0x0000, 0x0000, 0x4424, 0xbca7, 0x2db5, 0x0000,
- 0x0000, 0x0000, 0x2e62, 0xcdc5, 0x2d97, 0x0000, 0x0000, 0x0000, 0xed88, 0x996b,
- 0x2d78, 0x0000, 0x0000, 0x0000, 0x7c30, 0xd97d, 0x2d56, 0x0000, 0x0000, 0x0000,
- 0xed26, 0xbf6e, 0x2d3a, 0x0000, 0x0000, 0x0000, 0x2918, 0x921b, 0x2d1a, 0x0000,
- 0x0000, 0x0000, 0x4e24, 0xe84e, 0x2cfb, 0x0000, 0x0000, 0x0000, 0x6dc0, 0x92ec,
- 0x2cdd, 0x0000, 0x0000, 0x0000, 0x4f2c, 0xacf8, 0x2cbd, 0x0000, 0x0000, 0x0000,
- 0xc634, 0xf094, 0x2c9e, 0x0000, 0x0000, 0x0000, 0xdc70, 0xe5d3, 0x2c7e, 0x0000,
- 0x0000, 0x0000, 0x2180, 0xa600, 0x2c5b, 0x0000, 0x0000, 0x0000, 0x8480, 0xd680,
- 0x2c3c, 0x0000, 0x0000, 0x0000, 0x8b24, 0xd63b, 0x2c22, 0x0000, 0x0000, 0x0000,
- 0x02e0, 0xaa47, 0x2c00, 0x0000, 0x0000, 0x0000, 0x9ad0, 0xee84, 0x2be3, 0x0000,
- 0x0000, 0x0000, 0xf7dc, 0xf699, 0x2bc6, 0x0000, 0x0000, 0x0000, 0xddde, 0xe490,
- 0x2ba7, 0x0000, 0x0000, 0x0000, 0x34a0, 0xb4fd, 0x2b85, 0x0000, 0x0000, 0x0000,
- 0x91b4, 0x8ef6, 0x2b68, 0x0000, 0x0000, 0x0000, 0xa3e0, 0xa2a7, 0x2b47, 0x0000,
- 0x0000, 0x0000, 0xcce4, 0x82b3, 0x2b2a, 0x0000, 0x0000, 0x0000, 0xe4be, 0x8207,
- 0x2b0c, 0x0000, 0x0000, 0x0000, 0x1d92, 0xab43, 0x2aed, 0x0000, 0x0000, 0x0000,
- 0xe818, 0xf9f6, 0x2acd, 0x0000, 0x0000, 0x0000, 0xff12, 0xba80, 0x2aaf, 0x0000,
- 0x0000, 0x0000, 0x5254, 0x8529, 0x2a90, 0x0000, 0x0000, 0x0000, 0x1b88, 0xe032,
- 0x2a71, 0x0000, 0x0000, 0x0000, 0x3248, 0xd86d, 0x2a50, 0x0000, 0x0000, 0x0000,
- 0x3140, 0xc9d5, 0x2a2e, 0x0000, 0x0000, 0x0000, 0x14e6, 0xbd47, 0x2a14, 0x0000,
- 0x0000, 0x0000, 0x5c10, 0xe544, 0x29f4, 0x0000, 0x0000, 0x0000, 0x9f50, 0x90b6,
- 0x29d4, 0x0000, 0x0000, 0x0000, 0x9850, 0xab55, 0x29b6, 0x0000, 0x0000, 0x0000,
- 0x2750, 0x9d07, 0x2998, 0x0000, 0x0000, 0x0000, 0x6700, 0x8bbb, 0x2973, 0x0000,
- 0x0000, 0x0000, 0x5dba, 0xed31, 0x295a, 0x0000, 0x0000, 0x0000, 0x61dc, 0x85fe,
- 0x293a, 0x0000, 0x0000, 0x0000, 0x9ba2, 0xd6b4, 0x291c, 0x0000, 0x0000, 0x0000,
- 0x2d30, 0xe3a5, 0x28fb, 0x0000, 0x0000, 0x0000, 0x6630, 0xb566, 0x28dd, 0x0000,
- 0x0000, 0x0000, 0x5ad4, 0xa829, 0x28bf, 0x0000, 0x0000, 0x0000, 0x89d8, 0xe290,
- 0x28a0, 0x0000, 0x0000, 0x0000, 0x3916, 0xc428, 0x2881, 0x0000, 0x0000, 0x0000,
- 0x0490, 0xbea4, 0x2860, 0x0000, 0x0000, 0x0000, 0xee06, 0x80ee, 0x2843, 0x0000,
- 0x0000, 0x0000, 0xfc00, 0xf327, 0x2820, 0x0000, 0x0000, 0x0000, 0xea40, 0xa871,
- 0x2800, 0x0000, 0x0000, 0x0000, 0x63d8, 0x9c26, 0x27e4, 0x0000, 0x0000, 0x0000,
- 0x07ba, 0xc0c9, 0x27c7, 0x0000, 0x0000, 0x0000, 0x3fa2, 0x9797, 0x27a8, 0x0000,
- 0x0000, 0x0000, 0x21c6, 0xfeca, 0x2789, 0x0000, 0x0000, 0x0000, 0xde40, 0x860d,
- 0x2768, 0x0000, 0x0000, 0x0000, 0x9cc8, 0x98ce, 0x2749, 0x0000, 0x0000, 0x0000,
- 0x3778, 0xa31c, 0x272a, 0x0000, 0x0000, 0x0000, 0xe778, 0xf6e2, 0x270b, 0x0000,
- 0x0000, 0x0000, 0x59b8, 0xf841, 0x26ed, 0x0000, 0x0000, 0x0000, 0x02e0, 0xad04,
- 0x26cd, 0x0000, 0x0000, 0x0000, 0x5a92, 0x9380, 0x26b0, 0x0000, 0x0000, 0x0000,
- 0xc740, 0x8886, 0x268d, 0x0000, 0x0000, 0x0000, 0x0680, 0xfaf8, 0x266c, 0x0000,
- 0x0000, 0x0000, 0xfb60, 0x897f, 0x2653, 0x0000, 0x0000, 0x0000, 0x8760, 0xf903,
- 0x2634, 0x0000, 0x0000, 0x0000, 0xad2a, 0xc2c8, 0x2615, 0x0000, 0x0000, 0x0000,
- 0x2d86, 0x8aef, 0x25f6, 0x0000, 0x0000, 0x0000, 0x1ef4, 0xe627, 0x25d6, 0x0000,
- 0x0000, 0x0000, 0x09e4, 0x8020, 0x25b7, 0x0000, 0x0000, 0x0000, 0x7548, 0xd227,
- 0x2598, 0x0000, 0x0000, 0x0000, 0x75dc, 0xfb5b, 0x2579, 0x0000, 0x0000, 0x0000,
- 0xea84, 0xc8b6, 0x255a, 0x0000, 0x0000, 0x0000, 0xe4d0, 0x8145, 0x253b, 0x0000,
- 0x0000, 0x0000, 0x3640, 0x9768, 0x251c, 0x0000, 0x0000, 0x0000, 0x246a, 0xccec,
- 0x24fe, 0x0000, 0x0000, 0x0000, 0x51d0, 0xa075, 0x24dd, 0x0000, 0x0000, 0x0000,
- 0x4638, 0xa385, 0x24bf, 0x0000, 0x0000, 0x0000, 0xd788, 0xd776, 0x24a1, 0x0000,
- 0x0000, 0x0000, 0x1370, 0x8997, 0x2482, 0x0000, 0x0000, 0x0000, 0x1e88, 0x9b67,
- 0x2462, 0x0000, 0x0000, 0x0000, 0x6c08, 0xd975, 0x2444, 0x0000, 0x0000, 0x0000,
- 0xfdb0, 0xcfc0, 0x2422, 0x0000, 0x0000, 0x0000, 0x3100, 0xc026, 0x2406, 0x0000,
- 0x0000, 0x0000, 0xc5b4, 0xae64, 0x23e6, 0x0000, 0x0000, 0x0000, 0x2280, 0xf687,
- 0x23c3, 0x0000, 0x0000, 0x0000, 0x2de0, 0x9006, 0x23a9, 0x0000, 0x0000, 0x0000,
- 0x24bc, 0xf631, 0x238a, 0x0000, 0x0000, 0x0000, 0xb8d4, 0xa975, 0x236b, 0x0000,
- 0x0000, 0x0000, 0xd9a4, 0xb949, 0x234b, 0x0000, 0x0000, 0x0000, 0xb54e, 0xbd39,
- 0x232d, 0x0000, 0x0000, 0x0000, 0x4aac, 0x9a52, 0x230e, 0x0000, 0x0000, 0x0000,
- 0xbbbc, 0xd085, 0x22ef, 0x0000, 0x0000, 0x0000, 0xdf18, 0xc633, 0x22cf, 0x0000,
- 0x0000, 0x0000, 0x16d0, 0xeca5, 0x22af, 0x0000, 0x0000, 0x0000, 0xf2a0, 0xdf6f,
- 0x228e, 0x0000, 0x0000, 0x0000, 0x8c44, 0xe86b, 0x2272, 0x0000, 0x0000, 0x0000,
- 0x35c0, 0xbbf4, 0x2253, 0x0000, 0x0000, 0x0000, 0x0c40, 0xdafb, 0x2230, 0x0000,
- 0x0000, 0x0000, 0x92dc, 0x9935, 0x2216, 0x0000, 0x0000, 0x0000, 0x0ca0, 0xbda6,
- 0x21f3, 0x0000, 0x0000, 0x0000, 0x5958, 0xa6fd, 0x21d6, 0x0000, 0x0000, 0x0000,
- 0xa3dc, 0x9d7f, 0x21b9, 0x0000, 0x0000, 0x0000, 0x79dc, 0xfcb5, 0x2199, 0x0000,
- 0x0000, 0x0000, 0xf264, 0xcebb, 0x217b, 0x0000, 0x0000, 0x0000, 0x0abe, 0x8308,
- 0x215c, 0x0000, 0x0000, 0x0000, 0x30ae, 0xb463, 0x213d, 0x0000, 0x0000, 0x0000,
- 0x6228, 0xb040, 0x211c, 0x0000, 0x0000, 0x0000, 0xc9b2, 0xf43b, 0x20ff, 0x0000,
- 0x0000, 0x0000, 0x3d8e, 0xa4b3, 0x20e0, 0x0000, 0x0000, 0x0000, 0x84e6, 0x8dab,
- 0x20c1, 0x0000, 0x0000, 0x0000, 0xa124, 0x9b74, 0x20a1, 0x0000, 0x0000, 0x0000,
- 0xc276, 0xd497, 0x2083, 0x0000, 0x0000, 0x0000, 0x6354, 0xa466, 0x2063, 0x0000,
- 0x0000, 0x0000, 0x8654, 0xaf0a, 0x2044, 0x0000, 0x0000, 0x0000, 0x1d20, 0xfa5c,
- 0x2024, 0x0000, 0x0000, 0x0000, 0xbcd0, 0xf3f0, 0x2004, 0x0000, 0x0000, 0x0000,
- 0xedf0, 0xf0b6, 0x1fe7, 0x0000, 0x0000, 0x0000, 0x45bc, 0x9182, 0x1fc9, 0x0000,
- 0x0000, 0x0000, 0xe254, 0xdc85, 0x1faa, 0x0000, 0x0000, 0x0000, 0xb898, 0xe9b1,
- 0x1f8a, 0x0000, 0x0000, 0x0000, 0x0ebe, 0xe6f0, 0x1f6c, 0x0000, 0x0000, 0x0000,
- 0xa9b8, 0xf584, 0x1f4c, 0x0000, 0x0000, 0x0000, 0x12e8, 0xdf6b, 0x1f2e, 0x0000,
- 0x0000, 0x0000, 0x9f9e, 0xcd55, 0x1f0f, 0x0000, 0x0000, 0x0000, 0x05a0, 0xec3a,
- 0x1eef, 0x0000, 0x0000, 0x0000, 0xd8e0, 0x96f8, 0x1ed1, 0x0000, 0x0000, 0x0000,
- 0x3bd4, 0xccc6, 0x1eb1, 0x0000, 0x0000, 0x0000, 0x4910, 0xb87b, 0x1e93, 0x0000,
- 0x0000, 0x0000, 0xbefc, 0xd40b, 0x1e73, 0x0000, 0x0000, 0x0000, 0x317e, 0xa406,
- 0x1e55, 0x0000, 0x0000, 0x0000, 0x6bb2, 0xc2b2, 0x1e36, 0x0000, 0x0000, 0x0000,
- 0xb87e, 0xbb78, 0x1e17, 0x0000, 0x0000, 0x0000, 0xa03c, 0xdbbd, 0x1df7, 0x0000,
- 0x0000, 0x0000, 0x5b6c, 0xe3c8, 0x1dd9, 0x0000, 0x0000, 0x0000, 0x8968, 0xca8e,
- 0x1dba, 0x0000, 0x0000, 0x0000, 0xc024, 0xe6ab, 0x1d9a, 0x0000, 0x0000, 0x0000,
- 0x4110, 0xd4eb, 0x1d7a, 0x0000, 0x0000, 0x0000, 0xa168, 0xbdb5, 0x1d5d, 0x0000,
- 0x0000, 0x0000, 0x012e, 0xa5fa, 0x1d3e, 0x0000, 0x0000, 0x0000, 0x6838, 0x9c1f,
- 0x1d1e, 0x0000, 0x0000, 0x0000, 0xa158, 0xaa76, 0x1d00, 0x0000, 0x0000, 0x0000,
- 0x090a, 0xbd95, 0x1ce1, 0x0000, 0x0000, 0x0000, 0xf73e, 0x8b6d, 0x1cc2, 0x0000,
- 0x0000, 0x0000, 0x5fda, 0xbcbf, 0x1ca3, 0x0000, 0x0000, 0x0000, 0xdbe8, 0xb89f,
- 0x1c84, 0x0000, 0x0000, 0x0000, 0x6e4c, 0x96c7, 0x1c64, 0x0000, 0x0000, 0x0000,
- 0x19c2, 0xf2a4, 0x1c46, 0x0000, 0x0000, 0x0000, 0xb800, 0xf855, 0x1c1e, 0x0000,
- 0x0000, 0x0000, 0x87fc, 0x85ff, 0x1c08, 0x0000, 0x0000, 0x0000, 0x1418, 0x839f,
- 0x1be9, 0x0000, 0x0000, 0x0000, 0x6186, 0xd9d8, 0x1bca, 0x0000, 0x0000, 0x0000,
- 0xf500, 0xabaa, 0x1ba6, 0x0000, 0x0000, 0x0000, 0x7b36, 0xdafe, 0x1b8c, 0x0000,
- 0x0000, 0x0000, 0xf394, 0xe6d8, 0x1b6c, 0x0000, 0x0000, 0x0000, 0x6efc, 0x9e55,
- 0x1b4e, 0x0000, 0x0000, 0x0000, 0x5e10, 0xc523, 0x1b2e, 0x0000, 0x0000, 0x0000,
- 0x8210, 0xb6f9, 0x1b0d, 0x0000, 0x0000, 0x0000, 0x9ab0, 0x96e3, 0x1af1, 0x0000,
- 0x0000, 0x0000, 0x3864, 0x92e7, 0x1ad1, 0x0000, 0x0000, 0x0000, 0x9878, 0xdc65,
- 0x1ab1, 0x0000, 0x0000, 0x0000, 0xfa20, 0xd6cb, 0x1a94, 0x0000, 0x0000, 0x0000,
- 0x6c00, 0xa4e4, 0x1a70, 0x0000, 0x0000, 0x0000, 0xab40, 0xb41b, 0x1a53, 0x0000,
- 0x0000, 0x0000, 0x43a4, 0x8ede, 0x1a37, 0x0000, 0x0000, 0x0000, 0x22e0, 0x9314,
- 0x1a15, 0x0000, 0x0000, 0x0000, 0x6170, 0xb949, 0x19f8, 0x0000, 0x0000, 0x0000,
- 0x6b00, 0xe056, 0x19d8, 0x0000, 0x0000, 0x0000, 0x9ba8, 0xa94c, 0x19b9, 0x0000,
- 0x0000, 0x0000, 0xfaa0, 0xaa16, 0x199b, 0x0000, 0x0000, 0x0000, 0x899a, 0xf627,
- 0x197d, 0x0000, 0x0000, 0x0000, 0x9f20, 0xfb70, 0x195d, 0x0000, 0x0000, 0x0000,
- 0xa4b8, 0xc176, 0x193e, 0x0000, 0x0000, 0x0000, 0xb21c, 0x85c3, 0x1920, 0x0000,
- 0x0000, 0x0000, 0x50d2, 0x9b19, 0x1901, 0x0000, 0x0000, 0x0000, 0xd4b0, 0xb708,
- 0x18e0, 0x0000, 0x0000, 0x0000, 0xfb88, 0xf510, 0x18c1, 0x0000, 0x0000, 0x0000,
- 0x31ec, 0xdc8d, 0x18a3, 0x0000, 0x0000, 0x0000, 0x3c00, 0xbff9, 0x1885, 0x0000,
- 0x0000, 0x0000, 0x5020, 0xc30b, 0x1862, 0x0000, 0x0000, 0x0000, 0xd4f0, 0xda0c,
- 0x1844, 0x0000, 0x0000, 0x0000, 0x20d2, 0x99a5, 0x1828, 0x0000, 0x0000, 0x0000,
- 0x852e, 0xd159, 0x1809, 0x0000, 0x0000, 0x0000, 0x7cd8, 0x97a1, 0x17e9, 0x0000,
- 0x0000, 0x0000, 0x423a, 0x997b, 0x17cb, 0x0000, 0x0000, 0x0000, 0xc1c0, 0xbe7d,
- 0x17a8, 0x0000, 0x0000, 0x0000, 0xe8bc, 0xdcdd, 0x178d, 0x0000, 0x0000, 0x0000,
- 0x8b28, 0xae06, 0x176e, 0x0000, 0x0000, 0x0000, 0x102e, 0xb8d4, 0x174f, 0x0000,
- 0x0000, 0x0000, 0xaa00, 0xaa5c, 0x172f, 0x0000, 0x0000, 0x0000, 0x51f0, 0x9fc0,
- 0x170e, 0x0000, 0x0000, 0x0000, 0xf858, 0xe181, 0x16f2, 0x0000, 0x0000, 0x0000,
- 0x91a8, 0x8162, 0x16d3, 0x0000, 0x0000, 0x0000, 0x5f40, 0xcb6f, 0x16b1, 0x0000,
- 0x0000, 0x0000, 0xbb50, 0xe55f, 0x1693, 0x0000, 0x0000, 0x0000, 0xacd2, 0xd895,
- 0x1676, 0x0000, 0x0000, 0x0000, 0xef30, 0x97bf, 0x1654, 0x0000, 0x0000, 0x0000,
- 0xf700, 0xb3d7, 0x1633, 0x0000, 0x0000, 0x0000, 0x3454, 0xa7b5, 0x1619, 0x0000,
- 0x0000, 0x0000, 0x6b00, 0xa929, 0x15f6, 0x0000, 0x0000, 0x0000, 0x9f04, 0x89f7,
- 0x15db, 0x0000, 0x0000, 0x0000, 0xad78, 0xd985, 0x15bc, 0x0000, 0x0000, 0x0000,
- 0xa46a, 0xae3f, 0x159d, 0x0000, 0x0000, 0x0000, 0x63a0, 0xd0da, 0x157c, 0x0000,
- 0x0000, 0x0000, 0x5e90, 0x817d, 0x155e, 0x0000, 0x0000, 0x0000, 0x1494, 0xb13f,
- 0x1540, 0x0000, 0x0000, 0x0000, 0x0090, 0x9c40, 0x1521, 0x0000, 0x0000, 0x0000,
- 0xdd70, 0xcc86, 0x1500, 0x0000, 0x0000, 0x0000, 0x64f8, 0xdb6f, 0x14e1, 0x0000,
- 0x0000, 0x0000, 0xe22c, 0xac17, 0x14c3, 0x0000, 0x0000, 0x0000, 0x60e0, 0xa9ad,
- 0x14a3, 0x0000, 0x0000, 0x0000, 0x4640, 0xd658, 0x1481, 0x0000, 0x0000, 0x0000,
- 0x6490, 0xa181, 0x1467, 0x0000, 0x0000, 0x0000, 0x1df4, 0xaaa2, 0x1447, 0x0000,
- 0x0000, 0x0000, 0xb94a, 0x8f61, 0x1429, 0x0000, 0x0000, 0x0000, 0x5198, 0x9d83,
- 0x1409, 0x0000, 0x0000, 0x0000, 0x0f7a, 0xa818, 0x13eb, 0x0000, 0x0000, 0x0000,
- 0xc45e, 0xc06c, 0x13cc, 0x0000, 0x0000, 0x0000, 0x4ec0, 0xfa29, 0x13a8, 0x0000,
- 0x0000, 0x0000, 0x6418, 0x8cad, 0x138c, 0x0000, 0x0000, 0x0000, 0xbcc8, 0xe7d1,
- 0x136f, 0x0000, 0x0000, 0x0000, 0xc934, 0xf9b0, 0x134f, 0x0000, 0x0000, 0x0000,
- 0x6ce0, 0x98df, 0x1331, 0x0000, 0x0000, 0x0000, 0x3516, 0xe5e9, 0x1312, 0x0000,
- 0x0000, 0x0000, 0xc6c0, 0xef8b, 0x12ef, 0x0000, 0x0000, 0x0000, 0xaf02, 0x913d,
- 0x12d4, 0x0000, 0x0000, 0x0000, 0xd230, 0xe1d5, 0x12b5, 0x0000, 0x0000, 0x0000,
- 0xfba8, 0xc232, 0x1295, 0x0000, 0x0000, 0x0000, 0x7ba4, 0xabeb, 0x1277, 0x0000,
- 0x0000, 0x0000, 0x6e5c, 0xc692, 0x1258, 0x0000, 0x0000, 0x0000, 0x76a2, 0x9756,
- 0x1239, 0x0000, 0x0000, 0x0000, 0xe180, 0xe423, 0x1214, 0x0000, 0x0000, 0x0000,
- 0x8c3c, 0x90f8, 0x11fb, 0x0000, 0x0000, 0x0000, 0x9f3c, 0x9fd2, 0x11dc, 0x0000,
- 0x0000, 0x0000, 0x53e0, 0xb73e, 0x11bd, 0x0000, 0x0000, 0x0000, 0x45be, 0x88d6,
- 0x119e, 0x0000, 0x0000, 0x0000, 0x111a, 0x8bc0, 0x117f, 0x0000, 0x0000, 0x0000,
- 0xe26a, 0xd7ff, 0x1160, 0x0000, 0x0000, 0x0000, 0xfb60, 0xdd8d, 0x113f, 0x0000,
- 0x0000, 0x0000, 0x9370, 0xc108, 0x1120, 0x0000, 0x0000, 0x0000, 0x9654, 0x8baf,
- 0x1103, 0x0000, 0x0000, 0x0000, 0xd6ec, 0xd6b9, 0x10e4, 0x0000, 0x0000, 0x0000,
- 0x23e4, 0xd7b7, 0x10c4, 0x0000, 0x0000, 0x0000, 0x1aa6, 0xa847, 0x10a6, 0x0000,
- 0x0000, 0x0000, 0xbee6, 0x9fef, 0x1087, 0x0000, 0x0000, 0x0000, 0x26d0, 0xa6eb,
- 0x1066, 0x0000, 0x0000, 0x0000, 0x5b86, 0xa880, 0x1049, 0x0000, 0x0000, 0x0000,
- 0x125c, 0xd971, 0x1029, 0x0000, 0x0000, 0x0000, 0x1f78, 0x9d18, 0x100a, 0x0000,
- 0x0000, 0x0000, 0x0e84, 0xb15b, 0x0feb, 0x0000, 0x0000, 0x0000, 0xd0c0, 0xc150,
- 0x0fcc, 0x0000, 0x0000, 0x0000, 0xa330, 0xc40c, 0x0fad, 0x0000, 0x0000, 0x0000,
- 0x5202, 0xfc2c, 0x0f8f, 0x0000, 0x0000, 0x0000, 0x3f7c, 0xecf5, 0x0f6f, 0x0000,
- 0x0000, 0x0000, 0xef44, 0xfdfd, 0x0f50, 0x0000, 0x0000, 0x0000, 0x3f6c, 0xab1b,
- 0x0f31, 0x0000, 0x0000, 0x0000, 0xf658, 0x89ec, 0x0f11, 0x0000, 0x0000, 0x0000,
- 0xbfc8, 0x9ba8, 0x0ef4, 0x0000, 0x0000, 0x0000, 0x3d40, 0xbe21, 0x0ed5, 0x0000,
- 0x0000, 0x0000, 0xbbc4, 0xc70d, 0x0eb6, 0x0000, 0x0000, 0x0000, 0x5158, 0xdb16,
- 0x0e96, 0x0000, 0x0000, 0x0000, 0xb5a8, 0xa8d8, 0x0e78, 0x0000, 0x0000, 0x0000,
- 0xcccc, 0xb40e, 0x0e58, 0x0000, 0x0000, 0x0000, 0x448c, 0xcb62, 0x0e3a, 0x0000,
- 0x0000, 0x0000, 0xf12a, 0x8aed, 0x0e1b, 0x0000, 0x0000, 0x0000, 0x79d0, 0xc59c,
- 0x0dfb, 0x0000, 0x0000, 0x0000, 0x06b4, 0xcdc9, 0x0ddd, 0x0000, 0x0000, 0x0000,
- 0xae70, 0xa979, 0x0dbe, 0x0000, 0x0000, 0x0000, 0x317c, 0xa8fb, 0x0d9e, 0x0000,
- 0x0000, 0x0000, 0x5fe0, 0x8a50, 0x0d7d, 0x0000, 0x0000, 0x0000, 0x70b6, 0xfdfa,
- 0x0d61, 0x0000, 0x0000, 0x0000, 0x1640, 0x9dc7, 0x0d41, 0x0000, 0x0000, 0x0000,
- 0x9a9c, 0xdc50, 0x0d23, 0x0000, 0x0000, 0x0000, 0x4fcc, 0x9a9b, 0x0d04, 0x0000,
- 0x0000, 0x0000, 0x7e48, 0x8f77, 0x0ce5, 0x0000, 0x0000, 0x0000, 0x84e4, 0xd4b9,
- 0x0cc6, 0x0000, 0x0000, 0x0000, 0x84e0, 0xbd10, 0x0ca6, 0x0000, 0x0000, 0x0000,
- 0x1b0a, 0xc8d9, 0x0c88, 0x0000, 0x0000, 0x0000, 0x6a48, 0xfc81, 0x0c68, 0x0000,
- 0x0000, 0x0000, 0x070a, 0xbef6, 0x0c4a, 0x0000, 0x0000, 0x0000, 0x8a70, 0xf096,
- 0x0c2b, 0x0000, 0x0000, 0x0000, 0xecc2, 0xc994, 0x0c0c, 0x0000, 0x0000, 0x0000,
- 0x1540, 0x9537, 0x0bea, 0x0000, 0x0000, 0x0000, 0x1b02, 0xab5b, 0x0bce, 0x0000,
- 0x0000, 0x0000, 0x5dc0, 0xb0c8, 0x0bad, 0x0000, 0x0000, 0x0000, 0xc928, 0xe034,
- 0x0b8f, 0x0000, 0x0000, 0x0000, 0x2d12, 0xb4b0, 0x0b71, 0x0000, 0x0000, 0x0000,
- 0x8fc2, 0xbb94, 0x0b52, 0x0000, 0x0000, 0x0000, 0xe236, 0xe22f, 0x0b33, 0x0000,
- 0x0000, 0x0000, 0xb97c, 0xbe9e, 0x0b13, 0x0000, 0x0000, 0x0000, 0xe1a6, 0xe16d,
- 0x0af5, 0x0000, 0x0000, 0x0000, 0xd330, 0xbaf0, 0x0ad6, 0x0000, 0x0000, 0x0000,
- 0xc0bc, 0xbbd0, 0x0ab7, 0x0000, 0x0000, 0x0000, 0x8e66, 0xdd9b, 0x0a98, 0x0000,
- 0x0000, 0x0000, 0xc95c, 0xf799, 0x0a79, 0x0000, 0x0000, 0x0000, 0xdac0, 0xbe4c,
- 0x0a55, 0x0000, 0x0000, 0x0000, 0xafc0, 0xc378, 0x0a37, 0x0000, 0x0000, 0x0000,
- 0xa880, 0xe341, 0x0a19, 0x0000, 0x0000, 0x0000, 0xc242, 0x81f6, 0x09fd, 0x0000,
- 0x0000, 0x0000, 0x7470, 0xc777, 0x09de, 0x0000, 0x0000, 0x0000, 0x62bc, 0xb684,
- 0x09be, 0x0000, 0x0000, 0x0000, 0x43ac, 0x8c58, 0x099f, 0x0000, 0x0000, 0x0000,
- 0xcc3c, 0xf9ac, 0x0981, 0x0000, 0x0000, 0x0000, 0x1526, 0xb670, 0x0962, 0x0000,
- 0x0000, 0x0000, 0xc9fe, 0xdf50, 0x0943, 0x0000, 0x0000, 0x0000, 0x6ae6, 0xc065,
- 0x0924, 0x0000, 0x0000, 0x0000, 0xb114, 0xcf29, 0x0905, 0x0000, 0x0000, 0x0000,
- 0xd388, 0x922a, 0x08e4, 0x0000, 0x0000, 0x0000, 0xcf54, 0xb926, 0x08c7, 0x0000,
- 0x0000, 0x0000, 0x3826, 0xe855, 0x08a8, 0x0000, 0x0000, 0x0000, 0xe7c8, 0x829b,
- 0x0888, 0x0000, 0x0000, 0x0000, 0x546c, 0xa903, 0x086a, 0x0000, 0x0000, 0x0000,
- 0x8768, 0x99cc, 0x0849, 0x0000, 0x0000, 0x0000, 0x00ac, 0xf529, 0x082b, 0x0000,
- 0x0000, 0x0000, 0x2658, 0x9f0b, 0x080c, 0x0000, 0x0000, 0x0000, 0xfe5c, 0x9e21,
- 0x07ee, 0x0000, 0x0000, 0x0000, 0x6da2, 0x9910, 0x07cf, 0x0000, 0x0000, 0x0000,
- 0x9220, 0xf9b3, 0x07b0, 0x0000, 0x0000, 0x0000, 0x3d90, 0xa541, 0x0791, 0x0000,
- 0x0000, 0x0000, 0x6e4c, 0xe7cc, 0x0771, 0x0000, 0x0000, 0x0000, 0xa8fa, 0xe80a,
- 0x0753, 0x0000, 0x0000, 0x0000, 0x4e14, 0xc3a7, 0x0734, 0x0000, 0x0000, 0x0000,
- 0xf7e0, 0xbad9, 0x0712, 0x0000, 0x0000, 0x0000, 0xfea0, 0xeff2, 0x06f5, 0x0000,
- 0x0000, 0x0000, 0xcef6, 0xbd48, 0x06d7, 0x0000, 0x0000, 0x0000, 0x7544, 0xf559,
- 0x06b7, 0x0000, 0x0000, 0x0000, 0x2388, 0xf655, 0x0698, 0x0000, 0x0000, 0x0000,
- 0xe900, 0xad56, 0x0676, 0x0000, 0x0000, 0x0000, 0x2cc0, 0x8437, 0x0659, 0x0000,
- 0x0000, 0x0000, 0x3068, 0xc544, 0x063b, 0x0000, 0x0000, 0x0000, 0xdc70, 0xe73c,
- 0x061b, 0x0000, 0x0000, 0x0000, 0xee50, 0x9d49, 0x05fc, 0x0000, 0x0000, 0x0000,
- 0x93d2, 0x81f6, 0x05df, 0x0000, 0x0000, 0x0000, 0x941c, 0xadff, 0x05bf, 0x0000,
- 0x0000, 0x0000, 0x2ce2, 0x8e45, 0x05a1, 0x0000, 0x0000, 0x0000, 0x4a60, 0x95fd,
- 0x0581, 0x0000, 0x0000, 0x0000, 0x79f8, 0xb83a, 0x0563, 0x0000, 0x0000, 0x0000,
- 0xcb58, 0xa1f5, 0x0543, 0x0000, 0x0000, 0x0000, 0x2a3a, 0xdc36, 0x0525, 0x0000,
- 0x0000, 0x0000, 0x14ee, 0x890e, 0x0506, 0x0000, 0x0000, 0x0000, 0x8f20, 0xc432,
- 0x04e3, 0x0000, 0x0000, 0x0000, 0x8440, 0xb21d, 0x04c6, 0x0000, 0x0000, 0x0000,
- 0x5430, 0xf698, 0x04a7, 0x0000, 0x0000, 0x0000, 0x04ae, 0x8b20, 0x048a, 0x0000,
- 0x0000, 0x0000, 0x04d0, 0xe872, 0x046b, 0x0000, 0x0000, 0x0000, 0xc78e, 0x8893,
- 0x044c, 0x0000, 0x0000, 0x0000, 0x0f78, 0x9895, 0x042b, 0x0000, 0x0000, 0x0000,
- 0x11d4, 0xdf2e, 0x040d, 0x0000, 0x0000, 0x0000, 0xe84c, 0x89d5, 0x03ef, 0x0000,
- 0x0000, 0x0000, 0xf7be, 0x8a67, 0x03d0, 0x0000, 0x0000, 0x0000, 0x95d0, 0xc906,
- 0x03b1, 0x0000, 0x0000, 0x0000, 0x64ce, 0xd96c, 0x0392, 0x0000, 0x0000, 0x0000,
- 0x97ba, 0xa16f, 0x0373, 0x0000, 0x0000, 0x0000, 0x463c, 0xc51a, 0x0354, 0x0000,
- 0x0000, 0x0000, 0xef0a, 0xe93e, 0x0335, 0x0000, 0x0000, 0x0000, 0x526a, 0xa466,
- 0x0316, 0x0000, 0x0000, 0x0000, 0x4140, 0xa94d, 0x02f5, 0x0000, 0x0000, 0x0000,
- 0xb4ec, 0xce68, 0x02d8, 0x0000, 0x0000, 0x0000, 0x4fa2, 0x8490, 0x02b9, 0x0000,
- 0x0000, 0x0000, 0x4e60, 0xca98, 0x0298, 0x0000, 0x0000, 0x0000, 0x08dc, 0xe09c,
- 0x027a, 0x0000, 0x0000, 0x0000, 0x2b90, 0xc7e3, 0x025c, 0x0000, 0x0000, 0x0000,
- 0x5a7c, 0xf8ef, 0x023c, 0x0000, 0x0000, 0x0000, 0x5022, 0x9d58, 0x021e, 0x0000,
- 0x0000, 0x0000, 0x553a, 0xe242, 0x01ff, 0x0000, 0x0000, 0x0000, 0x7e6e, 0xb54d,
- 0x01e0, 0x0000, 0x0000, 0x0000, 0xd2d4, 0xa88c, 0x01c1, 0x0000, 0x0000, 0x0000,
- 0x75b6, 0xfe6d, 0x01a2, 0x0000, 0x0000, 0x0000, 0x3bb2, 0xf04c, 0x0183, 0x0000,
- 0x0000, 0x0000, 0xc2d0, 0xc046, 0x0163, 0x0000, 0x0000, 0x0000, 0x250c, 0xf9d6,
- 0x0145, 0x0000, 0x0000, 0x0000, 0xb7b4, 0x8a0d, 0x0126, 0x0000, 0x0000, 0x0000,
- 0x1a72, 0xe4f5, 0x0107, 0x0000, 0x0000, 0x0000, 0x825c, 0xa9b8, 0x00e8, 0x0000,
- 0x0000, 0x0000, 0x6c90, 0xc9ad, 0x00c6, 0x0000, 0x0000, 0x0000, 0x4d00, 0xd1bb,
- 0x00aa, 0x0000, 0x0000, 0x0000, 0xa4a0, 0xee01, 0x0087, 0x0000, 0x0000, 0x0000,
- 0x89a8, 0xbe9f, 0x006b, 0x0000, 0x0000, 0x0000, 0x038e, 0xc80c, 0x004d, 0x0000,
- 0x0000, 0x0000, 0xfe26, 0x8384, 0x002e, 0x0000, 0x0000, 0x0000, 0xcd90, 0xca57,
- 0x000e, 0x0000
-};
-
-void MacroAssembler::libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
- Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
- Label B1_13, B1_14, B1_15;
-
- assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
-
- address zero_none = (address)_zero_none;
- address _4onpi_d = (address)__4onpi_d;
- address TWO_32H = (address)_TWO_32H;
- address pi04_3d = (address)_pi04_3d;
- address pi04_5d = (address)_pi04_5d;
- address SCALE = (address)_SCALE;
- address zeros = (address)_zeros;
- address pi04_2d = (address)_pi04_2d;
- address TWO_12H = (address)_TWO_12H;
- address _4onpi_31l = (address)__4onpi_31l;
-
- bind(B1_1);
- push(ebp);
- movl(ebp, esp);
- andl(esp, -16);
- push(esi);
- push(edi);
- push(ebx);
- subl(esp, 20);
- movzwl(ebx, Address(ebp, 16));
- andl(ebx, 32767);
- movl(eax, Address(ebp, 20));
- cmpl(ebx, 16413);
- movl(esi, Address(ebp, 24));
- movl(Address(esp, 4), eax);
- jcc(Assembler::greaterEqual, B1_8);
-
- bind(B1_2);
- fld_x(Address(ebp, 8));
- fld_d(ExternalAddress(_4onpi_d)); //0x6dc9c883UL, 0x3ff45f30UL
- fmul(1);
- fstp_x(Address(esp, 8));
- movzwl(ecx, Address(esp, 16));
- negl(ecx);
- addl(ecx, 30);
- movl(eax, Address(esp, 12));
- shrl(eax);
- cmpl(Address(esp, 4), 0);
- jcc(Assembler::notEqual, B1_4);
-
- bind(B1_3);
- lea(ecx, Address(eax, 1));
- andl(ecx, -2);
- jmp(B1_5);
-
- bind(B1_4);
- movl(ecx, eax);
- addl(eax, Address(esp, 4));
- movl(edx, eax);
- andl(edx, 1);
- addl(ecx, edx);
-
- bind(B1_5);
- fld_d(ExternalAddress(TWO_32H)); //0x00000000UL, 0x41f80000UL
- cmpl(ebx, 16400);
- movl(Address(esp, 0), ecx);
- fild_s(Address(esp, 0));
- jcc(Assembler::greaterEqual, B1_7);
-
- bind(B1_6);
- fld_d(ExternalAddress(pi04_3d)); //0x54442d00UL, 0x3fe921fbUL
- fmul(1);
- fsubp(3);
- fxch(1);
- fmul(2);
- fld_s(2);
- fadd(1);
- fsubrp(1);
- fld_s(0);
- fxch(1);
- fsuba(3);
- fld_d(ExternalAddress(8 + pi04_3d)); //0x98cc5180UL, 0x3ce84698UL
- fmul(3);
- fsuba(2);
- fxch(1);
- fsub(2);
- fsubrp(1);
- faddp(3);
- fld_d(ExternalAddress(16 + pi04_3d)); //0xcbb5bf6cUL, 0xb9dfc8f8UL
- fmulp(2);
- fld_s(1);
- fsubr(1);
- fsuba(1);
- fxch(2);
- fsubp(1);
- faddp(2);
- fxch(1);
- jmp(B1_15);
-
- bind(B1_7);
- fld_d(ExternalAddress(pi04_5d)); //0x54400000UL, 0x3fe921fbUL
- fmul(1);
- fsubp(3);
- fxch(1);
- fmul(2);
- fld_s(2);
- fadd(1);
- fsubrp(1);
- fld_s(0);
- fxch(1);
- fsuba(3);
- fld_d(ExternalAddress(8 + pi04_5d)); //0x1a600000UL, 0x3dc0b461UL
- fmul(3);
- fsuba(2);
- fxch(1);
- fsub(2);
- fsubrp(1);
- faddp(3);
- fld_d(ExternalAddress(16 + pi04_5d)); //0x2e000000UL, 0x3b93198aUL
- fmul(2);
- fld_s(0);
- fsubr(2);
- fsuba(2);
- fxch(1);
- fsubp(2);
- fxch(1);
- faddp(3);
- fld_d(ExternalAddress(24 + pi04_5d)); //0x25200000UL, 0x396b839aUL
- fmul(2);
- fld_s(0);
- fsubr(2);
- fsuba(2);
- fxch(1);
- fsubp(2);
- fxch(1);
- faddp(3);
- fld_d(ExternalAddress(32 + pi04_5d)); //0x533e63a0UL, 0x37027044UL
- fmulp(2);
- fld_s(1);
- fsubr(1);
- fsuba(1);
- fxch(2);
- fsubp(1);
- faddp(2);
- fxch(1);
- jmp(B1_15);
-
- bind(B1_8);
- fld_x(Address(ebp, 8));
- addl(ebx, -16417);
- fmul_d(as_Address(ExternalAddress(SCALE))); //0x00000000UL, 0x32600000UL
- movl(eax, -2078209981);
- imull(ebx);
- addl(edx, ebx);
- movl(ecx, ebx);
- sarl(edx, 4);
- sarl(ecx, 31);
- subl(edx, ecx);
- movl(eax, edx);
- shll(eax, 5);
- fstp_x(Address(ebp, 8));
- fld_x(Address(ebp, 8));
- subl(eax, edx);
- movl(Address(ebp, 8), 0);
- subl(ebx, eax);
- fld_x(Address(ebp, 8));
- cmpl(ebx, 17);
- fsuba(1);
- jcc(Assembler::less, B1_10);
-
- bind(B1_9);
- lea(eax, Address(noreg, edx, Address::times_8));
- lea(ecx, Address(eax, edx, Address::times_4));
- incl(edx);
- fld_x(Address(_4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmul(2);
- fld_x(Address(12 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmul(2);
- fld_s(0);
- fadd(2);
- fsuba(2);
- fxch(1);
- faddp(2);
- fld_s(1);
- fadd(1);
- fstp_x(Address(esp, 8));
- andl(Address(esp, 8), -16777216);
- fld_x(Address(esp, 8));
- fsubp(1);
- jmp(B1_11);
-
- bind(B1_10);
- fld_d(ExternalAddress(zeros)); //0x00000000UL, 0x00000000UL
- fld_s(0);
-
- bind(B1_11);
- fld_s(0);
- lea(eax, Address(noreg, edx, Address::times_8));
- fld_s(3);
- lea(edx, Address(eax, edx, Address::times_4));
- fld_x(Address(_4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
- fmul(6);
- movl(Address(esp, 0), edx);
- fadda(2);
- fxch(2);
- fsuba(3);
- fxch(2);
- faddp(3);
- fxch(2);
- faddp(3);
- fld_x(Address(12 + _4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
- fmula(2);
- fld_s(2);
- fadd(2);
- fld_s(0);
- fxch(1);
- fsubra(3);
- fxch(3);
- fchs();
- faddp(4);
- fxch(3);
- faddp(4);
- fxch(2);
- fadd(3);
- fxch(2);
- fmul(5);
- fadda(2);
- fld_s(4);
- fld_x(Address(24 + _4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
- fmula(1);
- fxch(1);
- fadda(4);
- fxch(4);
- fstp_x(Address(esp, 8));
- movzwl(ebx, Address(esp, 16));
- andl(ebx, 32767);
- cmpl(ebx, 16415);
- jcc(Assembler::greaterEqual, B1_13);
-
- bind(B1_12);
- negl(ebx);
- addl(ebx, 30);
- movl(ecx, ebx);
- movl(eax, Address(esp, 12));
- shrl(eax);
- shll(eax);
- movl(Address(esp, 12), eax);
- movl(Address(esp, 8), 0);
- shrl(eax);
- jmp(B1_14);
-
- bind(B1_13);
- negl(ebx);
- addl(ebx, 30);
- movl(ecx, ebx);
- movl(edx, Address(esp, 8));
- shrl(edx);
- shll(edx);
- negl(ecx);
- movl(eax, Address(esp, 12));
- shll(eax);
- movl(ecx, ebx);
- movl(Address(esp, 8), edx);
- shrl(edx);
- orl(eax, edx);
-
- bind(B1_14);
- fld_x(Address(esp, 8));
- addl(eax, Address(esp, 4));
- fsubp(3);
- fmul(6);
- fld_s(4);
- movl(edx, eax);
- andl(edx, 1);
- fadd(3);
- movl(ecx, Address(esp, 0));
- fsuba(3);
- fxch(3);
- faddp(5);
- fld_s(1);
- fxch(3);
- fadd_d(Address(zero_none, RelocationHolder::none).plus_disp(edx, Address::times_8));
- fadda(3);
- fsub(3);
- faddp(2);
- fxch(1);
- faddp(4);
- fld_s(2);
- fadd(2);
- fsuba(2);
- fxch(3);
- faddp(2);
- fxch(1);
- faddp(3);
- fld_s(0);
- fadd(2);
- fsuba(2);
- fxch(1);
- faddp(2);
- fxch(1);
- faddp(2);
- fld_s(2);
- fld_x(Address(36 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmula(1);
- fld_s(1);
- fadd(3);
- fsuba(3);
- fxch(2);
- faddp(3);
- fxch(2);
- faddp(3);
- fxch(1);
- fmul(4);
- fld_s(0);
- fadd(2);
- fsuba(2);
- fxch(1);
- faddp(2);
- fxch(1);
- faddp(2);
- fld_s(2);
- fld_x(Address(48 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmula(1);
- fld_s(1);
- fadd(3);
- fsuba(3);
- fxch(2);
- faddp(3);
- fxch(2);
- faddp(3);
- fld_s(3);
- fxch(2);
- fmul(5);
- fld_x(Address(60 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmula(3);
- fxch(3);
- faddp(1);
- fld_s(0);
- fadd(2);
- fsuba(2);
- fxch(1);
- faddp(2);
- fxch(1);
- faddp(3);
- fld_s(3);
- fxch(2);
- fmul(5);
- fld_x(Address(72 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmula(3);
- fxch(3);
- faddp(1);
- fld_s(0);
- fadd(2);
- fsuba(2);
- fxch(1);
- faddp(2);
- fxch(1);
- faddp(3);
- fxch(1);
- fmulp(4);
- fld_x(Address(84 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
- fmulp(3);
- fxch(2);
- faddp(3);
- fld_s(2);
- fadd(2);
- fld_d(ExternalAddress(TWO_32H)); //0x00000000UL, 0x41f80000UL
- fmul(1);
- fadda(1);
- fsubp(1);
- fsuba(2);
- fxch(3);
- faddp(2);
- faddp(1);
- fld_d(ExternalAddress(pi04_2d)); //0x54400000UL, 0x3fe921fbUL
- fld_s(0);
- fmul(2);
- fxch(2);
- fadd(3);
- fxch(1);
- fmulp(3);
- fmul_d(as_Address(ExternalAddress(8 + pi04_2d))); //0x1a626331UL, 0x3dc0b461UL
- faddp(1);
-
- bind(B1_15);
- fld_d(ExternalAddress(TWO_12H)); //0x00000000UL, 0x40b80000UL
- fld_s(2);
- fadd(2);
- fmula(1);
- fstp_x(Address(esp, 8));
- fld_x(Address(esp, 8));
- fadd(1);
- fsubrp(1);
- fst_d(Address(esi, 0));
- fsubp(2);
- faddp(1);
- fstp_d(Address(esi, 8));
- addl(esp, 20);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-}
-
-ALIGNED_(16) juint _L_2il0floatpacket_0[] =
-{
- 0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
-};
-
-ALIGNED_(16) juint _Pi4Inv[] =
-{
- 0x6dc9c883UL, 0x3ff45f30UL
-};
-
-ALIGNED_(16) juint _Pi4x3[] =
-{
- 0x54443000UL, 0xbfe921fbUL, 0x3b39a000UL, 0x3d373dcbUL, 0xe0e68948UL,
- 0xba845c06UL
-};
-
-ALIGNED_(16) juint _Pi4x4[] =
-{
- 0x54400000UL, 0xbfe921fbUL, 0x1a600000UL, 0xbdc0b461UL, 0x2e000000UL,
- 0xbb93198aUL, 0x252049c1UL, 0xb96b839aUL
-};
-
-ALIGNED_(16) jushort _SP[] =
-{
- 0xaaab, 0xaaaa, 0xaaaa, 0xaaaa, 0xbffc, 0x0000, 0x8887, 0x8888, 0x8888, 0x8888,
- 0x3ff8, 0x0000, 0xc527, 0x0d00, 0x00d0, 0xd00d, 0xbff2, 0x0000, 0x45f6, 0xb616,
- 0x1d2a, 0xb8ef, 0x3fec, 0x0000, 0x825b, 0x3997, 0x2b3f, 0xd732, 0xbfe5, 0x0000,
- 0xbf33, 0x8bb4, 0x2fda, 0xb092, 0x3fde, 0x0000, 0x44a6, 0xed1a, 0x29ef, 0xd73e,
- 0xbfd6, 0x0000, 0x8610, 0x307f, 0x62a1, 0xc921, 0x3fce, 0x0000
-};
-
-ALIGNED_(16) jushort _CP[] =
-{
- 0x0000, 0x0000, 0x0000, 0x8000, 0xbffe, 0x0000, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa,
- 0x3ffa, 0x0000, 0x9c2f, 0x0b60, 0x60b6, 0xb60b, 0xbff5, 0x0000, 0xf024, 0x0cac,
- 0x00d0, 0xd00d, 0x3fef, 0x0000, 0x03fe, 0x3f65, 0x7dbb, 0x93f2, 0xbfe9, 0x0000,
- 0xd84d, 0xadee, 0xc698, 0x8f76, 0x3fe2, 0x0000, 0xdaba, 0xfe79, 0xea36, 0xc9c9,
- 0xbfda, 0x0000, 0x3ac6, 0x0ba0, 0x07ce, 0xd585, 0x3fd2, 0x0000
-};
-
-ALIGNED_(16) juint _ones[] =
-{
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xbff00000UL
-};
-
-void MacroAssembler::libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
- Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
- Label B1_13, B1_14, B1_15, B1_16, B1_17, B1_18, B1_19, B1_20, B1_21, B1_22, B1_23;
- Label B1_24, B1_25, B1_26, B1_27, B1_28, B1_29, B1_30, B1_31, B1_32, B1_33, B1_34;
- Label B1_35, B1_36, B1_37, B1_38, B1_39, B1_40, B1_41, B1_42, B1_43, B1_44, B1_45, B1_46;
-
- assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
-
- address L_2il0floatpacket_0 = (address)_L_2il0floatpacket_0;
- address Pi4Inv = (address)_Pi4Inv;
- address Pi4x3 = (address)_Pi4x3;
- address Pi4x4 = (address)_Pi4x4;
- address ones = (address)_ones;
- address CP = (address)_CP;
- address SP = (address)_SP;
-
- bind(B1_1);
- push(ebp);
- movl(ebp, esp);
- andl(esp, -64);
- push(esi);
- push(edi);
- push(ebx);
- subl(esp, 52);
- movl(eax, Address(ebp, 16));
- movl(edx, Address(ebp, 20));
- movl(Address(esp, 32), eax);
- movl(Address(esp, 36), edx);
-
- bind(B1_2);
- fnstcw(Address(esp, 30));
-
- bind(B1_3);
- movsd(xmm1, Address(ebp, 8));
- movl(esi, Address(ebp, 12));
- movl(eax, esi);
- andl(eax, 2147483647);
- andps(xmm1, ExternalAddress(L_2il0floatpacket_0)); //0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
- shrl(esi, 31);
- movl(Address(esp, 40), eax);
- cmpl(eax, 1104150528);
- movsd(Address(ebp, 8), xmm1);
- jcc(Assembler::aboveEqual, B1_11);
-
- bind(B1_4);
- movsd(xmm0, ExternalAddress(Pi4Inv)); //0x6dc9c883UL, 0x3ff45f30UL
- mulsd(xmm0, xmm1);
- movzwl(edx, Address(esp, 30));
- movl(eax, edx);
- andl(eax, 768);
- movsd(Address(esp, 0), xmm0);
- cmpl(eax, 768);
- jcc(Assembler::equal, B1_42);
-
- bind(B1_5);
- orl(edx, -64768);
- movw(Address(esp, 28), edx);
-
- bind(B1_6);
- fldcw(Address(esp, 28));
-
- bind(B1_7);
- movsd(xmm1, Address(ebp, 8));
- movl(ebx, 1);
-
- bind(B1_8);
- movl(Address(esp, 12), ebx);
- movl(ebx, Address(esp, 4));
- movl(eax, ebx);
- movl(Address(esp, 8), esi);
- movl(esi, ebx);
- shrl(esi, 20);
- andl(eax, 1048575);
- movl(ecx, esi);
- orl(eax, 1048576);
- negl(ecx);
- movl(edx, eax);
- addl(ecx, 19);
- addl(esi, 13);
- movl(Address(esp, 24), ecx);
- shrl(edx);
- movl(ecx, esi);
- shll(eax);
- movl(ecx, Address(esp, 24));
- movl(esi, Address(esp, 0));
- shrl(esi);
- orl(eax, esi);
- cmpl(ebx, 1094713344);
- movsd(Address(esp, 16), xmm1);
- fld_d(Address(esp, 16));
- cmov32(Assembler::below, eax, edx);
- movl(esi, Address(esp, 8));
- lea(edx, Address(eax, 1));
- movl(ebx, edx);
- andl(ebx, -2);
- movl(Address(esp, 16), ebx);
- fild_s(Address(esp, 16));
- movl(ebx, Address(esp, 12));
- cmpl(Address(esp, 40), 1094713344);
- jcc(Assembler::aboveEqual, B1_10);
-
- bind(B1_9);
- fld_d(ExternalAddress(Pi4x3)); //0x54443000UL, 0xbfe921fbUL
- fmul(1);
- faddp(2);
- fld_d(ExternalAddress(8 + Pi4x3)); //0x3b39a000UL, 0x3d373dcbUL
- fmul(1);
- faddp(2);
- fld_d(ExternalAddress(16 + Pi4x3)); //0xe0e68948UL, 0xba845c06UL
- fmulp(1);
- faddp(1);
- jmp(B1_17);
-
- bind(B1_10);
- fld_d(ExternalAddress(Pi4x4)); //0x54400000UL, 0xbfe921fbUL
- fmul(1);
- faddp(2);
- fld_d(ExternalAddress(8 + Pi4x4)); //0x1a600000UL, 0xbdc0b461UL
- fmul(1);
- faddp(2);
- fld_d(ExternalAddress(16 + Pi4x4)); //0x2e000000UL, 0xbb93198aUL
- fmul(1);
- faddp(2);
- fld_d(ExternalAddress(24 + Pi4x4)); //0x252049c1UL, 0xb96b839aUL
- fmulp(1);
- faddp(1);
- jmp(B1_17);
-
- bind(B1_11);
- movzwl(edx, Address(esp, 30));
- movl(eax, edx);
- andl(eax, 768);
- cmpl(eax, 768);
- jcc(Assembler::equal, B1_43);
- bind(B1_12);
- orl(edx, -64768);
- movw(Address(esp, 28), edx);
-
- bind(B1_13);
- fldcw(Address(esp, 28));
-
- bind(B1_14);
- movsd(xmm1, Address(ebp, 8));
- movl(ebx, 1);
-
- bind(B1_15);
- movsd(Address(esp, 16), xmm1);
- fld_d(Address(esp, 16));
- addl(esp, -32);
- lea(eax, Address(esp, 32));
- fstp_x(Address(esp, 0));
- movl(Address(esp, 12), 0);
- movl(Address(esp, 16), eax);
- call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_reduce_pi04l())));
-
- bind(B1_46);
- addl(esp, 32);
-
- bind(B1_16);
- fld_d(Address(esp, 0));
- lea(edx, Address(eax, 1));
- fld_d(Address(esp, 8));
- faddp(1);
-
- bind(B1_17);
- movl(ecx, edx);
- addl(eax, 3);
- shrl(ecx, 2);
- andl(ecx, 1);
- shrl(eax, 2);
- xorl(esi, ecx);
- movl(ecx, Address(esp, 36));
- andl(eax, 1);
- andl(ecx, 3);
- cmpl(ecx, 3);
- jcc(Assembler::notEqual, B1_25);
-
- bind(B1_18);
- fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
- fld_s(1);
- fmul((2));
- testb(edx, 2);
- fmula((1));
- fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
- faddp(2);
- fmula(1);
- fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
- fmul(1);
- fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(62 + CP)); //0xd84d, 0xadee, 0xc6
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
- faddp(1);
- fmul(1);
- fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
- faddp(1);
- fmulp(1);
- fld_d(Address(ones, RelocationHolder::none).plus_disp(esi, Address::times_8));
- fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
- jcc(Assembler::equal, B1_22);
-
- bind(B1_19);
- fmulp(4);
- testl(ebx, ebx);
- fxch(2);
- fmul(3);
- movl(eax, Address(esp, 2));
- faddp(3);
- fxch(2);
- fstp_d(Address(eax, 0));
- fmula(1);
- faddp(1);
- fstp_d(Address(eax, 8));
- jcc(Assembler::equal, B1_21);
-
- bind(B1_20);
- fldcw(Address(esp, 30));
-
- bind(B1_21);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-
- bind(B1_22);
- fxch(1);
- fmulp(4);
- testl(ebx, ebx);
- fxch(2);
- fmul(3);
- movl(eax, Address(esp, 32));
- faddp(3);
- fxch(2);
- fstp_d(Address(eax, 8));
- fmula(1);
- faddp(1);
- fstp_d(Address(eax, 0));
- jcc(Assembler::equal, B1_24);
-
- bind(B1_23);
- fldcw(Address(esp, 30));
-
- bind(B1_24);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-
- bind(B1_25);
- testb(Address(esp, 36), 2);
- jcc(Assembler::equal, B1_33);
-
- bind(B1_26);
- fld_s(0);
- testb(edx, 2);
- fmul(1);
- fld_s(0);
- fmul(1);
- jcc(Assembler::equal, B1_30);
-
- bind(B1_27);
- fstp_d(2);
- fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
- testl(ebx, ebx);
- fmul(2);
- fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
- fmul(3);
- fld_x(ExternalAddress(60 + CP)); //0xd84d, 0xadee, 0xc6
- movl(eax, Address(rsp, 32));
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
- faddp(2);
- fxch(1);
- fmulp(3);
- fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
- faddp(1);
- fmulp(1);
- faddp(1);
- fld_d(Address(ones, RelocationHolder::none).plus_disp(rsi, Address::times_8));
- fmula(1);
- faddp(1);
- fstp_d(Address(eax, 8));
- jcc(Assembler::equal, B1_29);
-
- bind(B1_28);
- fldcw(Address(esp, 30));
-
- bind(B1_29);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-
- bind(B1_30);
- fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
- testl(ebx, ebx);
- fmul(1);
- fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
- fmul(2);
- fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
- movl(eax, Address(rsp, 32));
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
- faddp(2);
- fxch(1);
- fmulp(2);
- fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
- faddp(1);
- fmulp(2);
- faddp(1);
- fld_d(Address(ones, RelocationHolder::none).plus_disp(rsi, Address::times_8));
- fmulp(2);
- fmul(1);
- faddp(1);
- fstp_d(Address(eax, 8));
- jcc(Assembler::equal, B1_32);
-
- bind(B1_31);
- fldcw(Address(esp, 30));
-
- bind(B1_32);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-
- bind(B1_33);
- testb(Address(esp, 36), 1);
- jcc(Assembler::equal, B1_41);
-
- bind(B1_34);
- fld_s(0);
- testb(edx, 2);
- fmul(1);
- fld_s(0);
- fmul(1);
- jcc(Assembler::equal, B1_38);
-
- bind(B1_35);
- fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
- testl(ebx, ebx);
- fmul(1);
- fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
- fmul(2);
- fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
- faddp(2);
- fxch(1);
- fmul(2);
- fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
- faddp(2);
- fxch(1);
- fmulp(2);
- fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
- faddp(1);
- fmulp(2);
- faddp(1);
- fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
- fmulp(2);
- fmul(1);
- movl(eax, Address(esp, 32));
- faddp(1);
- fstp_d(Address(eax, 0));
- jcc(Assembler::equal, B1_37);
-
- bind(B1_36);
- fldcw(Address(esp, 30));
-
- bind(B1_37);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
-
- bind(B1_38);
- fstp_d(2);
- fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
- testl(ebx, ebx);
- fmul(2);
- fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
- fmul(3);
- fld_x(ExternalAddress(60 + CP)); //0xd84d, 0xadee, 0xc6
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
- faddp(2);
- fxch(1);
- fmul(3);
- fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
- faddp(2);
- fxch(1);
- fmulp(3);
- fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
- faddp(1);
- fmulp(1);
- faddp(1);
- fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
- fmula(1);
- movl(eax, Address(esp, 32));
- faddp(1);
- fstp_d(Address(eax, 0));
- jcc(Assembler::equal, B1_40);
-
- bind(B1_39);
- fldcw(Address(esp, 30));
- bind(B1_40);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
- bind(B1_41);
- fstp_d(0);
- addl(esp, 52);
- pop(ebx);
- pop(edi);
- pop(esi);
- movl(esp, ebp);
- pop(ebp);
- ret(0);
- bind(B1_42);
- xorl(ebx, ebx);
- jmp(B1_8);
- bind(B1_43);
- xorl(ebx, ebx);
- jmp(B1_15);
-}
-
-ALIGNED_(16) juint _static_const_table_sin[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
- 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
- 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
- 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
- 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
- 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
- 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
- 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
- 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
- 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
- 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
- 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
- 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
- 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
- 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
- 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
- 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
- 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
- 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
- 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
- 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
- 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
- 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
- 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
- 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
- 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
- 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
- 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
- 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
- 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
- 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
- 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
- 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
- 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
- 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
- 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
- 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
- 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
- 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
- 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
- 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
- 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
- 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
- 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
- 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
- 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
- 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
- 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
- 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
- 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
- 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
- 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
- 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
- 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
- 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
- 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
- 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
- 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
- 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
- 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
- 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
- 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
- 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
- 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
- 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
- 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
- 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
- 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
- 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
- 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
- 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
- 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
- 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
- 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
- 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
- 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0x3ff00000UL, 0x55555555UL, 0xbfc55555UL, 0x00000000UL,
- 0xbfe00000UL, 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL,
- 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL, 0xa556c734UL,
- 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL, 0x1a600000UL, 0x3d90b461UL,
- 0x1a600000UL, 0x3d90b461UL, 0x54400000UL, 0x3fb921fbUL, 0x00000000UL,
- 0x00000000UL, 0x2e037073UL, 0x3b63198aUL, 0x00000000UL, 0x00000000UL,
- 0x6dc9c883UL, 0x40245f30UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x43380000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x43600000UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x3c800000UL, 0x00000000UL,
- 0x00000000UL, 0xffffffffUL, 0x3fefffffUL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x80000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x3fe00000UL,
- 0x00000000UL, 0x3fe00000UL
-};
-
-void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register edx) {
-
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, start;
- assert_different_registers(eax, ebx, edx);
- address static_const_table_sin = (address)_static_const_table_sin;
-
- bind(start);
- subl(rsp, 120);
- movl(Address(rsp, 56), ebx);
- lea(ebx, ExternalAddress(static_const_table_sin));
- movsd(xmm0, Address(rsp, 128));
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- subl(eax, 12336);
- cmpl(eax, 4293);
- jcc(Assembler::above, L_2TAG_PACKET_0_0_2);
- movsd(xmm1, Address(ebx, 2160));
- mulsd(xmm1, xmm0);
- movsd(xmm5, Address(ebx, 2272));
- movdqu(xmm4, Address(ebx, 2256));
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- movsd(xmm3, Address(ebx, 2128));
- movdqu(xmm2, Address(ebx, 2112));
- addpd(xmm1, xmm5);
- cvttsd2sil(edx, xmm1);
- cvtsi2sdl(xmm1, edx);
- mulsd(xmm3, xmm1);
- unpcklpd(xmm1, xmm1);
- addl(edx, 1865216);
- movdqu(xmm4, xmm0);
- andl(edx, 63);
- movdqu(xmm5, Address(ebx, 2096));
- lea(eax, Address(ebx, 0));
- shll(edx, 5);
- addl(eax, edx);
- mulpd(xmm2, xmm1);
- subsd(xmm0, xmm3);
- mulsd(xmm1, Address(ebx, 2144));
- subsd(xmm4, xmm3);
- movsd(xmm7, Address(eax, 8));
- unpcklpd(xmm0, xmm0);
- movapd(xmm3, xmm4);
- subsd(xmm4, xmm2);
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm2);
- movdqu(xmm6, Address(ebx, 2064));
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm2);
- movdqu(xmm2, Address(eax, 0));
- subsd(xmm1, xmm3);
- movsd(xmm3, Address(eax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, Address(ebx, 2080));
- mulsd(xmm4, Address(eax, 0));
- addpd(xmm6, Address(ebx, 2048));
- mulpd(xmm5, xmm0);
- movapd(xmm0, xmm3);
- addsd(xmm3, Address(eax, 8));
- mulpd(xmm1, xmm7);
- movapd(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movsd(xmm5, Address(eax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(eax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm5, xmm0);
- addsd(xmm3, xmm7);
- addsd(xmm1, xmm5);
- addsd(xmm1, xmm3);
- addsd(xmm1, xmm6);
- unpckhpd(xmm6, xmm6);
- addsd(xmm1, xmm6);
- addsd(xmm4, xmm1);
- movsd(Address(rsp, 0), xmm4);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_0_0_2);
- jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
- shrl(eax, 4);
- cmpl(eax, 268434685);
- jcc(Assembler::notEqual, L_2TAG_PACKET_3_0_2);
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_3_0_2);
- movsd(xmm3, Address(ebx, 2192));
- mulsd(xmm3, xmm0);
- subsd(xmm3, xmm0);
- mulsd(xmm3, Address(ebx, 2208));
- movsd(Address(rsp, 0), xmm0);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movl(eax, Address(rsp, 132));
- andl(eax, 2146435072);
- cmpl(eax, 2146435072);
- jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
- subl(rsp, 32);
- movsd(Address(rsp, 0), xmm0);
- lea(eax, Address(rsp, 40));
- movl(Address(rsp, 8), eax);
- movl(eax, 2);
- movl(Address(rsp, 12), eax);
- call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_sin_cos_huge())));
- addl(rsp, 32);
- fld_d(Address(rsp, 16));
- jmp(L_2TAG_PACKET_1_0_2);
- bind(L_2TAG_PACKET_4_0_2);
- fld_d(Address(rsp, 128));
- fmul_d(Address(ebx, 2240));
- bind(L_2TAG_PACKET_1_0_2);
- movl(ebx, Address(rsp, 56));
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - COS()
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-//
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// Inputs with |X| < 2^-252 are treated specially as
-// 1 - |x|.
-//
-// Special cases:
-// cos(NaN) = quiet NaN, and raise invalid exception
-// cos(INF) = NaN and raise invalid exception
-// cos(0) = 1
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _static_const_table_cos[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
- 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
- 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
- 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
- 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
- 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
- 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
- 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
- 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
- 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
- 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
- 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
- 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
- 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
- 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
- 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
- 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
- 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
- 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
- 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
- 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
- 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
- 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
- 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
- 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
- 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
- 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
- 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
- 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
- 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
- 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
- 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
- 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
- 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
- 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
- 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
- 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
- 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
- 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
- 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
- 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
- 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
- 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
- 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
- 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
- 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
- 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
- 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
- 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
- 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
- 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
- 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
- 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
- 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
- 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
- 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
- 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
- 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
- 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
- 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
- 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
- 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
- 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
- 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
- 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
- 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
- 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
- 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
- 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
- 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
- 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
- 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
- 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
- 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
- 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
- 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0x3ff00000UL, 0x55555555UL, 0xbfc55555UL, 0x00000000UL,
- 0xbfe00000UL, 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL,
- 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL, 0xa556c734UL,
- 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL, 0x1a600000UL, 0x3d90b461UL,
- 0x1a600000UL, 0x3d90b461UL, 0x54400000UL, 0x3fb921fbUL, 0x00000000UL,
- 0x00000000UL, 0x2e037073UL, 0x3b63198aUL, 0x00000000UL, 0x00000000UL,
- 0x6dc9c883UL, 0x40245f30UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x43380000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x3ff00000UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
-};
-
-//registers,
-// input: (rbp + 8)
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, rbx (tmp)
-
-// Code generated by Intel C compiler for LIBM library
-
-void MacroAssembler::fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
- Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
-
- assert_different_registers(tmp, eax, ecx, edx);
-
- address static_const_table_cos = (address)_static_const_table_cos;
-
- bind(start);
- subl(rsp, 120);
- movl(Address(rsp, 56), tmp);
- lea(tmp, ExternalAddress(static_const_table_cos));
- movsd(xmm0, Address(rsp, 128));
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- subl(eax, 12336);
- cmpl(eax, 4293);
- jcc(Assembler::above, L_2TAG_PACKET_0_0_2);
- movsd(xmm1, Address(tmp, 2160));
- mulsd(xmm1, xmm0);
- movdqu(xmm5, Address(tmp, 2240));
- movsd(xmm4, Address(tmp, 2224));
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- movsd(xmm3, Address(tmp, 2128));
- movdqu(xmm2, Address(tmp, 2112));
- addpd(xmm1, xmm5);
- cvttsd2sil(edx, xmm1);
- cvtsi2sdl(xmm1, edx);
- mulsd(xmm3, xmm1);
- unpcklpd(xmm1, xmm1);
- addl(edx, 1865232);
- movdqu(xmm4, xmm0);
- andl(edx, 63);
- movdqu(xmm5, Address(tmp, 2096));
- lea(eax, Address(tmp, 0));
- shll(edx, 5);
- addl(eax, edx);
- mulpd(xmm2, xmm1);
- subsd(xmm0, xmm3);
- mulsd(xmm1, Address(tmp, 2144));
- subsd(xmm4, xmm3);
- movsd(xmm7, Address(eax, 8));
- unpcklpd(xmm0, xmm0);
- movapd(xmm3, xmm4);
- subsd(xmm4, xmm2);
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm2);
- movdqu(xmm6, Address(tmp, 2064));
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm2);
- movdqu(xmm2, Address(eax, 0));
- subsd(xmm1, xmm3);
- movsd(xmm3, Address(eax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, Address(tmp, 2080));
- mulsd(xmm4, Address(eax, 0));
- addpd(xmm6, Address(tmp, 2048));
- mulpd(xmm5, xmm0);
- movapd(xmm0, xmm3);
- addsd(xmm3, Address(eax, 8));
- mulpd(xmm1, xmm7);
- movapd(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movsd(xmm5, Address(eax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(eax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm5, xmm0);
- addsd(xmm3, xmm7);
- addsd(xmm1, xmm5);
- addsd(xmm1, xmm3);
- addsd(xmm1, xmm6);
- unpckhpd(xmm6, xmm6);
- addsd(xmm1, xmm6);
- addsd(xmm4, xmm1);
- movsd(Address(rsp, 0), xmm4);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_0_0_2);
- jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- pinsrw(xmm0, eax, 3);
- movsd(xmm1, Address(tmp, 2192));
- subsd(xmm1, xmm0);
- movsd(Address(rsp, 0), xmm1);
- fld_d(Address(rsp, 0));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movl(eax, Address(rsp, 132));
- andl(eax, 2146435072);
- cmpl(eax, 2146435072);
- jcc(Assembler::equal, L_2TAG_PACKET_3_0_2);
- subl(rsp, 32);
- movsd(Address(rsp, 0), xmm0);
- lea(eax, Address(rsp, 40));
- movl(Address(rsp, 8), eax);
- movl(eax, 1);
- movl(Address(rsp, 12), eax);
- call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_sin_cos_huge())));
- addl(rsp, 32);
- fld_d(Address(rsp, 8));
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_3_0_2);
- fld_d(Address(rsp, 128));
- fmul_d(Address(tmp, 2208));
-
- bind(L_2TAG_PACKET_1_0_2);
- movl(tmp, Address(rsp, 56));
-}
-
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp
deleted file mode 100644
index f2f2211d88b..00000000000
--- a/hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp
+++ /dev/null
@@ -1,3945 +0,0 @@
-/*
- * Copyright (c) 2015, Intel Corporation.
- * Intel Math Library (LIBM) Source Code
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "asm/assembler.hpp"
-#include "asm/assembler.inline.hpp"
-#include "macroAssembler_x86.hpp"
-
-#ifdef _MSC_VER
-#define ALIGNED_(x) __declspec(align(x))
-#else
-#define ALIGNED_(x) __attribute__ ((aligned(x)))
-#endif
-
-// The 64 bit code is at most SSE2 compliant
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - EXP()
-// ---------------------
-//
-// Description:
-// Let K = 64 (table size).
-// x x/log(2) n
-// e = 2 = 2 * T[j] * (1 + P(y))
-// where
-// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
-// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
-// j/K
-// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-// P(y) is a minimax polynomial approximation of exp(x)-1
-// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-// To avoid problems with arithmetic overflow and underflow,
-// n n1 n2
-// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-// where BIAS is a value of exponent bias.
-//
-// Special cases:
-// exp(NaN) = NaN
-// exp(+INF) = +INF
-// exp(-INF) = 0
-// exp(x) = 1 for subnormals
-// for finite argument, only exp(0)=1 is exact
-// For IEEE double
-// if x > 709.782712893383973096 then exp(x) overflow
-// if x < -745.133219101941108420 then exp(x) underflow
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _cv[] =
-{
- 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL, 0xfefa0000UL,
- 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL, 0x3d1cf79aUL,
- 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL,
- 0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL,
- 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
-};
-
-ALIGNED_(16) juint _shifter[] =
-{
- 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
-};
-
-ALIGNED_(16) juint _mmask[] =
-{
- 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
-};
-
-ALIGNED_(16) juint _bias[] =
-{
- 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
-};
-
-ALIGNED_(16) juint _Tbl_addr[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
- 0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
- 0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
- 0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
- 0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
- 0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
- 0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
- 0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
- 0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
- 0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
- 0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
- 0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
- 0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
- 0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
- 0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
- 0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
- 0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
- 0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
- 0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
- 0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
- 0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
- 0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
- 0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
- 0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
- 0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
- 0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
- 0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
- 0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
- 0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
- 0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
- 0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
- 0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
- 0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
- 0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
- 0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
- 0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
- 0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
- 0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
- 0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
- 0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
- 0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
- 0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
- 0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
- 0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
- 0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
- 0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
- 0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
- 0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
- 0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
- 0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
- 0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
- 0x000fa7c1UL
-};
-
-ALIGNED_(16) juint _ALLONES[] =
-{
- 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
-};
-
-ALIGNED_(16) juint _ebias[] =
-{
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
-};
-
-ALIGNED_(4) juint _XMAX[] =
-{
- 0xffffffffUL, 0x7fefffffUL
-};
-
-ALIGNED_(4) juint _XMIN[] =
-{
- 0x00000000UL, 0x00100000UL
-};
-
-ALIGNED_(4) juint _INF[] =
-{
- 0x00000000UL, 0x7ff00000UL
-};
-
-ALIGNED_(4) juint _ZERO[] =
-{
- 0x00000000UL, 0x00000000UL
-};
-
-ALIGNED_(4) juint _ONE_val[] =
-{
- 0x00000000UL, 0x3ff00000UL
-};
-
-
-// Registers:
-// input: xmm0
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, tmp - r11
-
-// Code generated by Intel C compiler for LIBM library
-
-void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
- Label L_2TAG_PACKET_12_0_2, B1_3, B1_5, start;
-
- assert_different_registers(tmp, eax, ecx, edx);
- jmp(start);
- address cv = (address)_cv;
- address Shifter = (address)_shifter;
- address mmask = (address)_mmask;
- address bias = (address)_bias;
- address Tbl_addr = (address)_Tbl_addr;
- address ALLONES = (address)_ALLONES;
- address ebias = (address)_ebias;
- address XMAX = (address)_XMAX;
- address XMIN = (address)_XMIN;
- address INF = (address)_INF;
- address ZERO = (address)_ZERO;
- address ONE_val = (address)_ONE_val;
-
- bind(start);
- subq(rsp, 24);
- movsd(Address(rsp, 8), xmm0);
- unpcklpd(xmm0, xmm0);
- movdqu(xmm1, ExternalAddress(cv)); // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
- movdqu(xmm6, ExternalAddress(Shifter)); // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
- movdqu(xmm2, ExternalAddress(16+cv)); // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
- movdqu(xmm3, ExternalAddress(32+cv)); // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- movl(edx, 16527);
- subl(edx, eax);
- subl(eax, 15504);
- orl(edx, eax);
- cmpl(edx, INT_MIN);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
- mulpd(xmm1, xmm0);
- addpd(xmm1, xmm6);
- movapd(xmm7, xmm1);
- subpd(xmm1, xmm6);
- mulpd(xmm2, xmm1);
- movdqu(xmm4, ExternalAddress(64+cv)); // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
- mulpd(xmm3, xmm1);
- movdqu(xmm5, ExternalAddress(80+cv)); // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
- subpd(xmm0, xmm2);
- movdl(eax, xmm7);
- movl(ecx, eax);
- andl(ecx, 63);
- shll(ecx, 4);
- sarl(eax, 6);
- movl(edx, eax);
- movdqu(xmm6, ExternalAddress(mmask)); // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
- pand(xmm7, xmm6);
- movdqu(xmm6, ExternalAddress(bias)); // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
- paddq(xmm7, xmm6);
- psllq(xmm7, 46);
- subpd(xmm0, xmm3);
- lea(tmp, ExternalAddress(Tbl_addr));
- movdqu(xmm2, Address(ecx,tmp));
- mulpd(xmm4, xmm0);
- movapd(xmm6, xmm0);
- movapd(xmm1, xmm0);
- mulpd(xmm6, xmm6);
- mulpd(xmm0, xmm6);
- addpd(xmm5, xmm4);
- mulsd(xmm0, xmm6);
- mulpd(xmm6, ExternalAddress(48+cv)); // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
- addsd(xmm1, xmm2);
- unpckhpd(xmm2, xmm2);
- mulpd(xmm0, xmm5);
- addsd(xmm1, xmm0);
- por(xmm2, xmm7);
- unpckhpd(xmm0, xmm0);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm6);
- addl(edx, 894);
- cmpl(edx, 1916);
- jcc (Assembler::above, L_2TAG_PACKET_1_0_2);
- mulsd(xmm0, xmm2);
- addsd(xmm0, xmm2);
- jmp (B1_5);
-
- bind(L_2TAG_PACKET_1_0_2);
- xorpd(xmm3, xmm3);
- movdqu(xmm4, ExternalAddress(ALLONES)); // 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
- movl(edx, -1022);
- subl(edx, eax);
- movdl(xmm5, edx);
- psllq(xmm4, xmm5);
- movl(ecx, eax);
- sarl(eax, 1);
- pinsrw(xmm3, eax, 3);
- movdqu(xmm6, ExternalAddress(ebias)); // 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
- psllq(xmm3, 4);
- psubd(xmm2, xmm3);
- mulsd(xmm0, xmm2);
- cmpl(edx, 52);
- jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
- pand(xmm4, xmm2);
- paddd(xmm3, xmm6);
- subsd(xmm2, xmm4);
- addsd(xmm0, xmm2);
- cmpl(ecx, 1023);
- jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32768);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
- movapd(xmm6, xmm0);
- addsd(xmm0, xmm4);
- mulsd(xmm0, xmm3);
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32752);
- cmpl(ecx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_5_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_5_0_2);
- mulsd(xmm6, xmm3);
- mulsd(xmm4, xmm3);
- movdqu(xmm0, xmm6);
- pxor(xmm6, xmm4);
- psrad(xmm6, 31);
- pshufd(xmm6, xmm6, 85);
- psllq(xmm0, 1);
- psrlq(xmm0, 1);
- pxor(xmm0, xmm6);
- psrlq(xmm6, 63);
- paddq(xmm0, xmm6);
- paddq(xmm0, xmm4);
- movl(Address(rsp,0), 15);
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_4_0_2);
- addsd(xmm0, xmm4);
- mulsd(xmm0, xmm3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_3_0_2);
- addsd(xmm0, xmm4);
- mulsd(xmm0, xmm3);
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32752);
- cmpl(ecx, 32752);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_2_0_2);
- paddd(xmm3, xmm6);
- addpd(xmm0, xmm2);
- mulsd(xmm0, xmm3);
- movl(Address(rsp,0), 15);
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_8_0_2);
- cmpl(eax, 2146435072);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_9_0_2);
- movl(eax, Address(rsp,12));
- cmpl(eax, INT_MIN);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_10_0_2);
- movsd(xmm0, ExternalAddress(XMAX)); // 0xffffffffUL, 0x7fefffffUL
- mulsd(xmm0, xmm0);
-
- bind(L_2TAG_PACKET_7_0_2);
- movl(Address(rsp,0), 14);
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_10_0_2);
- movsd(xmm0, ExternalAddress(XMIN)); // 0x00000000UL, 0x00100000UL
- mulsd(xmm0, xmm0);
- movl(Address(rsp,0), 15);
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_9_0_2);
- movl(edx, Address(rsp,8));
- cmpl(eax, 2146435072);
- jcc(Assembler::above, L_2TAG_PACKET_11_0_2);
- cmpl(edx, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
- movl(eax, Address(rsp,12));
- cmpl(eax, 2146435072);
- jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_2);
- movsd(xmm0, ExternalAddress(INF)); // 0x00000000UL, 0x7ff00000UL
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_12_0_2);
- movsd(xmm0, ExternalAddress(ZERO)); // 0x00000000UL, 0x00000000UL
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_11_0_2);
- movsd(xmm0, Address(rsp, 8));
- addsd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_0_0_2);
- movl(eax, Address(rsp, 12));
- andl(eax, 2147483647);
- cmpl(eax, 1083179008);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_8_0_2);
- movsd(Address(rsp, 8), xmm0);
- addsd(xmm0, ExternalAddress(ONE_val)); // 0x00000000UL, 0x3ff00000UL
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_6_0_2);
- movq(Address(rsp, 16), xmm0);
-
- bind(B1_3);
- movq(xmm0, Address(rsp, 16));
-
- bind(B1_5);
- addq(rsp, 24);
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - LOG()
-// ---------------------
-//
-// x=2^k * mx, mx in [1,2)
-//
-// Get B~1/mx based on the output of rcpss instruction (B0)
-// B = int((B0*2^7+0.5))/2^7
-//
-// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
-// p(r) is a degree 7 polynomial
-// -log(B) read from data table (high, low parts)
-// Result is formed from high and low parts
-//
-// Special cases:
-// log(NaN) = quiet NaN, and raise invalid exception
-// log(+INF) = that INF
-// log(0) = -INF with divide-by-zero exception raised
-// log(1) = +0
-// log(x) = NaN with invalid exception raised if x < -0, including -INF
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _L_tbl[] =
-{
- 0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
- 0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
- 0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
- 0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
- 0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
- 0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
- 0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
- 0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
- 0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
- 0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
- 0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
- 0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
- 0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
- 0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
- 0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
- 0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
- 0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
- 0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
- 0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
- 0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
- 0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
- 0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
- 0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
- 0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
- 0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
- 0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
- 0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
- 0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
- 0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
- 0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
- 0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
- 0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
- 0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
- 0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
- 0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
- 0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
- 0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
- 0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
- 0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
- 0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
- 0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
- 0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
- 0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
- 0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
- 0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
- 0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
- 0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
- 0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
- 0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
- 0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
- 0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
- 0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
- 0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
- 0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
- 0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
- 0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
- 0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
- 0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
- 0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
- 0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
- 0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
- 0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
- 0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
- 0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
- 0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
- 0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
- 0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
- 0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
- 0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
- 0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
- 0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
- 0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
- 0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
- 0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
- 0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
- 0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
- 0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
- 0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
- 0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
- 0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
- 0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
- 0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
- 0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
- 0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
- 0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
- 0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
- 0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
- 0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
- 0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
- 0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
- 0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
- 0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
- 0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
- 0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
- 0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
- 0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
- 0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
- 0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
- 0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
- 0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
- 0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
- 0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
- 0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x80000000UL
-};
-
-ALIGNED_(16) juint _log2[] =
-{
- 0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL
-};
-
-ALIGNED_(16) juint _coeff[] =
-{
- 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
- 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
- 0x00000000UL, 0xbfe00000UL
-};
-
-//registers,
-// input: xmm0
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, r8, r11
-
-void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2;
- Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
-
- assert_different_registers(tmp1, tmp2, eax, ecx, edx);
- jmp(start);
- address L_tbl = (address)_L_tbl;
- address log2 = (address)_log2;
- address coeff = (address)_coeff;
-
- bind(start);
- subq(rsp, 24);
- movsd(Address(rsp, 0), xmm0);
- mov64(rax, 0x3ff0000000000000);
- movdq(xmm2, rax);
- mov64(rdx, 0x77f0000000000000);
- movdq(xmm3, rdx);
- movl(ecx, 32768);
- movdl(xmm4, rcx);
- mov64(tmp1, 0xffffe00000000000);
- movdq(xmm5, tmp1);
- movdqu(xmm1, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- movl(ecx, 16352);
- psrlq(xmm0, 27);
- lea(tmp2, ExternalAddress(L_tbl));
- psrld(xmm0, 2);
- rcpps(xmm0, xmm0);
- psllq(xmm1, 12);
- pshufd(xmm6, xmm5, 228);
- psrlq(xmm1, 12);
- subl(eax, 16);
- cmpl(eax, 32736);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
-
- bind(L_2TAG_PACKET_1_0_2);
- paddd(xmm0, xmm4);
- por(xmm1, xmm3);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm1);
- pand(xmm0, xmm6);
- subsd(xmm1, xmm5);
- mulpd(xmm5, xmm0);
- andl(eax, 32752);
- subl(eax, ecx);
- cvtsi2sdl(xmm7, eax);
- mulsd(xmm1, xmm0);
- movq(xmm6, ExternalAddress(log2)); // 0xfefa3800UL, 0x3fa62e42UL
- movdqu(xmm3, ExternalAddress(coeff)); // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
- subsd(xmm5, xmm2);
- andl(edx, 16711680);
- shrl(edx, 12);
- movdqu(xmm0, Address(tmp2, edx));
- movdqu(xmm4, ExternalAddress(16 + coeff)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
- addsd(xmm1, xmm5);
- movdqu(xmm2, ExternalAddress(32 + coeff)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
- mulsd(xmm6, xmm7);
- if (VM_Version::supports_sse3()) {
- movddup(xmm5, xmm1);
- } else {
- movdqu(xmm5, xmm1);
- movlhps(xmm5, xmm5);
- }
- mulsd(xmm7, ExternalAddress(8 + log2)); // 0x93c76730UL, 0x3ceef357UL
- mulsd(xmm3, xmm1);
- addsd(xmm0, xmm6);
- mulpd(xmm4, xmm5);
- mulpd(xmm5, xmm5);
- if (VM_Version::supports_sse3()) {
- movddup(xmm6, xmm0);
- } else {
- movdqu(xmm6, xmm0);
- movlhps(xmm6, xmm6);
- }
- addsd(xmm0, xmm1);
- addpd(xmm4, xmm2);
- mulpd(xmm3, xmm5);
- subsd(xmm6, xmm0);
- mulsd(xmm4, xmm1);
- pshufd(xmm2, xmm0, 238);
- addsd(xmm1, xmm6);
- mulsd(xmm5, xmm5);
- addsd(xmm7, xmm2);
- addpd(xmm4, xmm3);
- addsd(xmm1, xmm7);
- mulpd(xmm4, xmm5);
- addsd(xmm1, xmm4);
- pshufd(xmm5, xmm4, 238);
- addsd(xmm1, xmm5);
- addsd(xmm0, xmm1);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_0_0_2);
- movq(xmm0, Address(rsp, 0));
- movq(xmm1, Address(rsp, 0));
- addl(eax, 16);
- cmpl(eax, 32768);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
- cmpl(eax, 16);
- jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
-
- bind(L_2TAG_PACKET_4_0_2);
- addsd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_5_0_2);
- jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
- cmpl(edx, 0);
- jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
- jmp(L_2TAG_PACKET_6_0_2);
-
- bind(L_2TAG_PACKET_3_0_2);
- xorpd(xmm1, xmm1);
- addsd(xmm1, xmm0);
- movdl(edx, xmm1);
- psrlq(xmm1, 32);
- movdl(ecx, xmm1);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
- xorpd(xmm1, xmm1);
- movl(eax, 18416);
- pinsrw(xmm1, eax, 3);
- mulsd(xmm0, xmm1);
- movdqu(xmm1, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- psrlq(xmm0, 27);
- movl(ecx, 18416);
- psrld(xmm0, 2);
- rcpps(xmm0, xmm0);
- psllq(xmm1, 12);
- pshufd(xmm6, xmm5, 228);
- psrlq(xmm1, 12);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movdl(edx, xmm1);
- psrlq(xmm1, 32);
- movdl(ecx, xmm1);
- addl(ecx, ecx);
- cmpl(ecx, -2097152);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
-
- bind(L_2TAG_PACKET_6_0_2);
- xorpd(xmm1, xmm1);
- xorpd(xmm0, xmm0);
- movl(eax, 32752);
- pinsrw(xmm1, eax, 3);
- mulsd(xmm0, xmm1);
- movl(Address(rsp, 16), 3);
- jmp(L_2TAG_PACKET_8_0_2);
- bind(L_2TAG_PACKET_7_0_2);
- xorpd(xmm1, xmm1);
- xorpd(xmm0, xmm0);
- movl(eax, 49136);
- pinsrw(xmm0, eax, 3);
- divsd(xmm0, xmm1);
- movl(Address(rsp, 16), 2);
-
- bind(L_2TAG_PACKET_8_0_2);
- movq(Address(rsp, 8), xmm0);
-
- bind(B1_3);
- movq(xmm0, Address(rsp, 8));
-
- bind(B1_5);
- addq(rsp, 24);
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - POW()
-// ---------------------
-//
-// Let x=2^k * mx, mx in [1,2)
-//
-// log2(x) calculation:
-//
-// Get B~1/mx based on the output of rcpps instruction (B0)
-// B = int((B0*LH*2^9+0.5))/2^9
-// LH is a short approximation for log2(e)
-//
-// Reduced argument, scaled by LH:
-// r=B*mx-LH (computed accurately in high and low parts)
-//
-// log2(x) result: k - log2(B) + p(r)
-// p(r) is a degree 8 polynomial
-// -log2(B) read from data table (high, low parts)
-// log2(x) is formed from high and low parts
-// For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
-// based om the same table design is performed.
-//
-// Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
-// to filter out all potential OF/UF cases.
-// exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
-// polynomial
-//
-// Special cases:
-// pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd
-// integer < 0.
-// pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and
-// not an odd integer.
-// pow(-0,y) = -0 for y an odd integer > 0.
-// pow(-0,y) = +0 for y > 0 and not an odd integer.
-// pow(-1,-INF) = NaN.
-// pow(+1,y) = NaN for any y, even a NaN.
-// pow(x,-0) = 1 for any x, even a NaN.
-// pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
-// finite non-integer y.
-// pow(x,-INF) = +INF for |x|<1.
-// pow(x,-INF) = +0 for |x|>1.
-// pow(x,+INF) = +0 for |x|<1.
-// pow(x,+INF) = +INF for |x|>1.
-// pow(-INF,y) = -0 for y an odd integer < 0.
-// pow(-INF,y) = +0 for y < 0 and not an odd integer.
-// pow(-INF,y) = -INF for y an odd integer > 0.
-// pow(-INF,y) = +INF for y > 0 and not an odd integer.
-// pow(+INF,y) = +0 for y <0.
-// pow(+INF,y) = +INF for y >0.
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _HIGHSIGMASK[] =
-{
- 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
-};
-
-ALIGNED_(16) juint _LOG2_E[] =
-{
- 0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
-};
-
-ALIGNED_(16) juint _HIGHMASK_Y[] =
-{
- 0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
-};
-
-ALIGNED_(16) juint _T_exp[] =
-{
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL, 0xfa5abcbfUL,
- 0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL, 0x3ff0163dUL,
- 0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL, 0x0fc54eb6UL,
- 0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL, 0xbc719083UL,
- 0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL, 0xe86e7f85UL,
- 0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL, 0x3ff04e5fUL,
- 0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL, 0xa475b465UL,
- 0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL, 0xbc95cb7bUL,
- 0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL, 0x2b72a836UL,
- 0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL, 0x3ff08745UL,
- 0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL, 0x800a3fd1UL,
- 0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL, 0x3c914878UL,
- 0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL, 0x6cf9890fUL,
- 0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL, 0x3ff0c0f1UL,
- 0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL, 0x16e24f71UL,
- 0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL, 0xbc9bc14dUL,
- 0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL, 0x5fdfa9c5UL,
- 0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL, 0x3ff0fb66UL,
- 0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL, 0x1692fdd5UL,
- 0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL, 0xbc96c510UL,
- 0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL, 0xc06c31ccUL,
- 0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL, 0x3ff136a8UL,
- 0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL, 0x9af1369eUL,
- 0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL, 0xbc8b91e8UL,
- 0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL, 0x5471c3c2UL,
- 0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL, 0x3ff172b8UL,
- 0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL, 0xe2ac5a64UL,
- 0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL, 0xbc911023UL,
- 0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL, 0xeb6fcb75UL,
- 0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL, 0x3ff1af99UL,
- 0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL, 0x352ef607UL,
- 0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL, 0x3c900977UL,
- 0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL, 0x5eb44027UL,
- 0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL, 0x3ff1ed50UL,
- 0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL, 0xa097af5cUL,
- 0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL, 0x3c8dc775UL,
- 0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL, 0x917ddc96UL,
- 0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL, 0x3ff22bddUL,
- 0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL, 0xb6c70573UL,
- 0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL, 0x3c8acfccUL,
- 0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL, 0x711ece75UL,
- 0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL, 0x3ff26b45UL,
- 0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL, 0x05f9e76cUL,
- 0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL, 0xbc9a4c3aUL,
- 0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL, 0xf51fdee1UL,
- 0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL, 0x3ff2ab8aUL,
- 0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL, 0xd6381aa4UL,
- 0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL, 0xbc950145UL,
- 0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL, 0x1f641589UL,
- 0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL, 0x3ff2ecafUL,
- 0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL, 0x532bda93UL,
- 0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL, 0x3c86f46aUL,
- 0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL, 0xfc4cd831UL,
- 0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL, 0x3ff32eb8UL,
- 0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL, 0x843659a6UL,
- 0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL, 0xbc835a75UL,
- 0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL, 0xa2de883bUL,
- 0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL, 0x3ff371a7UL,
- 0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL, 0x9eceb23cUL,
- 0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL, 0xbc9e958dUL,
- 0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL, 0x34e59ff7UL,
- 0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL, 0x3ff3b57fUL,
- 0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL, 0x375d29c3UL,
- 0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL, 0x3c7fe8d0UL,
- 0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL, 0xdf1c5175UL,
- 0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL, 0x3ff3fa45UL,
- 0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL, 0xb6f4d048UL,
- 0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL, 0xbc5ef369UL,
- 0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL, 0xd950a897UL,
- 0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL, 0x3ff43ffaUL,
- 0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL, 0x04ef80d0UL,
- 0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL, 0xbc686419UL,
- 0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL, 0x668b3237UL,
- 0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL, 0x3ff486a2UL,
- 0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL, 0x5e499ea0UL,
- 0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL, 0x3c99cb62UL,
- 0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL, 0xd5362a27UL,
- 0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL, 0x3ff4ce41UL,
- 0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL, 0xbc6a7833UL,
- 0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL, 0xbc95257dUL,
- 0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL, 0x7f4531eeUL,
- 0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL, 0x3ff516daUL,
- 0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL, 0x43efef71UL,
- 0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL, 0xbc807abeUL,
- 0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL, 0xca5d920fUL,
- 0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL, 0x3ff56070UL,
- 0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL, 0x011d93adUL,
- 0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL, 0xbc90b98cUL,
- 0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL, 0x27ff07ccUL,
- 0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL, 0x3ff5ab07UL,
- 0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL, 0x4c233e1aUL,
- 0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL, 0x3c3c4b1bUL,
- 0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL, 0x15ad2148UL,
- 0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL, 0x3ff5f6a3UL,
- 0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL, 0x9b56de47UL,
- 0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL, 0x3c9e4b3eUL,
- 0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL, 0x1d1929fdUL,
- 0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL, 0x3ff64346UL,
- 0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL, 0xc9a73e09UL,
- 0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL, 0xbc9bb609UL,
- 0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL, 0xd44ca973UL,
- 0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL, 0x3ff690f4UL,
- 0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL, 0x13b26456UL,
- 0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL, 0x3c7a38f5UL,
- 0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL, 0xddd47645UL,
- 0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL, 0x3ff6dfb2UL,
- 0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL, 0x9e1ac8b2UL,
- 0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL, 0xbc883c0fUL,
- 0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL, 0xe8ec5f74UL,
- 0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL, 0x3ff72f82UL,
- 0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL, 0x6c65d53cUL,
- 0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL, 0x3c9047fdUL,
- 0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL, 0xb1ab6e09UL,
- 0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL, 0x3ff78069UL,
- 0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL, 0x62aadd3eUL,
- 0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL, 0xbc841577UL,
- 0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL, 0x0130c132UL,
- 0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL, 0x3ff7d26aUL,
- 0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL, 0xba15797eUL,
- 0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL, 0xbc807f11UL,
- 0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL, 0xadd106d9UL,
- 0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL, 0x3ff82589UL,
- 0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL, 0x31df2bd5UL,
- 0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL, 0xbc88d684UL,
- 0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL, 0x9b4492edUL,
- 0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL, 0x3ff879caUL,
- 0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL, 0xf37cb53aUL,
- 0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL, 0x3c9d5395UL,
- 0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL, 0xbad61778UL,
- 0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL, 0x3ff8cf32UL,
- 0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL, 0x6fc9b2e6UL,
- 0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL, 0x3c85cc13UL,
- 0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL, 0x0b91ffc6UL,
- 0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL, 0x3ff925c3UL,
- 0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL, 0x81b57ebcUL,
- 0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL, 0xbc8dc3d6UL,
- 0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL, 0x9a7670b3UL,
- 0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL, 0x3ff97d82UL,
- 0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL, 0xa24c78ecUL,
- 0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL, 0xbc9173bdUL,
- 0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL, 0x82a3f090UL,
- 0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL, 0x3ff9d674UL,
- 0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL, 0x78e64c6eUL,
- 0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL, 0xbc84a9ceUL,
- 0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL, 0xed8eb8bbUL,
- 0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL, 0x3ffa309bUL,
- 0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL, 0x589fb120UL,
- 0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL, 0xbc9d2f6eUL,
- 0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL, 0x1330b358UL,
- 0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL, 0x3ffa8bfeUL,
- 0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL, 0x0ef7fd31UL,
- 0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL, 0x3c889c31UL,
- 0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL, 0x3a3c2774UL,
- 0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL, 0x3ffae89fUL,
- 0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL, 0x0f315ecdUL,
- 0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL, 0xbc9bdef5UL,
- 0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL, 0xb84f15fbUL,
- 0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL, 0x3ffb4684UL,
- 0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL, 0xbbba6de3UL,
- 0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL, 0x3c92a8f3UL,
- 0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL, 0xf22749e4UL,
- 0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL, 0x3ffba5b0UL,
- 0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL, 0xc9696205UL,
- 0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL, 0x3c823dd0UL,
- 0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL, 0x5bd71e09UL,
- 0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL, 0x3ffc0628UL,
- 0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL, 0x895048ddUL,
- 0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL, 0xbc96e516UL,
- 0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL, 0x78fafb22UL,
- 0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL, 0x3ffc67f1UL,
- 0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL, 0xbe255559UL,
- 0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL, 0x3c71acbcUL,
- 0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL, 0xdcef9069UL,
- 0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL, 0x3ffccb0fUL,
- 0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL, 0x53829d72UL,
- 0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL, 0xbc9a08e9UL,
- 0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL, 0x2b08c968UL,
- 0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL, 0x3ffd2f87UL,
- 0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL, 0xbf5a1614UL,
- 0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL, 0x3c82ed02UL,
- 0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL, 0x16c98398UL,
- 0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL, 0x3ffd955dUL,
- 0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL, 0x696db532UL,
- 0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL, 0xbc9b76f1UL,
- 0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL, 0x641c0658UL,
- 0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL, 0x3ffdfc97UL,
- 0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL, 0xbd5c7f44UL,
- 0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL, 0xbc97b627UL,
- 0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL, 0xe78b3ff6UL,
- 0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL, 0x3ffe6539UL,
- 0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL, 0xca0c8de2UL,
- 0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL, 0xbc910894UL,
- 0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL, 0x867cca6eUL,
- 0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL, 0x3ffecf48UL,
- 0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL, 0xa487568dUL,
- 0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL, 0x3c9dc7f4UL,
- 0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL, 0x376bba97UL,
- 0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL, 0x3fff3ac9UL,
- 0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL, 0x2dd8a18bUL,
- 0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL, 0x3c9fa37bUL,
- 0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL, 0x02243c89UL,
- 0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL, 0x3fffa7c1UL,
- 0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL, 0x15098eb6UL,
- 0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL, 0x3c62eb74UL,
- 0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL
-};
-
-ALIGNED_(16) juint _e_coeff[] =
-{
- 0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
- 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
- 0x00000000UL, 0x00000000UL
-};
-
-ALIGNED_(16) juint _coeff_h[] =
-{
- 0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
-};
-
-ALIGNED_(16) juint _HIGHMASK_LOG_X[] =
-{
- 0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
-};
-
-ALIGNED_(8) juint _HALFMASK[] =
-{
- 0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
-};
-
-ALIGNED_(16) juint _coeff_pow[] =
-{
- 0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL,
- 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL,
- 0xac8349bbUL, 0x3fa76c9bUL, 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL,
- 0xbf5dabe1UL, 0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL,
- 0x486ececbUL, 0x3fc4635eUL, 0x412055ccUL, 0xbdd61bb2UL
-};
-
-ALIGNED_(16) juint _L_tbl_pow[] =
-{
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x20000000UL,
- 0x3feff00aUL, 0x96621f95UL, 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL,
- 0xe5916f9eUL, 0xbe325278UL, 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL,
- 0x3e595fb7UL, 0xc0000000UL, 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL,
- 0xe0000000UL, 0x3fefb069UL, 0xad2880a7UL, 0xbe501230UL, 0x60000000UL,
- 0x3fefa08fUL, 0xc8e72420UL, 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL,
- 0xc30c4500UL, 0xbe5d6c75UL, 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL,
- 0x3e2e1318UL, 0xc0000000UL, 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL,
- 0x00000000UL, 0x3fef615cUL, 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL,
- 0x3fef519cUL, 0x65c5cd68UL, 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL,
- 0x46d1306cUL, 0xbe5a840eUL, 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL,
- 0x3e5071afUL, 0xa0000000UL, 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL,
- 0xa0000000UL, 0x3fef12d4UL, 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL,
- 0x3fef032fUL, 0xbc7247faUL, 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL,
- 0xbcaa1e46UL, 0xbe53bb3bUL, 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL,
- 0xbe54c619UL, 0x80000000UL, 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL,
- 0xe0000000UL, 0x3feec4d1UL, 0xec678f76UL, 0xbe369af6UL, 0x80000000UL,
- 0x3feeb547UL, 0x41301f55UL, 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL,
- 0x676da6bdUL, 0xbe4d8dd0UL, 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL,
- 0x3e51f991UL, 0xa0000000UL, 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL,
- 0x20000000UL, 0x3fee7752UL, 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL,
- 0x3fee67e1UL, 0xd75b5bf1UL, 0xbe449531UL, 0x80000000UL, 0x3fee5876UL,
- 0xbd423b8eUL, 0x3df54fe4UL, 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL,
- 0x3e54289cUL, 0x80000000UL, 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL,
- 0xa0000000UL, 0x3fee2a53UL, 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL,
- 0x3fee1afcUL, 0x0989328dUL, 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL,
- 0xee642abdUL, 0xbe425dd8UL, 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL,
- 0x3e526362UL, 0x20000000UL, 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL,
- 0xc0000000UL, 0x3fedddd4UL, 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL,
- 0x3fedce97UL, 0x0ecac52fUL, 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL,
- 0x124cb3b8UL, 0x3e257024UL, 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL,
- 0xbe2033eeUL, 0x20000000UL, 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL,
- 0xc0000000UL, 0x3fed91d3UL, 0xef8a552aUL, 0xbe543390UL, 0x40000000UL,
- 0x3fed82afUL, 0xb8e85204UL, 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL,
- 0x3d59fe08UL, 0xbe5db728UL, 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL,
- 0x3e58804bUL, 0xc0000000UL, 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL,
- 0x00000000UL, 0x3fed464fUL, 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL,
- 0x3fed3743UL, 0xb0b0a190UL, 0x3e598635UL, 0x80000000UL, 0x3fed283cUL,
- 0xe2113295UL, 0xbe5c1119UL, 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL,
- 0xbe492e9cUL, 0x60000000UL, 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL,
- 0x20000000UL, 0x3fecfb45UL, 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL,
- 0x3fecec51UL, 0x110f7dddUL, 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL,
- 0x7dd7d508UL, 0xbe5a8943UL, 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL,
- 0xbe50676aUL, 0x80000000UL, 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL,
- 0x60000000UL, 0x3fecb0b4UL, 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL,
- 0x3feca1d9UL, 0x38a6ec89UL, 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL,
- 0x3a0b7d8eUL, 0x3e53dbfdUL, 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL,
- 0xbe27c5c9UL, 0xc0000000UL, 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL,
- 0x60000000UL, 0x3fec669bUL, 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL,
- 0x3fec57d7UL, 0x40e5e7e8UL, 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL,
- 0x5602770fUL, 0xbe55219dUL, 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL,
- 0x3e5a5d25UL, 0x60000000UL, 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL,
- 0x80000000UL, 0x3fec1cf8UL, 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL,
- 0x3fec0e4cUL, 0x580798bdUL, 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL,
- 0xb8282df6UL, 0xbe46b874UL, 0x20000000UL, 0x3febf102UL, 0xe33a6729UL,
- 0x3e54963fUL, 0x00000000UL, 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL,
- 0x60000000UL, 0x3febd3caUL, 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL,
- 0x3febc535UL, 0xa335c5eeUL, 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL,
- 0x7325b04dUL, 0x3e42ba15UL, 0x60000000UL, 0x3feba819UL, 0x1564540fUL,
- 0x3e3a9f35UL, 0x40000000UL, 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL,
- 0xa0000000UL, 0x3feb8b0fUL, 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL,
- 0x3feb7c91UL, 0x6d6f1ea4UL, 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL,
- 0x5e80a1bfUL, 0x3e4ddbb6UL, 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL,
- 0x3e592877UL, 0xa0000000UL, 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL,
- 0xa0000000UL, 0x3feb42c6UL, 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL,
- 0x3feb345fUL, 0xa3e0cceeUL, 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL,
- 0x8e752b50UL, 0xbe3da3c2UL, 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL,
- 0x3e1fb481UL, 0xc0000000UL, 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL,
- 0x20000000UL, 0x3feafaeeUL, 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL,
- 0x3feaec9dUL, 0x3c3d640eUL, 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL,
- 0x8f97a715UL, 0x3e3a8ec5UL, 0x20000000UL, 0x3fead008UL, 0x23ab2839UL,
- 0x3e2fe98aUL, 0x40000000UL, 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL,
- 0xe0000000UL, 0x3feab384UL, 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL,
- 0x3feaa549UL, 0x7c7b0eeaUL, 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL,
- 0xf56f7013UL, 0x3e386200UL, 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL,
- 0xbe514af5UL, 0xe0000000UL, 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL,
- 0x60000000UL, 0x3fea6c89UL, 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL,
- 0x3fea5e64UL, 0x3f19d970UL, 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL,
- 0x09ea3e6bUL, 0x3e5065dcUL, 0x80000000UL, 0x3fea4226UL, 0x78df246cUL,
- 0x3e5e05f6UL, 0x40000000UL, 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL,
- 0x40000000UL, 0x3fea25faUL, 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL,
- 0x3fea17eaUL, 0x9436f40aUL, 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL,
- 0x4b5253b3UL, 0x3e46380bUL, 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL,
- 0xbe386f9bUL, 0x20000000UL, 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL,
- 0x60000000UL, 0x3fe9dfd6UL, 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL,
- 0x3fe9d1dcUL, 0xeabdff1dUL, 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL,
- 0xafd30e73UL, 0xbe585e63UL, 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL,
- 0xbe43e8f9UL, 0x20000000UL, 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL,
- 0x80000000UL, 0x3fe99a1cUL, 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL,
- 0x3fe98c37UL, 0x7c9a88fbUL, 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL,
- 0xda015741UL, 0xbe5d13baUL, 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL,
- 0x3e51b947UL, 0x00000000UL, 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL,
- 0x40000000UL, 0x3fe954cbUL, 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL,
- 0x3fe946faUL, 0xe63b3767UL, 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL,
- 0xe57cc2a9UL, 0x3e34eda3UL, 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL,
- 0x3e5766a0UL, 0xc0000000UL, 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL,
- 0x80000000UL, 0x3fe90fe1UL, 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL,
- 0x3fe90225UL, 0xdbd3f369UL, 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL,
- 0x1c9be989UL, 0xbe5e2b0aUL, 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL,
- 0x3e5c8618UL, 0xe0000000UL, 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL,
- 0x20000000UL, 0x3fe8cb5eUL, 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL,
- 0x3fe8bdb6UL, 0x49e58cc3UL, 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL,
- 0xa7cfeb8fUL, 0x3e56c412UL, 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL,
- 0x3e1429b8UL, 0x60000000UL, 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL,
- 0xc0000000UL, 0x3fe8873fUL, 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL,
- 0x3fe879acUL, 0x56aee828UL, 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL,
- 0x7ceab8ecUL, 0x3e493365UL, 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL,
- 0xbe4f7f25UL, 0x00000000UL, 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL,
- 0x40000000UL, 0x3fe84385UL, 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL,
- 0x3fe83605UL, 0xa670975aUL, 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL,
- 0xf61b77b2UL, 0xbe43a20aUL, 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL,
- 0x3e5e5fe5UL, 0xc0000000UL, 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL,
- 0xa0000000UL, 0x3fe8002dUL, 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL,
- 0x3fe7f2c1UL, 0x22a16f01UL, 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL,
- 0xc38cd451UL, 0x3e506963UL, 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL,
- 0x3e4503d7UL, 0x40000000UL, 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL,
- 0xa0000000UL, 0x3fe7bd37UL, 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL,
- 0x3fe7afdeUL, 0xe3b0be70UL, 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL,
- 0xaf9f193cUL, 0xbe5dff6cUL, 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL,
- 0xbe258ed0UL, 0xa0000000UL, 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL,
- 0x40000000UL, 0x3fe77aa2UL, 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL,
- 0x3fe76d5cUL, 0x7cb0b5e4UL, 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL,
- 0x2b1bc4adUL, 0xbe32e8bbUL, 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL,
- 0x3e41f57bUL, 0xc0000000UL, 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL,
- 0x60000000UL, 0x3fe7386cUL, 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL,
- 0x3fe72b39UL, 0x91d690f7UL, 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL,
- 0x627a2159UL, 0xbe4425d5UL, 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL,
- 0x3e422b7eUL, 0x60000000UL, 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL,
- 0xe0000000UL, 0x3fe6f694UL, 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL,
- 0x3fe6e975UL, 0x306d8894UL, 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL,
- 0x30bf24aaUL, 0xbe4650caUL, 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL,
- 0xbe5db007UL, 0xc0000000UL, 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL,
- 0xc0000000UL, 0x3fe6b51aUL, 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL,
- 0x3fe6a80dUL, 0xf3559341UL, 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL,
- 0xa885899eUL, 0xbe5c2011UL, 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL,
- 0x3e224a82UL, 0xa0000000UL, 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL,
- 0x00000000UL, 0x3fe673fdUL, 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL,
- 0x3fe66702UL, 0x5df10408UL, 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL,
- 0xa4070568UL, 0xbe40b12fUL, 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL,
- 0x3e5f5e8bUL, 0x00000000UL, 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL,
- 0xa0000000UL, 0x3fe6333aUL, 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL,
- 0x3fe62651UL, 0x6f538d61UL, 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL,
- 0x14344120UL, 0xbe529af6UL, 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL,
- 0xbe3e1e4fUL, 0x00000000UL, 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL,
- 0x80000000UL, 0x3fe5f2d2UL, 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL,
- 0x3fe5e5fbUL, 0xa4695699UL, 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL,
- 0x80d118aeUL, 0x3e456b61UL, 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL,
- 0x3e54dc29UL, 0x80000000UL, 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL,
- 0xe0000000UL, 0x3fe5b2c3UL, 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL,
- 0x3fe5a5feUL, 0x9292c7eaUL, 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL,
- 0x33b4d380UL, 0x3e5d6d93UL, 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL,
- 0x3e2fe961UL, 0xa0000000UL, 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL,
- 0xa0000000UL, 0x3fe5730dUL, 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL,
- 0x3fe5665aUL, 0x024acfeaUL, 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL,
- 0xcc9edd09UL, 0xbe325403UL, 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL,
- 0x3e5d500eUL, 0x60000000UL, 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL,
- 0xc0000000UL, 0x3fe533aeUL, 0x154b0287UL, 0xbe401571UL, 0xa0000000UL,
- 0x3fe5270cUL, 0x0673f401UL, 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL,
- 0x751b639cUL, 0x3e235269UL, 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL,
- 0x3ddec887UL, 0xc0000000UL, 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL,
- 0x60000000UL, 0x3fe4f4a6UL, 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL,
- 0x3fe4e815UL, 0xf33e2a76UL, 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL,
- 0x839f3e3eUL, 0x3e57db01UL, 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL,
- 0x3e535e0fUL, 0x00000000UL, 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL,
- 0xc0000000UL, 0x3fe4b5f3UL, 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL,
- 0x3fe4a973UL, 0x4aa7cd1dUL, 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL,
- 0x8e23025eUL, 0xbe5749f2UL, 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL,
- 0x3e360f39UL, 0x20000000UL, 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL,
- 0xc0000000UL, 0x3fe47795UL, 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL,
- 0x3fe46b26UL, 0x8f0e62aaUL, 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL,
- 0x5775c40cUL, 0xbe56aad4UL, 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL,
- 0x3e48bd71UL, 0x40000000UL, 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL,
- 0x80000000UL, 0x3fe4398bUL, 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL,
- 0x3fe42d2dUL, 0x388e4d2eUL, 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL,
- 0x6f797c18UL, 0x3e554b4cUL, 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL,
- 0xbe5b1112UL, 0x80000000UL, 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL,
- 0x40000000UL, 0x3fe3fbd4UL, 0x50201119UL, 0x3e40b701UL, 0x40000000UL,
- 0x3fe3ef86UL, 0x0a4db32cUL, 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL,
- 0x0c9c148bUL, 0xbe50c1f6UL, 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL,
- 0x3e533fa0UL, 0x00000000UL, 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL,
- 0x20000000UL, 0x3fe3be6fUL, 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL,
- 0x3fe3b231UL, 0x7f908258UL, 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL,
- 0x1a09af78UL, 0x3e08038bUL, 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL,
- 0xbe5dbe42UL, 0xe0000000UL, 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL,
- 0x20000000UL, 0x3fe3815bUL, 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL,
- 0x3fe3752dUL, 0x6182e429UL, 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL,
- 0xab6eb1aeUL, 0x3e5a2cc5UL, 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL,
- 0xbe5c5878UL, 0x40000000UL, 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL,
- 0x80000000UL, 0x3fe34497UL, 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL,
- 0x3fe3387aUL, 0xf872d68cUL, 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL,
- 0x087e97c2UL, 0x3e52842eUL, 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL,
- 0xbe503edfUL, 0x80000000UL, 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL,
- 0xa0000000UL, 0x3fe30823UL, 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL,
- 0x3fe2fc15UL, 0x855a7390UL, 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL,
- 0xa2898287UL, 0x3e3d22a2UL, 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL,
- 0xbe5aa5fdUL, 0x80000000UL, 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL,
- 0x60000000UL, 0x3fe2cbfeUL, 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL,
- 0x3fe2c000UL, 0x6b01bf10UL, 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL,
- 0xb07a1cdfUL, 0x3e5c5cdaUL, 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL,
- 0xbe5668b3UL, 0xc0000000UL, 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL,
- 0x00000000UL, 0x3fe29027UL, 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL,
- 0x3fe28438UL, 0x6433c727UL, 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL,
- 0x41782631UL, 0xbe30750cUL, 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL,
- 0xbe58290eUL, 0x40000000UL, 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL,
- 0x00000000UL, 0x3fe2549dUL, 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL,
- 0x3fe248bdUL, 0x4248b9fbUL, 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL,
- 0xf35cf82fUL, 0x3e561b71UL, 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL,
- 0x3e518fb9UL, 0x60000000UL, 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL,
- 0x40000000UL, 0x3fe2195fUL, 0x80943911UL, 0xbe07f819UL, 0x40000000UL,
- 0x3fe20d8fUL, 0x386f2d6cUL, 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL,
- 0xf29664acUL, 0xbe5eb815UL, 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL,
- 0x3e5e320cUL, 0x20000000UL, 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL,
- 0x40000000UL, 0x3fe1de6dUL, 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL,
- 0x3fe1d2acUL, 0x4ae0b55eUL, 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL,
- 0x28569a5eUL, 0x3e598a4fUL, 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL,
- 0x3e46130aUL, 0x20000000UL, 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL,
- 0x00000000UL, 0x3fe1a3c6UL, 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL,
- 0x3fe19813UL, 0x2f02b836UL, 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL,
- 0x28dec9d4UL, 0x3e09064fUL, 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL,
- 0x3e5b1f46UL, 0x40000000UL, 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL,
- 0x00000000UL, 0x3fe16969UL, 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL,
- 0x3fe15dc5UL, 0x73bad6f8UL, 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL,
- 0x5385769cUL, 0x3e5e8d76UL, 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL,
- 0x3e571d08UL, 0x20000000UL, 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL,
- 0x60000000UL, 0x3fe12f55UL, 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL,
- 0x3fe123c0UL, 0x403638e1UL, 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL,
- 0x557a092bUL, 0xbdd0116bUL, 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL,
- 0x3e4a61baUL, 0xc0000000UL, 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL,
- 0x20000000UL, 0x3fe0ea04UL, 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL,
- 0x3fe0d300UL, 0x23190e54UL, 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL,
- 0x1379a5a6UL, 0xbe51619dUL, 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL,
- 0x3e5cf019UL, 0xa0000000UL, 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL,
- 0x20000000UL, 0x3fe07762UL, 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL,
- 0x3fe06097UL, 0xfd9cf274UL, 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL,
- 0x3689b49dUL, 0xbe36d26dUL, 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL,
- 0xbe54cd08UL, 0xa0000000UL, 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL,
- 0x00000000UL, 0x3fe005daUL, 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL,
- 0x3fdfde8dUL, 0xad67766dUL, 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL,
- 0x644f4ae7UL, 0x3e1ee43bUL, 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL,
- 0x3e501a86UL, 0x40000000UL, 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL,
- 0x00000000UL, 0x3fdf2acdUL, 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL,
- 0x3fdefe13UL, 0x3b94305eUL, 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL,
- 0x5d95da61UL, 0xbe55c198UL, 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL,
- 0xbdd99a19UL, 0x00000000UL, 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL,
- 0x80000000UL, 0x3fde4c04UL, 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL,
- 0x3fde1fb6UL, 0x3dfbffcbUL, 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL,
- 0x7e1be4e0UL, 0xbe5b8f8fUL, 0x40000000UL, 0x3fddc759UL, 0x46dae887UL,
- 0xbe350458UL, 0x80000000UL, 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL,
- 0x80000000UL, 0x3fdd6f50UL, 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL,
- 0x3fdd436bUL, 0xf0bccb32UL, 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL,
- 0x9bbfc779UL, 0xbe54a26aUL, 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL,
- 0x3e43c6b7UL, 0x40000000UL, 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL,
- 0x40000000UL, 0x3fdc94a7UL, 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL,
- 0x3fdc6929UL, 0xf0a8f95aUL, 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL,
- 0x6ee2693bUL, 0x3e0992e6UL, 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL,
- 0xbe2834b6UL, 0x40000000UL, 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL,
- 0x00000000UL, 0x3fdbbbffUL, 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL,
- 0x3fdb90e7UL, 0x479664c0UL, 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL,
- 0x5004975bUL, 0xbe55258fUL, 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL,
- 0xbe588407UL, 0xc0000000UL, 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL,
- 0x80000000UL, 0x3fdae54eUL, 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL,
- 0x3fdaba9aUL, 0xe19d0913UL, 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL,
- 0x43cfd006UL, 0xbe4cfdebUL, 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL,
- 0x3e5e47a8UL, 0xc0000000UL, 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL,
- 0xc0000000UL, 0x3fda108cUL, 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL,
- 0x3fd9e63aUL, 0x396f8f2cUL, 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL,
- 0xe32b25ddUL, 0x3e5c3a54UL, 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL,
- 0xbe457925UL, 0x80000000UL, 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL,
- 0x00000000UL, 0x3fd93db1UL, 0xd7449365UL, 0x3e306419UL, 0x80000000UL,
- 0x3fd913beUL, 0x1746e791UL, 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL,
- 0xf3a9028bUL, 0xbe5041b9UL, 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL,
- 0xbe26e20aUL, 0x40000000UL, 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL,
- 0x80000000UL, 0x3fd86cb2UL, 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL,
- 0x3fd8431eUL, 0xdeb39fabUL, 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL,
- 0x5d01cbe0UL, 0xbe5425b3UL, 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL,
- 0x3e146fa8UL, 0x80000000UL, 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL,
- 0xc0000000UL, 0x3fd79d88UL, 0x8606c236UL, 0x3e423a08UL, 0x80000000UL,
- 0x3fd77451UL, 0x8fd1e1b7UL, 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL,
- 0xe491456aUL, 0x3e42c1caUL, 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL,
- 0x3e36a69aUL, 0x00000000UL, 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL,
- 0x00000000UL, 0x3fd6d02cUL, 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL,
- 0x3fd6a750UL, 0x1919fd61UL, 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL,
- 0xaa7a994dUL, 0xbe3f3fbdUL, 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL,
- 0x3e33c550UL, 0x00000000UL, 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL,
- 0xc0000000UL, 0x3fd60493UL, 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL,
- 0x3fd5dc11UL, 0x1222bd5cUL, 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL,
- 0x6e8dc2d3UL, 0x3e5d4d79UL, 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL,
- 0xbe517303UL, 0x80000000UL, 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL,
- 0xc0000000UL, 0x3fd53ab8UL, 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL,
- 0x3fd5128eUL, 0xea902207UL, 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL,
- 0x9f911d79UL, 0x3e511735UL, 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL,
- 0xbe5b1643UL, 0x40000000UL, 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL,
- 0x80000000UL, 0x3fd47293UL, 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL,
- 0x3fd44abfUL, 0xe04042f5UL, 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL,
- 0x1d8bf2c8UL, 0x3e5d8810UL, 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL,
- 0xbe311454UL, 0xc0000000UL, 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL,
- 0x40000000UL, 0x3fd3ac1cUL, 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL,
- 0x3fd3849dUL, 0xd4e34b9eUL, 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL,
- 0x177204fbUL, 0xbe2b8cd7UL, 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL,
- 0xbe4356e1UL, 0x80000000UL, 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL,
- 0x00000000UL, 0x3fd2e74cUL, 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL,
- 0x3fd2c021UL, 0x516dab3fUL, 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL,
- 0x2bfb7313UL, 0x3e5674a2UL, 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL,
- 0x3e385d29UL, 0xc0000000UL, 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL,
- 0x00000000UL, 0x3fd2241cUL, 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL,
- 0x3fd1fd43UL, 0xa1543f71UL, 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL,
- 0x4ec8867cUL, 0x3df6a2dcUL, 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL,
- 0x3e41d9c0UL, 0x80000000UL, 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL,
- 0x40000000UL, 0x3fd16285UL, 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL,
- 0x3fd13bfeUL, 0xb9aec164UL, 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL,
- 0xd91e1316UL, 0xbe350630UL, 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL,
- 0x3e3f5219UL, 0x40000000UL, 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL,
- 0x00000000UL, 0x3fd0a281UL, 0x2a63447dUL, 0xbe541377UL, 0x80000000UL,
- 0x3fd07c49UL, 0xfac483b5UL, 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL,
- 0x36b8a570UL, 0xbe4fd4bdUL, 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL,
- 0xbe450388UL, 0x80000000UL, 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL,
- 0x80000000UL, 0x3fcfc811UL, 0x707475acUL, 0x3e38806eUL, 0x80000000UL,
- 0x3fcf7c3fUL, 0xc91817fcUL, 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL,
- 0xae05d5e9UL, 0xbe4919b8UL, 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL,
- 0xbe530b94UL, 0x00000000UL, 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL,
- 0x00000000UL, 0x3fce4e2dUL, 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL,
- 0x3fce02f5UL, 0x8abe2c2eUL, 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL,
- 0x1495450dUL, 0xbe0872ccUL, 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL,
- 0xbe4f59a0UL, 0x00000000UL, 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL,
- 0x00000000UL, 0x3fccd747UL, 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL,
- 0x3fcc8ca7UL, 0xd305b56cUL, 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL,
- 0x399a6910UL, 0xbe482a1cUL, 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL,
- 0xbe587372UL, 0x80000000UL, 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL,
- 0x00000000UL, 0x3fcb6355UL, 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL,
- 0x3fcb194aUL, 0x8416c0bcUL, 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL,
- 0x49f7f08fUL, 0x3e56da76UL, 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL,
- 0x3e5f390cUL, 0x00000000UL, 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL,
- 0x80000000UL, 0x3fc9f249UL, 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL,
- 0x3fc9a8d3UL, 0xde8795a6UL, 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL,
- 0x076bf41eUL, 0x3e5122feUL, 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL,
- 0x3e3dd064UL, 0x00000000UL, 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL,
- 0x80000000UL, 0x3fc8841aUL, 0xb2a96650UL, 0xbe575444UL, 0x80000000UL,
- 0x3fc83b34UL, 0x2376c0cbUL, 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL,
- 0xd8a0b653UL, 0xbe5181b6UL, 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL,
- 0xbe4a78b4UL, 0x00000000UL, 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL,
- 0x80000000UL, 0x3fc718bbUL, 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL,
- 0x3fc6d064UL, 0x3728b8cfUL, 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL,
- 0xc79a4067UL, 0x3e5c380fUL, 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL,
- 0x3e550a84UL, 0x80000000UL, 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL,
- 0x80000000UL, 0x3fc5b022UL, 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL,
- 0x3fc56858UL, 0x659b18beUL, 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL,
- 0x66ee3631UL, 0xbe57d769UL, 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL,
- 0x3e2427f7UL, 0x80000000UL, 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL,
- 0x00000000UL, 0x3fc44a44UL, 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL,
- 0x3fc40304UL, 0xcf1d3eabUL, 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL,
- 0x79aba3eaUL, 0xbdf1b7c8UL, 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL,
- 0xbe5130cfUL, 0x80000000UL, 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL,
- 0x00000000UL, 0x3fc2e716UL, 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL,
- 0x3fc2a05eUL, 0x6caed92eUL, 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL,
- 0x9cb5034eUL, 0xbe510e31UL, 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL,
- 0xbe540b43UL, 0x80000000UL, 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL,
- 0x00000000UL, 0x3fc1868eUL, 0x921f4106UL, 0xbe528e67UL, 0x80000000UL,
- 0x3fc1405cUL, 0x3969441eUL, 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL,
- 0xd941ef5bUL, 0x3e5f9079UL, 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL,
- 0xbe567691UL, 0x00000000UL, 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL,
- 0x00000000UL, 0x3fc028a2UL, 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL,
- 0x3fbfc5eaUL, 0x209897e5UL, 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL,
- 0x8458bd7bUL, 0x3e582831UL, 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL,
- 0xbe486b4aUL, 0x00000000UL, 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL,
- 0x00000000UL, 0x3fbd9a90UL, 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL,
- 0x3fbd103cUL, 0x73eb6ab7UL, 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL,
- 0x32ceaff5UL, 0xbe32dc5aUL, 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL,
- 0xbe4a71a4UL, 0x00000000UL, 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL,
- 0x00000000UL, 0x3fbae8eeUL, 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL,
- 0x3fba5f9aUL, 0x95ce1114UL, 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL,
- 0x6d7c0f78UL, 0x3e3abc2dUL, 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL,
- 0xbe566cbcUL, 0x00000000UL, 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL,
- 0x00000000UL, 0x3fb83c4aUL, 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL,
- 0x3fb7b3f4UL, 0x2193d81eUL, 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL,
- 0xdd70c122UL, 0x3e527a8cUL, 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL,
- 0xbe450393UL, 0x00000000UL, 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL,
- 0x00000000UL, 0x3fb59492UL, 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL,
- 0x3fb50d36UL, 0x950f9f45UL, 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL,
- 0x582cdcb1UL, 0x3e506d39UL, 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL,
- 0x3e4aa719UL, 0x00000000UL, 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL,
- 0x00000000UL, 0x3fb2f1b4UL, 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL,
- 0x3fb26b4eUL, 0x2fbfd7eaUL, 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL,
- 0x18913ccbUL, 0x3e465fc1UL, 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL,
- 0x3e042843UL, 0x00000000UL, 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL,
- 0x00000000UL, 0x3fb0539eUL, 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL,
- 0x3faf9c56UL, 0x1777f657UL, 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL,
- 0xc317b86aUL, 0xbe5a61e0UL, 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL,
- 0xbe41f64eUL, 0x00000000UL, 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL,
- 0x00000000UL, 0x3fab7480UL, 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL,
- 0x3faa6b78UL, 0x06a253f1UL, 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL,
- 0xa35f541bUL, 0x3e5a187aUL, 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL,
- 0xbe508150UL, 0x00000000UL, 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL,
- 0x00000000UL, 0x3fa64b10UL, 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL,
- 0x3fa543e2UL, 0x97506fefUL, 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL,
- 0xe75f7dd9UL, 0xbe388dd3UL, 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL,
- 0xbdea5177UL, 0x00000000UL, 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL,
- 0x00000000UL, 0x3fa12accUL, 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL,
- 0x3fa0256eUL, 0x7478da78UL, 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL,
- 0xf59cef7fUL, 0xbe539d0aUL, 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL,
- 0x3e53c2c8UL, 0x00000000UL, 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL,
- 0x00000000UL, 0x3f982724UL, 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL,
- 0x3f962000UL, 0x130d9356UL, 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL,
- 0x8f86f883UL, 0xbe513d0bUL, 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL,
- 0xbe534335UL, 0x00000000UL, 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL,
- 0x00000000UL, 0x3f8c1510UL, 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL,
- 0x3f880de0UL, 0x8a27857eUL, 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL,
- 0xda767328UL, 0x3e531b3dUL, 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL,
- 0xbe5f04e3UL, 0x00000000UL, 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL,
- 0x00000000UL, 0x3f6ffc40UL, 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL,
- 0x3f5ff6c0UL, 0x1ad218afUL, 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x80000000UL
-};
-
-ALIGNED_(8) juint _log2_pow[] =
-{
- 0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
-};
-
-//registers,
-// input: xmm0, xmm1
-// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
-// rax, rdx, rcx, r8, r11
-
-// Code generated by Intel C compiler for LIBM library
-
-void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
- Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
- Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
- Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
- Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
- Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
- Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
- Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
- Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
- Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
- Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
- Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
- Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
- Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
- Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
- Label L_2TAG_PACKET_56_0_2;
- Label B1_2, B1_3, B1_5, start;
-
- assert_different_registers(tmp1, tmp2, eax, ecx, edx);
- jmp(start);
- address HIGHSIGMASK = (address)_HIGHSIGMASK;
- address LOG2_E = (address)_LOG2_E;
- address coeff = (address)_coeff_pow;
- address L_tbl = (address)_L_tbl_pow;
- address HIGHMASK_Y = (address)_HIGHMASK_Y;
- address T_exp = (address)_T_exp;
- address e_coeff = (address)_e_coeff;
- address coeff_h = (address)_coeff_h;
- address HIGHMASK_LOG_X = (address)_HIGHMASK_LOG_X;
- address HALFMASK = (address)_HALFMASK;
- address log2 = (address)_log2_pow;
-
-
- bind(start);
- subq(rsp, 40);
- movsd(Address(rsp, 8), xmm0);
- movsd(Address(rsp, 16), xmm1);
-
- bind(B1_2);
- pextrw(eax, xmm0, 3);
- xorpd(xmm2, xmm2);
- mov64(tmp2, 0x3ff0000000000000);
- movdq(xmm2, tmp2);
- movl(tmp1, 1069088768);
- movdq(xmm7, tmp1);
- xorpd(xmm1, xmm1);
- mov64(tmp3, 0x77f0000000000000);
- movdq(xmm1, tmp3);
- movdqu(xmm3, xmm0);
- movl(edx, 32752);
- andl(edx, eax);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- por(xmm0, xmm2);
- movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
- psrlq(xmm0, 27);
- movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
- psrld(xmm0, 2);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- rcpps(xmm0, xmm0);
- psllq(xmm3, 12);
- movl(tmp4, 8192);
- movdq(xmm4, tmp4);
- psrlq(xmm3, 12);
- subl(eax, 16);
- cmpl(eax, 32736);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
- movl(tmp1, 0);
-
- bind(L_2TAG_PACKET_1_0_2);
- mulss(xmm0, xmm7);
- movl(edx, -1);
- subl(ecx, 4);
- shll(edx);
- shlq(edx, 32);
- movdq(xmm5, edx);
- por(xmm3, xmm1);
- subl(eax, 16351);
- cmpl(eax, 1);
- jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
- paddd(xmm0, xmm4);
- pand(xmm5, xmm3);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
-
- bind(L_2TAG_PACKET_3_0_2);
- subsd(xmm3, xmm5);
- pand(xmm0, xmm6);
- subl(eax, 1);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
-
- bind(L_2TAG_PACKET_4_0_2);
- mulsd(xmm3, xmm0);
- movdqu(xmm1, ExternalAddress(coeff)); //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
- lea(tmp4, ExternalAddress(L_tbl));
- subsd(xmm5, xmm2);
- movdqu(xmm4, ExternalAddress(16 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
- movl(ecx, eax);
- sarl(eax, 31);
- addl(ecx, eax);
- xorl(eax, ecx);
- addl(eax, 1);
- bsrl(eax, eax);
- unpcklpd(xmm5, xmm3);
- movdqu(xmm6, ExternalAddress(32 + coeff)); //0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL
- addsd(xmm3, xmm5);
- andl(edx, 16760832);
- shrl(edx, 10);
- addpd(xmm5, Address(tmp4, edx, Address::times_1, -3648));
- movdqu(xmm0, ExternalAddress(48 + coeff)); //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
- pshufd(xmm2, xmm3, 68);
- mulsd(xmm3, xmm3);
- mulpd(xmm1, xmm2);
- mulpd(xmm4, xmm2);
- addsd(xmm5, xmm7);
- mulsd(xmm2, xmm3);
- addpd(xmm6, xmm1);
- mulsd(xmm3, xmm3);
- addpd(xmm0, xmm4);
- movq(xmm1, Address(rsp, 16));
- movw(ecx, Address(rsp, 22));
- pshufd(xmm7, xmm5, 238);
- movq(xmm4, ExternalAddress(HIGHMASK_Y)); //0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
- mulpd(xmm6, xmm2);
- pshufd(xmm3, xmm3, 68);
- mulpd(xmm0, xmm2);
- shll(eax, 4);
- subl(eax, 15872);
- andl(ecx, 32752);
- addl(eax, ecx);
- mulpd(xmm3, xmm6);
- cmpl(eax, 624);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
- xorpd(xmm6, xmm6);
- movl(edx, 17080);
- pinsrw(xmm6, edx, 3);
- movdqu(xmm2, xmm1);
- pand(xmm4, xmm1);
- subsd(xmm1, xmm4);
- mulsd(xmm4, xmm5);
- addsd(xmm0, xmm7);
- mulsd(xmm1, xmm5);
- movdqu(xmm7, xmm6);
- addsd(xmm6, xmm4);
- lea(tmp4, ExternalAddress(T_exp));
- addpd(xmm3, xmm0);
- movdl(edx, xmm6);
- subsd(xmm6, xmm7);
- pshufd(xmm0, xmm3, 238);
- subsd(xmm4, xmm6);
- addsd(xmm0, xmm3);
- movl(ecx, edx);
- andl(edx, 255);
- addl(edx, edx);
- movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
- addsd(xmm4, xmm1);
- mulsd(xmm2, xmm0);
- movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
- movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
- shll(ecx, 12);
- xorl(ecx, tmp1);
- andl(rcx, -1048576);
- movdq(xmm6, rcx);
- addsd(xmm2, xmm4);
- mov64(tmp2, 0x3fe62e42fefa39ef);
- movdq(xmm1, tmp2);
- pshufd(xmm0, xmm2, 68);
- pshufd(xmm4, xmm2, 68);
- mulsd(xmm1, xmm2);
- pshufd(xmm6, xmm6, 17);
- mulpd(xmm0, xmm0);
- mulpd(xmm7, xmm4);
- paddd(xmm5, xmm6);
- mulsd(xmm1, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulsd(xmm0, xmm0);
- addpd(xmm3, xmm7);
- addsd(xmm1, xmm6);
- mulpd(xmm0, xmm3);
- pshufd(xmm3, xmm0, 238);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm3);
- addsd(xmm0, xmm5);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_0_0_2);
- addl(eax, 16);
- movl(edx, 32752);
- andl(edx, eax);
- cmpl(edx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_6_0_2);
- testl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_7_0_2);
-
- bind(L_2TAG_PACKET_8_0_2);
- movq(xmm0, Address(rsp, 8));
- movq(xmm3, Address(rsp, 8));
- movdl(edx, xmm3);
- psrlq(xmm3, 32);
- movdl(ecx, xmm3);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
- xorpd(xmm3, xmm3);
- movl(eax, 18416);
- pinsrw(xmm3, eax, 3);
- mulsd(xmm0, xmm3);
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm3, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- movl(ecx, 18416);
- psrlq(xmm0, 27);
- movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
- psrld(xmm0, 2);
- rcpps(xmm0, xmm0);
- psllq(xmm3, 12);
- movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
- psrlq(xmm3, 12);
- mulss(xmm0, xmm7);
- movl(edx, -1024);
- movdl(xmm5, edx);
- por(xmm3, xmm1);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm3);
- movl(tmp1, 0);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- andl(eax, 32752);
- subl(eax, 18416);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- jmp(L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_10_0_2);
- movq(xmm0, Address(rsp, 8));
- movq(xmm3, Address(rsp, 8));
- movdl(edx, xmm3);
- psrlq(xmm3, 32);
- movdl(ecx, xmm3);
- orl(edx, ecx);
- cmpl(edx, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
- xorpd(xmm3, xmm3);
- movl(eax, 18416);
- pinsrw(xmm3, eax, 3);
- mulsd(xmm0, xmm3);
- xorpd(xmm2, xmm2);
- movl(eax, 16368);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm3, xmm0);
- pextrw(eax, xmm0, 3);
- por(xmm0, xmm2);
- movl(ecx, 18416);
- psrlq(xmm0, 27);
- movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
- psrld(xmm0, 2);
- rcpps(xmm0, xmm0);
- psllq(xmm3, 12);
- movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
- psrlq(xmm3, 12);
- mulss(xmm0, xmm7);
- movl(edx, -1024);
- movdl(xmm5, edx);
- por(xmm3, xmm1);
- paddd(xmm0, xmm4);
- psllq(xmm5, 32);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- pand(xmm5, xmm3);
- movl(tmp1, INT_MIN);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- andl(eax, 32752);
- subl(eax, 18416);
- sarl(eax, 4);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- jmp(L_2TAG_PACKET_4_0_2);
-
- bind(L_2TAG_PACKET_5_0_2);
- cmpl(eax, 0);
- jcc(Assembler::less, L_2TAG_PACKET_11_0_2);
- cmpl(eax, 752);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_12_0_2);
- addsd(xmm0, xmm7);
- movq(xmm2, ExternalAddress(HALFMASK)); //0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
- addpd(xmm3, xmm0);
- xorpd(xmm6, xmm6);
- movl(eax, 17080);
- pinsrw(xmm6, eax, 3);
- pshufd(xmm0, xmm3, 238);
- addsd(xmm0, xmm3);
- movdqu(xmm3, xmm5);
- addsd(xmm5, xmm0);
- movdqu(xmm4, xmm2);
- subsd(xmm3, xmm5);
- movdqu(xmm7, xmm5);
- pand(xmm5, xmm2);
- movdqu(xmm2, xmm1);
- pand(xmm4, xmm1);
- subsd(xmm7, xmm5);
- addsd(xmm0, xmm3);
- subsd(xmm1, xmm4);
- mulsd(xmm4, xmm5);
- addsd(xmm0, xmm7);
- mulsd(xmm2, xmm0);
- movdqu(xmm7, xmm6);
- mulsd(xmm1, xmm5);
- addsd(xmm6, xmm4);
- movdl(eax, xmm6);
- subsd(xmm6, xmm7);
- lea(tmp4, ExternalAddress(T_exp));
- addsd(xmm2, xmm1);
- movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
- movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
- subsd(xmm4, xmm6);
- pextrw(edx, xmm6, 3);
- movl(ecx, eax);
- andl(eax, 255);
- addl(eax, eax);
- movdqu(xmm5, Address(tmp4, rax, Address::times_8, 0));
- addsd(xmm2, xmm4);
- sarl(ecx, 8);
- movl(eax, ecx);
- sarl(ecx, 1);
- subl(eax, ecx);
- shll(ecx, 20);
- xorl(ecx, tmp1);
- movdl(xmm6, ecx);
- movq(xmm1, ExternalAddress(32 + e_coeff)); //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
- andl(edx, 32767);
- cmpl(edx, 16529);
- jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
- pshufd(xmm0, xmm2, 68);
- pshufd(xmm4, xmm2, 68);
- mulpd(xmm0, xmm0);
- mulpd(xmm7, xmm4);
- pshufd(xmm6, xmm6, 17);
- mulsd(xmm1, xmm2);
- mulsd(xmm0, xmm0);
- paddd(xmm5, xmm6);
- addpd(xmm3, xmm7);
- mulsd(xmm1, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulpd(xmm0, xmm3);
- addsd(xmm1, xmm6);
- pshufd(xmm3, xmm0, 238);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- shll(eax, 4);
- xorpd(xmm4, xmm4);
- addl(eax, 16368);
- pinsrw(xmm4, eax, 3);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm3);
- movdqu(xmm1, xmm0);
- addsd(xmm0, xmm5);
- mulsd(xmm0, xmm4);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_6_0_2);
- movq(xmm1, Address(rsp, 16));
- movq(xmm0, Address(rsp, 8));
- movdqu(xmm2, xmm0);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_15_0_2);
- movdl(eax, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
- addsd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_16_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- movl(Address(rsp, 0), 29);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_18_0_2);
- movq(xmm0, Address(rsp, 16));
- addpd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_15_0_2);
- movdl(eax, xmm1);
- movdqu(xmm2, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
- pextrw(eax, xmm2, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_20_0_2);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_20_0_2);
- pextrw(eax, xmm0, 3);
- testl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_21_0_2);
- testl(ecx, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_23_0_2);
- movq(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
- testl(eax, 2);
- jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
- jmp(L_2TAG_PACKET_24_0_2);
-
- bind(L_2TAG_PACKET_21_0_2);
- shrl(ecx, 20);
- andl(ecx, 2047);
- cmpl(ecx, 1075);
- jcc(Assembler::above, L_2TAG_PACKET_24_0_2);
- jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
- cmpl(ecx, 1074);
- jcc(Assembler::above, L_2TAG_PACKET_23_0_2);
- cmpl(ecx, 1023);
- jcc(Assembler::below, L_2TAG_PACKET_24_0_2);
- movq(xmm1, Address(rsp, 16));
- movl(eax, 17208);
- xorpd(xmm3, xmm3);
- pinsrw(xmm3, eax, 3);
- movdqu(xmm4, xmm3);
- addsd(xmm3, xmm1);
- subsd(xmm4, xmm3);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
- movdl(eax, xmm3);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
-
- bind(L_2TAG_PACKET_25_0_2);
- movq(xmm1, Address(rsp, 16));
- pextrw(eax, xmm1, 3);
- andl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_27_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_27_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32768);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_24_0_2);
- movq(xmm1, Address(rsp, 16));
- pextrw(eax, xmm1, 3);
- andl(eax, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32752);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_26_0_2);
- movq(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
- jmp(L_2TAG_PACKET_25_0_2);
-
- bind(L_2TAG_PACKET_28_0_2);
- movdl(eax, xmm1);
- psrlq(xmm1, 20);
- movdl(edx, xmm1);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_29_0_2);
- movq(xmm0, Address(rsp, 16));
- addsd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_29_0_2);
- movq(xmm0, Address(rsp, 8));
- pextrw(eax, xmm0, 3);
- cmpl(eax, 49136);
- jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
- movdl(ecx, xmm0);
- psrlq(xmm0, 20);
- movdl(edx, xmm0);
- orl(ecx, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32760);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_30_0_2);
- movq(xmm1, Address(rsp, 16));
- andl(eax, 32752);
- subl(eax, 16368);
- pextrw(edx, xmm1, 3);
- xorpd(xmm0, xmm0);
- xorl(eax, edx);
- andl(eax, 32768);
- jcc(Assembler::equal, L_2TAG_PACKET_31_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_31_0_2);
- movl(ecx, 32752);
- pinsrw(xmm0, ecx, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_32_0_2);
- movdl(eax, xmm1);
- cmpl(edx, 17184);
- jcc(Assembler::above, L_2TAG_PACKET_33_0_2);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
- testl(eax, 2);
- jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
- jmp(L_2TAG_PACKET_36_0_2);
-
- bind(L_2TAG_PACKET_33_0_2);
- testl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
- jmp(L_2TAG_PACKET_36_0_2);
-
- bind(L_2TAG_PACKET_7_0_2);
- movq(xmm2, Address(rsp, 8));
- movdl(eax, xmm2);
- psrlq(xmm2, 31);
- movdl(ecx, xmm2);
- orl(eax, ecx);
- jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
- movq(xmm1, Address(rsp, 16));
- pextrw(edx, xmm1, 3);
- movdl(eax, xmm1);
- movdqu(xmm2, xmm1);
- psrlq(xmm2, 32);
- movdl(ecx, xmm2);
- addl(ecx, ecx);
- orl(ecx, eax);
- jcc(Assembler::equal, L_2TAG_PACKET_37_0_2);
- andl(edx, 32752);
- cmpl(edx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
- cmpl(edx, 17200);
- jcc(Assembler::above, L_2TAG_PACKET_35_0_2);
- cmpl(edx, 17184);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_32_0_2);
- cmpl(edx, 16368);
- jcc(Assembler::below, L_2TAG_PACKET_34_0_2);
- movl(eax, 17208);
- xorpd(xmm2, xmm2);
- pinsrw(xmm2, eax, 3);
- movdqu(xmm4, xmm2);
- addsd(xmm2, xmm1);
- subsd(xmm4, xmm2);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32767);
- jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
- movdl(eax, xmm2);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
-
- bind(L_2TAG_PACKET_36_0_2);
- xorpd(xmm1, xmm1);
- movl(edx, 30704);
- pinsrw(xmm1, edx, 3);
- movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
- movq(xmm4, Address(rsp, 8));
- pextrw(eax, xmm4, 3);
- movl(edx, 8192);
- movdl(xmm4, edx);
- andl(eax, 32767);
- subl(eax, 16);
- jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
- movl(edx, eax);
- andl(edx, 32752);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- movl(tmp1, INT_MIN);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_34_0_2);
- xorpd(xmm1, xmm1);
- movl(eax, 32752);
- pinsrw(xmm1, eax, 3);
- xorpd(xmm0, xmm0);
- mulsd(xmm0, xmm1);
- movl(Address(rsp, 0), 28);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_35_0_2);
- xorpd(xmm1, xmm1);
- movl(edx, 30704);
- pinsrw(xmm1, edx, 3);
- movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
- movq(xmm4, Address(rsp, 8));
- pextrw(eax, xmm4, 3);
- movl(edx, 8192);
- movdl(xmm4, edx);
- andl(eax, 32767);
- subl(eax, 16);
- jcc(Assembler::less, L_2TAG_PACKET_8_0_2);
- movl(edx, eax);
- andl(edx, 32752);
- subl(edx, 16368);
- movl(ecx, edx);
- sarl(edx, 31);
- addl(ecx, edx);
- xorl(ecx, edx);
- addl(ecx, 16);
- bsrl(ecx, ecx);
- movl(tmp1, 0);
- jmp(L_2TAG_PACKET_1_0_2);
-
- bind(L_2TAG_PACKET_19_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_22_0_2);
- xorpd(xmm0, xmm0);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_11_0_2);
- addl(eax, 384);
- cmpl(eax, 0);
- jcc(Assembler::less, L_2TAG_PACKET_38_0_2);
- mulsd(xmm5, xmm1);
- addsd(xmm0, xmm7);
- shrl(tmp1, 31);
- addpd(xmm3, xmm0);
- pshufd(xmm0, xmm3, 238);
- addsd(xmm3, xmm0);
- lea(tmp4, ExternalAddress(log2)); //0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
- movq(xmm4, Address(tmp4, tmp1, Address::times_8, 0));
- mulsd(xmm1, xmm3);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- shll(tmp1, 15);
- orl(eax, tmp1);
- pinsrw(xmm0, eax, 3);
- addsd(xmm5, xmm1);
- mulsd(xmm5, xmm4);
- addsd(xmm0, xmm5);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_38_0_2);
-
- bind(L_2TAG_PACKET_37_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_39_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 16368);
- pinsrw(xmm0, eax, 3);
- movl(Address(rsp, 0), 26);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_9_0_2);
- movq(xmm1, Address(rsp, 16));
- movdqu(xmm2, xmm1);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_40_0_2);
- movdl(eax, xmm2);
- psrlq(xmm2, 20);
- movdl(edx, xmm2);
- orl(eax, edx);
- jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
-
- bind(L_2TAG_PACKET_40_0_2);
- movdl(eax, xmm1);
- psrlq(xmm1, 32);
- movdl(edx, xmm1);
- movl(ecx, edx);
- addl(edx, edx);
- orl(eax, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_39_0_2);
- shrl(edx, 21);
- cmpl(edx, 1075);
- jcc(Assembler::above, L_2TAG_PACKET_41_0_2);
- jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
- cmpl(edx, 1023);
- jcc(Assembler::below, L_2TAG_PACKET_41_0_2);
- movq(xmm1, Address(rsp, 16));
- movl(eax, 17208);
- xorpd(xmm3, xmm3);
- pinsrw(xmm3, eax, 3);
- movdqu(xmm4, xmm3);
- addsd(xmm3, xmm1);
- subsd(xmm4, xmm3);
- addsd(xmm1, xmm4);
- pextrw(eax, xmm1, 3);
- andl(eax, 32752);
- jcc(Assembler::notEqual, L_2TAG_PACKET_41_0_2);
- movdl(eax, xmm3);
- andl(eax, 1);
- jcc(Assembler::equal, L_2TAG_PACKET_41_0_2);
-
- bind(L_2TAG_PACKET_43_0_2);
- movq(xmm0, Address(rsp, 8));
- testl(ecx, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_42_0_2);
- movq(xmm1, Address(rsp, 16));
- movdl(eax, xmm1);
- testl(eax, 1);
- jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
-
- bind(L_2TAG_PACKET_41_0_2);
- testl(ecx, INT_MIN);
- jcc(Assembler::equal, L_2TAG_PACKET_22_0_2);
- xorpd(xmm0, xmm0);
-
- bind(L_2TAG_PACKET_44_0_2);
- movl(eax, 16368);
- xorpd(xmm1, xmm1);
- pinsrw(xmm1, eax, 3);
- divsd(xmm1, xmm0);
- movdqu(xmm0, xmm1);
- movl(Address(rsp, 0), 27);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_12_0_2);
- movq(xmm2, Address(rsp, 8));
- movq(xmm6, Address(rsp, 16));
- pextrw(eax, xmm2, 3);
- pextrw(edx, xmm6, 3);
- movl(ecx, 32752);
- andl(ecx, edx);
- cmpl(ecx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
- andl(eax, 32752);
- subl(eax, 16368);
- xorl(edx, eax);
- testl(edx, 32768);
- jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
-
- bind(L_2TAG_PACKET_47_0_2);
- movl(eax, 32736);
- pinsrw(xmm0, eax, 3);
- shrl(tmp1, 16);
- orl(eax, tmp1);
- pinsrw(xmm1, eax, 3);
- mulsd(xmm0, xmm1);
-
- bind(L_2TAG_PACKET_14_0_2);
- movl(Address(rsp, 0), 24);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_46_0_2);
- movl(eax, 16);
- pinsrw(xmm0, eax, 3);
- mulsd(xmm0, xmm0);
- testl(tmp1, INT_MIN);
- jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
- mov64(tmp2, 0x8000000000000000);
- movdq(xmm2, tmp2);
- xorpd(xmm0, xmm2);
-
- bind(L_2TAG_PACKET_48_0_2);
- movl(Address(rsp, 0), 25);
- jmp(L_2TAG_PACKET_17_0_2);
-
- bind(L_2TAG_PACKET_13_0_2);
- pextrw(ecx, xmm5, 3);
- pextrw(edx, xmm4, 3);
- movl(eax, -1);
- andl(ecx, 32752);
- subl(ecx, 16368);
- andl(edx, 32752);
- addl(edx, ecx);
- movl(ecx, -31);
- sarl(edx, 4);
- subl(ecx, edx);
- jcc(Assembler::lessEqual, L_2TAG_PACKET_49_0_2);
- cmpl(ecx, 20);
- jcc(Assembler::above, L_2TAG_PACKET_50_0_2);
- shll(eax);
-
- bind(L_2TAG_PACKET_49_0_2);
- movdl(xmm0, eax);
- psllq(xmm0, 32);
- pand(xmm0, xmm5);
- subsd(xmm5, xmm0);
- addsd(xmm5, xmm1);
- mulsd(xmm0, xmm4);
- mulsd(xmm5, xmm4);
- addsd(xmm0, xmm5);
-
- bind(L_2TAG_PACKET_50_0_2);
- jmp(L_2TAG_PACKET_48_0_2);
-
- bind(L_2TAG_PACKET_2_0_2);
- movw(ecx, Address(rsp, 22));
- movl(edx, INT_MIN);
- movdl(xmm1, rdx);
- xorpd(xmm7, xmm7);
- paddd(xmm0, xmm4);
- movdl(edx, xmm0);
- psllq(xmm0, 29);
- paddq(xmm1, xmm3);
- pand(xmm5, xmm1);
- andl(ecx, 32752);
- cmpl(ecx, 16560);
- jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
- pand(xmm0, xmm6);
- subsd(xmm3, xmm5);
- addl(eax, 16351);
- shrl(eax, 4);
- subl(eax, 1022);
- cvtsi2sdl(xmm7, eax);
- mulpd(xmm5, xmm0);
- lea(r11, ExternalAddress(L_tbl));
- movq(xmm4, ExternalAddress(coeff_h)); //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
- mulsd(xmm3, xmm0);
- movq(xmm6, ExternalAddress(coeff_h)); //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
- subsd(xmm5, xmm2);
- movq(xmm1, ExternalAddress(8 + coeff_h)); //0x00000000UL, 0xbf5dabe1UL
- pshufd(xmm2, xmm3, 68);
- unpcklpd(xmm5, xmm3);
- addsd(xmm3, xmm5);
- movq(xmm0, ExternalAddress(8 + coeff_h)); //0x00000000UL, 0xbf5dabe1UL
- andl(edx, 16760832);
- shrl(edx, 10);
- addpd(xmm7, Address(tmp4, edx, Address::times_1, -3648));
- mulsd(xmm4, xmm5);
- mulsd(xmm0, xmm5);
- mulsd(xmm6, xmm2);
- mulsd(xmm1, xmm2);
- movdqu(xmm2, xmm5);
- mulsd(xmm4, xmm5);
- addsd(xmm5, xmm0);
- movdqu(xmm0, xmm7);
- addsd(xmm2, xmm3);
- addsd(xmm7, xmm5);
- mulsd(xmm6, xmm2);
- subsd(xmm0, xmm7);
- movdqu(xmm2, xmm7);
- addsd(xmm7, xmm4);
- addsd(xmm0, xmm5);
- subsd(xmm2, xmm7);
- addsd(xmm4, xmm2);
- pshufd(xmm2, xmm5, 238);
- movdqu(xmm5, xmm7);
- addsd(xmm7, xmm2);
- addsd(xmm4, xmm0);
- movdqu(xmm0, ExternalAddress(coeff)); //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
- subsd(xmm5, xmm7);
- addsd(xmm6, xmm4);
- movdqu(xmm4, xmm7);
- addsd(xmm5, xmm2);
- addsd(xmm7, xmm1);
- movdqu(xmm2, ExternalAddress(64 + coeff)); //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
- subsd(xmm4, xmm7);
- addsd(xmm6, xmm5);
- addsd(xmm4, xmm1);
- pshufd(xmm5, xmm7, 238);
- movapd(xmm1, xmm7);
- addsd(xmm7, xmm5);
- subsd(xmm1, xmm7);
- addsd(xmm1, xmm5);
- movdqu(xmm5, ExternalAddress(80 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL
- pshufd(xmm3, xmm3, 68);
- addsd(xmm6, xmm4);
- addsd(xmm6, xmm1);
- movdqu(xmm1, ExternalAddress(32 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
- mulpd(xmm0, xmm3);
- mulpd(xmm2, xmm3);
- pshufd(xmm4, xmm3, 68);
- mulpd(xmm3, xmm3);
- addpd(xmm0, xmm1);
- addpd(xmm5, xmm2);
- mulsd(xmm4, xmm3);
- movq(xmm2, ExternalAddress(HIGHMASK_LOG_X)); //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
- mulpd(xmm3, xmm3);
- movq(xmm1, Address(rsp, 16));
- movw(ecx, Address(rsp, 22));
- mulpd(xmm0, xmm4);
- pextrw(eax, xmm7, 3);
- mulpd(xmm5, xmm4);
- mulpd(xmm0, xmm3);
- movq(xmm4, ExternalAddress(8 + HIGHMASK_Y)); //0x00000000UL, 0xffffffffUL
- pand(xmm2, xmm7);
- addsd(xmm5, xmm6);
- subsd(xmm7, xmm2);
- addpd(xmm5, xmm0);
- andl(eax, 32752);
- subl(eax, 16368);
- andl(ecx, 32752);
- cmpl(ecx, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
- addl(ecx, eax);
- cmpl(ecx, 16576);
- jcc(Assembler::aboveEqual, L_2TAG_PACKET_51_0_2);
- pshufd(xmm0, xmm5, 238);
- pand(xmm4, xmm1);
- movdqu(xmm3, xmm1);
- addsd(xmm5, xmm0);
- subsd(xmm1, xmm4);
- xorpd(xmm6, xmm6);
- movl(edx, 17080);
- pinsrw(xmm6, edx, 3);
- addsd(xmm7, xmm5);
- mulsd(xmm4, xmm2);
- mulsd(xmm1, xmm2);
- movdqu(xmm5, xmm6);
- mulsd(xmm3, xmm7);
- addsd(xmm6, xmm4);
- addsd(xmm1, xmm3);
- movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
- movdl(edx, xmm6);
- subsd(xmm6, xmm5);
- lea(tmp4, ExternalAddress(T_exp));
- movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
- movq(xmm2, ExternalAddress(32 + e_coeff)); //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
- subsd(xmm4, xmm6);
- movl(ecx, edx);
- andl(edx, 255);
- addl(edx, edx);
- movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
- addsd(xmm4, xmm1);
- pextrw(edx, xmm6, 3);
- shrl(ecx, 8);
- movl(eax, ecx);
- shrl(ecx, 1);
- subl(eax, ecx);
- shll(ecx, 20);
- movdl(xmm6, ecx);
- pshufd(xmm0, xmm4, 68);
- pshufd(xmm1, xmm4, 68);
- mulpd(xmm0, xmm0);
- mulpd(xmm7, xmm1);
- pshufd(xmm6, xmm6, 17);
- mulsd(xmm2, xmm4);
- andl(edx, 32767);
- cmpl(edx, 16529);
- jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
- mulsd(xmm0, xmm0);
- paddd(xmm5, xmm6);
- addpd(xmm3, xmm7);
- mulsd(xmm2, xmm5);
- pshufd(xmm6, xmm5, 238);
- mulpd(xmm0, xmm3);
- addsd(xmm2, xmm6);
- pshufd(xmm3, xmm0, 238);
- addl(eax, 1023);
- shll(eax, 20);
- orl(eax, tmp1);
- movdl(xmm4, eax);
- mulsd(xmm0, xmm5);
- mulsd(xmm3, xmm5);
- addsd(xmm0, xmm2);
- psllq(xmm4, 32);
- addsd(xmm0, xmm3);
- movdqu(xmm1, xmm0);
- addsd(xmm0, xmm5);
- mulsd(xmm0, xmm4);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
-
- bind(L_2TAG_PACKET_52_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_45_0_2);
- movq(xmm0, Address(rsp, 8));
- xorpd(xmm2, xmm2);
- movl(eax, 49136);
- pinsrw(xmm2, eax, 3);
- addsd(xmm2, xmm0);
- pextrw(eax, xmm2, 3);
- cmpl(eax, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_53_0_2);
- xorpd(xmm0, xmm0);
- movl(eax, 32760);
- pinsrw(xmm0, eax, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_53_0_2);
- movq(xmm1, Address(rsp, 16));
- movdl(edx, xmm1);
- movdqu(xmm3, xmm1);
- psrlq(xmm3, 20);
- movdl(ecx, xmm3);
- orl(ecx, edx);
- jcc(Assembler::equal, L_2TAG_PACKET_54_0_2);
- addsd(xmm1, xmm1);
- movdqu(xmm0, xmm1);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_51_0_2);
- pextrw(eax, xmm1, 3);
- pextrw(ecx, xmm2, 3);
- xorl(eax, ecx);
- testl(eax, 32768);
- jcc(Assembler::equal, L_2TAG_PACKET_47_0_2);
- jmp(L_2TAG_PACKET_46_0_2);
-
- bind(L_2TAG_PACKET_54_0_2);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- pextrw(edx, xmm1, 3);
- xorpd(xmm0, xmm0);
- subl(eax, 16368);
- xorl(eax, edx);
- testl(eax, 32768);
- jcc(Assembler::equal, L_2TAG_PACKET_55_0_2);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_55_0_2);
- movl(edx, 32752);
- pinsrw(xmm0, edx, 3);
- jmp(B1_5);
-
- bind(L_2TAG_PACKET_17_0_2);
- movq(Address(rsp, 24), xmm0);
-
- bind(B1_3);
- movq(xmm0, Address(rsp, 24));
-
- bind(L_2TAG_PACKET_56_0_2);
-
- bind(B1_5);
- addq(rsp, 40);
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - SIN()
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-//
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// If |x| < SNN (SNN meaning the smallest normal number), we
-// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
-// do 2^-55 * (2^55 * x - x).
-//
-// Special cases:
-// sin(NaN) = quiet NaN, and raise invalid exception
-// sin(INF) = NaN and raise invalid exception
-// sin(+/-0) = +/-0
-//
-/******************************************************************************/
-
-ALIGNED_(16) juint _ONEHALF[] =
-{
- 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
-};
-
-ALIGNED_(16) juint _P_2[] =
-{
- 0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
-};
-
-ALIGNED_(16) juint _SC_4[] =
-{
- 0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
-};
-
-ALIGNED_(16) juint _Ctable[] =
-{
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
- 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
- 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
- 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
- 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
- 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
- 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
- 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
- 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
- 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
- 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
- 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
- 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
- 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
- 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
- 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
- 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
- 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
- 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
- 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
- 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
- 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
- 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
- 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
- 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
- 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
- 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
- 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
- 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
- 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
- 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
- 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
- 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
- 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
- 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
- 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
- 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
- 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
- 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
- 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
- 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
- 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
- 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
- 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
- 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
- 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
- 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
- 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
- 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
- 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
- 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
- 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
- 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
- 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
- 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
- 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
- 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
- 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
- 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
- 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
- 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
- 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
- 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
- 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
- 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
- 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
- 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
- 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
- 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
- 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
- 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
- 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
- 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
- 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
- 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
- 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
- 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
- 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
- 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
- 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
- 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
- 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
- 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
- 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
- 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
- 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
- 0x00000000UL, 0x3ff00000UL
-};
-
-ALIGNED_(16) juint _SC_2[] =
-{
- 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
-};
-
-ALIGNED_(16) juint _SC_3[] =
-{
- 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
-};
-
-ALIGNED_(16) juint _SC_1[] =
-{
- 0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
-};
-
-ALIGNED_(16) juint _PI_INV_TABLE[] =
-{
- 0x00000000UL, 0x00000000UL, 0xa2f9836eUL, 0x4e441529UL, 0xfc2757d1UL,
- 0xf534ddc0UL, 0xdb629599UL, 0x3c439041UL, 0xfe5163abUL, 0xdebbc561UL,
- 0xb7246e3aUL, 0x424dd2e0UL, 0x06492eeaUL, 0x09d1921cUL, 0xfe1deb1cUL,
- 0xb129a73eUL, 0xe88235f5UL, 0x2ebb4484UL, 0xe99c7026UL, 0xb45f7e41UL,
- 0x3991d639UL, 0x835339f4UL, 0x9c845f8bUL, 0xbdf9283bUL, 0x1ff897ffUL,
- 0xde05980fUL, 0xef2f118bUL, 0x5a0a6d1fUL, 0x6d367ecfUL, 0x27cb09b7UL,
- 0x4f463f66UL, 0x9e5fea2dUL, 0x7527bac7UL, 0xebe5f17bUL, 0x3d0739f7UL,
- 0x8a5292eaUL, 0x6bfb5fb1UL, 0x1f8d5d08UL, 0x56033046UL, 0xfc7b6babUL,
- 0xf0cfbc21UL
-};
-
-ALIGNED_(8) juint _PI_4[] =
-{
- 0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
-};
-
-ALIGNED_(8) juint _PI32INV[] =
-{
- 0x6dc9c883UL, 0x40245f30UL
-};
-
-ALIGNED_(8) juint _SHIFTER[] =
-{
- 0x00000000UL, 0x43380000UL
-};
-
-ALIGNED_(8) juint _SIGN_MASK[] =
-{
- 0x00000000UL, 0x80000000UL
-};
-
-ALIGNED_(8) juint _P_3[] =
-{
- 0x2e037073UL, 0x3b63198aUL
-};
-
-ALIGNED_(8) juint _ALL_ONES[] =
-{
- 0xffffffffUL, 0x3fefffffUL
-};
-
-ALIGNED_(8) juint _TWO_POW_55[] =
-{
- 0x00000000UL, 0x43600000UL
-};
-
-ALIGNED_(8) juint _TWO_POW_M55[] =
-{
- 0x00000000UL, 0x3c800000ULL
-};
-
-ALIGNED_(8) juint _P_1[] =
-{
- 0x54400000UL, 0x3fb921fbUL
-};
-
-ALIGNED_(8) juint _NEG_ZERO[] =
-{
- 0x00000000UL, 0x80000000UL
-};
-
-void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
- Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
- Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
- Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
- Label L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1;
- Label L_2TAG_PACKET_12_0_1, B1_1, B1_2, B1_4, start;
-
- assert_different_registers(tmp1, tmp2, tmp3, tmp4, eax, ebx, ecx, edx);
- address ONEHALF = (address)_ONEHALF;
- address P_2 = (address)_P_2;
- address SC_4 = (address)_SC_4;
- address Ctable = (address)_Ctable;
- address SC_2 = (address)_SC_2;
- address SC_3 = (address)_SC_3;
- address SC_1 = (address)_SC_1;
- address PI_INV_TABLE = (address)_PI_INV_TABLE;
- address PI_4 = (address)_PI_4;
- address PI32INV = (address)_PI32INV;
- address SHIFTER = (address)_SHIFTER;
- address SIGN_MASK = (address)_SIGN_MASK;
- address P_3 = (address)_P_3;
- address ALL_ONES = (address)_ALL_ONES;
- address TWO_POW_55 = (address)_TWO_POW_55;
- address TWO_POW_M55 = (address)_TWO_POW_M55;
- address P_1 = (address)_P_1;
- address NEG_ZERO = (address)_NEG_ZERO;
-
- bind(start);
- push(rbx);
- subq(rsp, 16);
- movsd(Address(rsp, 8), xmm0);
- movl(eax, Address(rsp, 12));
- movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
- movq(xmm2, ExternalAddress(SHIFTER)); //0x00000000UL, 0x43380000UL
- andl(eax, 2147418112);
- subl(eax, 808452096);
- cmpl(eax, 281346048);
- jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
- mulsd(xmm1, xmm0);
- movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
- movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- addpd(xmm1, xmm5);
- cvttsd2sil(edx, xmm1);
- cvtsi2sdl(xmm1, edx);
- movdqu(xmm6, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
- mov64(r8, 0x3fb921fb54400000);
- movdq(xmm3, r8);
- movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
- pshufd(xmm4, xmm0, 68);
- mulsd(xmm3, xmm1);
- movddup(xmm1, xmm1);
- andl(edx, 63);
- shll(edx, 5);
- lea(rax, ExternalAddress(Ctable));
- addq(rax, rdx);
- mulpd(xmm6, xmm1);
- mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
- subsd(xmm4, xmm3);
- movq(xmm7, Address(rax, 8));
- subsd(xmm0, xmm3);
- movddup(xmm3, xmm4);
- subsd(xmm4, xmm6);
- pshufd(xmm0, xmm0, 68);
- movdqu(xmm2, Address(rax, 0));
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm6);
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm6);
- movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
- subsd(xmm1, xmm3);
- movq(xmm3, Address(rax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
- mulsd(xmm4, Address(rax, 0));
- addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
- mulpd(xmm5, xmm0);
- movdqu(xmm0, xmm3);
- addsd(xmm3, Address(rax, 8));
- mulpd(xmm1, xmm7);
- movdqu(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movq(xmm5, Address(rax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(rax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm5, xmm0);
- addsd(xmm3, xmm7);
- addsd(xmm1, xmm5);
- addsd(xmm1, xmm3);
- addsd(xmm1, xmm6);
- unpckhpd(xmm6, xmm6);
- movdqu(xmm0, xmm4);
- addsd(xmm1, xmm6);
- addsd(xmm0, xmm1);
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_0_0_1);
- jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
- shrl(eax, 20);
- cmpl(eax, 3325);
- jcc(Assembler::notEqual, L_2TAG_PACKET_2_0_1);
- mulsd(xmm0, ExternalAddress(ALL_ONES)); //0xffffffffUL, 0x3fefffffUL
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_2_0_1);
- movq(xmm3, ExternalAddress(TWO_POW_55)); //0x00000000UL, 0x43600000UL
- mulsd(xmm3, xmm0);
- subsd(xmm3, xmm0);
- mulsd(xmm3, ExternalAddress(TWO_POW_M55)); //0x00000000UL, 0x3c800000UL
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_1_0_1);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_3_0_1);
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32752);
- subl(ecx, 16224);
- shrl(ecx, 7);
- andl(ecx, 65532);
- lea(r11, ExternalAddress(PI_INV_TABLE));
- addq(rcx, r11);
- movdq(rax, xmm0);
- movl(r10, Address(rcx, 20));
- movl(r8, Address(rcx, 24));
- movl(edx, eax);
- shrq(rax, 21);
- orl(eax, INT_MIN);
- shrl(eax, 11);
- movl(r9, r10);
- imulq(r10, rdx);
- imulq(r9, rax);
- imulq(r8, rax);
- movl(rsi, Address(rcx, 16));
- movl(rdi, Address(rcx, 12));
- movl(r11, r10);
- shrq(r10, 32);
- addq(r9, r10);
- addq(r11, r8);
- movl(r8, r11);
- shrq(r11, 32);
- addq(r9, r11);
- movl(r10, rsi);
- imulq(rsi, rdx);
- imulq(r10, rax);
- movl(r11, rdi);
- imulq(rdi, rdx);
- movl(ebx, rsi);
- shrq(rsi, 32);
- addq(r9, rbx);
- movl(ebx, r9);
- shrq(r9, 32);
- addq(r10, rsi);
- addq(r10, r9);
- shlq(rbx, 32);
- orq(r8, rbx);
- imulq(r11, rax);
- movl(r9, Address(rcx, 8));
- movl(rsi, Address(rcx, 4));
- movl(ebx, rdi);
- shrq(rdi, 32);
- addq(r10, rbx);
- movl(ebx, r10);
- shrq(r10, 32);
- addq(r11, rdi);
- addq(r11, r10);
- movq(rdi, r9);
- imulq(r9, rdx);
- imulq(rdi, rax);
- movl(r10, r9);
- shrq(r9, 32);
- addq(r11, r10);
- movl(r10, r11);
- shrq(r11, 32);
- addq(rdi, r9);
- addq(rdi, r11);
- movq(r9, rsi);
- imulq(rsi, rdx);
- imulq(r9, rax);
- shlq(r10, 32);
- orq(r10, rbx);
- movl(eax, Address(rcx, 0));
- movl(r11, rsi);
- shrq(rsi, 32);
- addq(rdi, r11);
- movl(r11, rdi);
- shrq(rdi, 32);
- addq(r9, rsi);
- addq(r9, rdi);
- imulq(rdx, rax);
- pextrw(ebx, xmm0, 3);
- lea(rdi, ExternalAddress(PI_INV_TABLE));
- subq(rcx, rdi);
- addl(ecx, ecx);
- addl(ecx, ecx);
- addl(ecx, ecx);
- addl(ecx, 19);
- movl(rsi, 32768);
- andl(rsi, ebx);
- shrl(ebx, 4);
- andl(ebx, 2047);
- subl(ebx, 1023);
- subl(ecx, ebx);
- addq(r9, rdx);
- movl(edx, ecx);
- addl(edx, 32);
- cmpl(ecx, 1);
- jcc(Assembler::less, L_2TAG_PACKET_4_0_1);
- negl(ecx);
- addl(ecx, 29);
- shll(r9);
- movl(rdi, r9);
- andl(r9, 536870911);
- testl(r9, 268435456);
- jcc(Assembler::notEqual, L_2TAG_PACKET_5_0_1);
- shrl(r9);
- movl(ebx, 0);
- shlq(r9, 32);
- orq(r9, r11);
-
- bind(L_2TAG_PACKET_6_0_1);
-
- bind(L_2TAG_PACKET_7_0_1);
-
- cmpq(r9, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_8_0_1);
-
- bind(L_2TAG_PACKET_9_0_1);
- bsrq(r11, r9);
- movl(ecx, 29);
- subl(ecx, r11);
- jcc(Assembler::lessEqual, L_2TAG_PACKET_10_0_1);
- shlq(r9);
- movq(rax, r10);
- shlq(r10);
- addl(edx, ecx);
- negl(ecx);
- addl(ecx, 64);
- shrq(rax);
- shrq(r8);
- orq(r9, rax);
- orq(r10, r8);
-
- bind(L_2TAG_PACKET_11_0_1);
- cvtsi2sdq(xmm0, r9);
- shrq(r10, 1);
- cvtsi2sdq(xmm3, r10);
- xorpd(xmm4, xmm4);
- shll(edx, 4);
- negl(edx);
- addl(edx, 16368);
- orl(edx, rsi);
- xorl(edx, ebx);
- pinsrw(xmm4, edx, 3);
- movq(xmm2, ExternalAddress(PI_4)); //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
- movq(xmm6, ExternalAddress(8 + PI_4)); //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
- xorpd(xmm5, xmm5);
- subl(edx, 1008);
- pinsrw(xmm5, edx, 3);
- mulsd(xmm0, xmm4);
- shll(rsi, 16);
- sarl(rsi, 31);
- mulsd(xmm3, xmm5);
- movdqu(xmm1, xmm0);
- mulsd(xmm0, xmm2);
- shrl(rdi, 29);
- addsd(xmm1, xmm3);
- mulsd(xmm3, xmm2);
- addl(rdi, rsi);
- xorl(rdi, rsi);
- mulsd(xmm6, xmm1);
- movl(eax, rdi);
- addsd(xmm6, xmm3);
- movdqu(xmm2, xmm0);
- addsd(xmm0, xmm6);
- subsd(xmm2, xmm0);
- addsd(xmm6, xmm2);
-
- bind(L_2TAG_PACKET_12_0_1);
- movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
- mulsd(xmm1, xmm0);
- movq(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
- movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- addpd(xmm1, xmm5);
- cvttsd2sil(edx, xmm1);
- cvtsi2sdl(xmm1, edx);
- movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
- movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
- mulsd(xmm3, xmm1);
- unpcklpd(xmm1, xmm1);
- shll(eax, 3);
- addl(edx, 1865216);
- movdqu(xmm4, xmm0);
- addl(edx, eax);
- andl(edx, 63);
- movdqu(xmm5, ExternalAddress(SC_4)); //0x54400000UL, 0x3fb921fbUL
- lea(rax, ExternalAddress(Ctable));
- shll(edx, 5);
- addq(rax, rdx);
- mulpd(xmm2, xmm1);
- subsd(xmm0, xmm3);
- mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
- subsd(xmm4, xmm3);
- movq(xmm7, Address(rax, 8));
- unpcklpd(xmm0, xmm0);
- movdqu(xmm3, xmm4);
- subsd(xmm4, xmm2);
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm2);
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm2);
- movdqu(xmm2, Address(rax, 0));
- subsd(xmm1, xmm3);
- movq(xmm3, Address(rax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- subsd(xmm1, xmm6);
- movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
- mulsd(xmm4, Address(rax, 0));
- addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
- mulpd(xmm5, xmm0);
- movdqu(xmm0, xmm3);
- addsd(xmm3, Address(rax, 8));
- mulpd(xmm1, xmm7);
- movdqu(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movq(xmm5, Address(rax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(rax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm5, xmm0);
- addsd(xmm3, xmm7);
- addsd(xmm1, xmm5);
- addsd(xmm1, xmm3);
- addsd(xmm1, xmm6);
- unpckhpd(xmm6, xmm6);
- movdqu(xmm0, xmm4);
- addsd(xmm1, xmm6);
- addsd(xmm0, xmm1);
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_8_0_1);
- addl(edx, 64);
- movq(r9, r10);
- movq(r10, r8);
- movl(r8, 0);
- cmpq(r9, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
- addl(edx, 64);
- movq(r9, r10);
- movq(r10, r8);
- cmpq(r9, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
- xorpd(xmm0, xmm0);
- xorpd(xmm6, xmm6);
- jmp(L_2TAG_PACKET_12_0_1);
-
- bind(L_2TAG_PACKET_10_0_1);
- jcc(Assembler::equal, L_2TAG_PACKET_11_0_1);
- negl(ecx);
- shrq(r10);
- movq(rax, r9);
- shrq(r9);
- subl(edx, ecx);
- negl(ecx);
- addl(ecx, 64);
- shlq(rax);
- orq(r10, rax);
- jmp(L_2TAG_PACKET_11_0_1);
-
- bind(L_2TAG_PACKET_4_0_1);
- negl(ecx);
- shlq(r9, 32);
- orq(r9, r11);
- shlq(r9);
- movq(rdi, r9);
- testl(r9, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_13_0_1);
- shrl(r9);
- movl(ebx, 0);
- shrq(rdi, 3);
- jmp(L_2TAG_PACKET_7_0_1);
-
- bind(L_2TAG_PACKET_5_0_1);
- shrl(r9);
- movl(ebx, 536870912);
- shrl(ebx);
- shlq(r9, 32);
- orq(r9, r11);
- shlq(rbx, 32);
- addl(rdi, 536870912);
- movl(rcx, 0);
- movl(r11, 0);
- subq(rcx, r8);
- sbbq(r11, r10);
- sbbq(rbx, r9);
- movq(r8, rcx);
- movq(r10, r11);
- movq(r9, rbx);
- movl(ebx, 32768);
- jmp(L_2TAG_PACKET_6_0_1);
-
- bind(L_2TAG_PACKET_13_0_1);
- shrl(r9);
- mov64(rbx, 0x100000000);
- shrq(rbx);
- movl(rcx, 0);
- movl(r11, 0);
- subq(rcx, r8);
- sbbq(r11, r10);
- sbbq(rbx, r9);
- movq(r8, rcx);
- movq(r10, r11);
- movq(r9, rbx);
- movl(ebx, 32768);
- shrq(rdi, 3);
- addl(rdi, 536870912);
- jmp(L_2TAG_PACKET_7_0_1);
-
- bind(L_2TAG_PACKET_3_0_1);
- movq(xmm0, Address(rsp, 8));
- mulsd(xmm0, ExternalAddress(NEG_ZERO)); //0x00000000UL, 0x80000000UL
- movq(Address(rsp, 0), xmm0);
-
- bind(L_2TAG_PACKET_14_0_1);
-
- bind(B1_4);
- addq(rsp, 16);
- pop(rbx);
-}
-
-/******************************************************************************/
-// ALGORITHM DESCRIPTION - COS()
-// ---------------------
-//
-// 1. RANGE REDUCTION
-//
-// We perform an initial range reduction from X to r with
-//
-// X =~= N * pi/32 + r
-//
-// so that |r| <= pi/64 + epsilon. We restrict inputs to those
-// where |N| <= 932560. Beyond this, the range reduction is
-// insufficiently accurate. For extremely small inputs,
-// denormalization can occur internally, impacting performance.
-// This means that the main path is actually only taken for
-// 2^-252 <= |X| < 90112.
-//
-// To avoid branches, we perform the range reduction to full
-// accuracy each time.
-//
-// X - N * (P_1 + P_2 + P_3)
-//
-// where P_1 and P_2 are 32-bit numbers (so multiplication by N
-// is exact) and P_3 is a 53-bit number. Together, these
-// approximate pi well enough for all cases in the restricted
-// range.
-//
-// The main reduction sequence is:
-//
-// y = 32/pi * x
-// N = integer(y)
-// (computed by adding and subtracting off SHIFTER)
-//
-// m_1 = N * P_1
-// m_2 = N * P_2
-// r_1 = x - m_1
-// r = r_1 - m_2
-// (this r can be used for most of the calculation)
-//
-// c_1 = r_1 - r
-// m_3 = N * P_3
-// c_2 = c_1 - m_2
-// c = c_2 - m_3
-//
-// 2. MAIN ALGORITHM
-//
-// The algorithm uses a table lookup based on B = M * pi / 32
-// where M = N mod 64. The stored values are:
-// sigma closest power of 2 to cos(B)
-// C_hl 53-bit cos(B) - sigma
-// S_hi + S_lo 2 * 53-bit sin(B)
-//
-// The computation is organized as follows:
-//
-// sin(B + r + c) = [sin(B) + sigma * r] +
-// r * (cos(B) - sigma) +
-// sin(B) * [cos(r + c) - 1] +
-// cos(B) * [sin(r + c) - r]
-//
-// which is approximately:
-//
-// [S_hi + sigma * r] +
-// C_hl * r +
-// S_lo + S_hi * [(cos(r) - 1) - r * c] +
-// (C_hl + sigma) * [(sin(r) - r) + c]
-//
-// and this is what is actually computed. We separate this sum
-// into four parts:
-//
-// hi + med + pols + corr
-//
-// where
-//
-// hi = S_hi + sigma r
-// med = C_hl * r
-// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
-// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
-//
-// 3. POLYNOMIAL
-//
-// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
-// (sin(r) - r) can be rearranged freely, since it is quite
-// small, so we exploit parallelism to the fullest.
-//
-// psc4 = SC_4 * r_1
-// msc4 = psc4 * r
-// r2 = r * r
-// msc2 = SC_2 * r2
-// r4 = r2 * r2
-// psc3 = SC_3 + msc4
-// psc1 = SC_1 + msc2
-// msc3 = r4 * psc3
-// sincospols = psc1 + msc3
-// pols = sincospols *
-//
-//
-// 4. CORRECTION TERM
-//
-// This is where the "c" component of the range reduction is
-// taken into account; recall that just "r" is used for most of
-// the calculation.
-//
-// -c = m_3 - c_2
-// -d = S_hi * r - (C_hl + sigma)
-// corr = -c * -d + S_lo
-//
-// 5. COMPENSATED SUMMATIONS
-//
-// The two successive compensated summations add up the high
-// and medium parts, leaving just the low parts to add up at
-// the end.
-//
-// rs = sigma * r
-// res_int = S_hi + rs
-// k_0 = S_hi - res_int
-// k_2 = k_0 + rs
-// med = C_hl * r
-// res_hi = res_int + med
-// k_1 = res_int - res_hi
-// k_3 = k_1 + med
-//
-// 6. FINAL SUMMATION
-//
-// We now add up all the small parts:
-//
-// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
-//
-// Now the overall result is just:
-//
-// res_hi + res_lo
-//
-// 7. SMALL ARGUMENTS
-//
-// Inputs with |X| < 2^-252 are treated specially as
-// 1 - |x|.
-//
-// Special cases:
-// cos(NaN) = quiet NaN, and raise invalid exception
-// cos(INF) = NaN and raise invalid exception
-// cos(0) = 1
-//
-/******************************************************************************/
-
-ALIGNED_(8) juint _ONE[] =
-{
- 0x00000000UL, 0x3ff00000UL
-};
-
-void MacroAssembler::fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r8, Register r9, Register r10, Register r11) {
- Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
- Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
- Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
- Label L_2TAG_PACKET_12_0_1, L_2TAG_PACKET_13_0_1, B1_2, B1_3, B1_4, B1_5, start;
-
- assert_different_registers(r8, r9, r10, r11, eax, ecx, edx);
-
- address ONEHALF = (address)_ONEHALF;
- address P_2 = (address)_P_2;
- address SC_4 = (address)_SC_4;
- address Ctable = (address)_Ctable;
- address SC_2 = (address)_SC_2;
- address SC_3 = (address)_SC_3;
- address SC_1 = (address)_SC_1;
- address PI_INV_TABLE = (address)_PI_INV_TABLE;
- address PI_4 = (address)_PI_4;
- address PI32INV = (address)_PI32INV;
- address SIGN_MASK = (address)_SIGN_MASK;
- address P_1 = (address)_P_1;
- address P_3 = (address)_P_3;
- address ONE = (address)_ONE;
- address NEG_ZERO = (address)_NEG_ZERO;
-
- bind(start);
- push(rbx);
- subq(rsp, 16);
- movsd(Address(rsp, 8), xmm0);
-
- bind(B1_2);
- movl(eax, Address(rsp, 12));
- movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
- andl(eax, 2147418112);
- subl(eax, 808452096);
- cmpl(eax, 281346048);
- jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
- mulsd(xmm1, xmm0);
- movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
- movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- addpd(xmm1, xmm5);
- cvttsd2sil(edx, xmm1);
- cvtsi2sdl(xmm1, edx);
- movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
- movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
- mulsd(xmm3, xmm1);
- unpcklpd(xmm1, xmm1);
- addq(rdx, 1865232);
- movdqu(xmm4, xmm0);
- andq(rdx, 63);
- movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
- lea(rax, ExternalAddress(Ctable));
- shlq(rdx, 5);
- addq(rax, rdx);
- mulpd(xmm2, xmm1);
- subsd(xmm0, xmm3);
- mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
- subsd(xmm4, xmm3);
- movq(xmm7, Address(rax, 8));
- unpcklpd(xmm0, xmm0);
- movdqu(xmm3, xmm4);
- subsd(xmm4, xmm2);
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm2);
- movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm2);
- movdqu(xmm2, Address(rax, 0));
- subsd(xmm1, xmm3);
- movq(xmm3, Address(rax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
- mulsd(xmm4, Address(rax, 0));
- addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
- mulpd(xmm5, xmm0);
- movdqu(xmm0, xmm3);
- addsd(xmm3, Address(rax, 8));
- mulpd(xmm1, xmm7);
- movdqu(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movq(xmm5, Address(rax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(rax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm0, xmm5);
- addsd(xmm3, xmm7);
- addsd(xmm0, xmm1);
- addsd(xmm0, xmm3);
- addsd(xmm0, xmm6);
- unpckhpd(xmm6, xmm6);
- addsd(xmm0, xmm6);
- addsd(xmm0, xmm4);
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_0_0_1);
- jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
- pextrw(eax, xmm0, 3);
- andl(eax, 32767);
- pinsrw(xmm0, eax, 3);
- movq(xmm1, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
- subsd(xmm1, xmm0);
- movdqu(xmm0, xmm1);
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_1_0_1);
- pextrw(eax, xmm0, 3);
- andl(eax, 32752);
- cmpl(eax, 32752);
- jcc(Assembler::equal, L_2TAG_PACKET_2_0_1);
- pextrw(ecx, xmm0, 3);
- andl(ecx, 32752);
- subl(ecx, 16224);
- shrl(ecx, 7);
- andl(ecx, 65532);
- lea(r11, ExternalAddress(PI_INV_TABLE));
- addq(rcx, r11);
- movdq(rax, xmm0);
- movl(r10, Address(rcx, 20));
- movl(r8, Address(rcx, 24));
- movl(edx, eax);
- shrq(rax, 21);
- orl(eax, INT_MIN);
- shrl(eax, 11);
- movl(r9, r10);
- imulq(r10, rdx);
- imulq(r9, rax);
- imulq(r8, rax);
- movl(rsi, Address(rcx, 16));
- movl(rdi, Address(rcx, 12));
- movl(r11, r10);
- shrq(r10, 32);
- addq(r9, r10);
- addq(r11, r8);
- movl(r8, r11);
- shrq(r11, 32);
- addq(r9, r11);
- movl(r10, rsi);
- imulq(rsi, rdx);
- imulq(r10, rax);
- movl(r11, rdi);
- imulq(rdi, rdx);
- movl(rbx, rsi);
- shrq(rsi, 32);
- addq(r9, rbx);
- movl(rbx, r9);
- shrq(r9, 32);
- addq(r10, rsi);
- addq(r10, r9);
- shlq(rbx, 32);
- orq(r8, rbx);
- imulq(r11, rax);
- movl(r9, Address(rcx, 8));
- movl(rsi, Address(rcx, 4));
- movl(rbx, rdi);
- shrq(rdi, 32);
- addq(r10, rbx);
- movl(rbx, r10);
- shrq(r10, 32);
- addq(r11, rdi);
- addq(r11, r10);
- movq(rdi, r9);
- imulq(r9, rdx);
- imulq(rdi, rax);
- movl(r10, r9);
- shrq(r9, 32);
- addq(r11, r10);
- movl(r10, r11);
- shrq(r11, 32);
- addq(rdi, r9);
- addq(rdi, r11);
- movq(r9, rsi);
- imulq(rsi, rdx);
- imulq(r9, rax);
- shlq(r10, 32);
- orq(r10, rbx);
- movl(eax, Address(rcx, 0));
- movl(r11, rsi);
- shrq(rsi, 32);
- addq(rdi, r11);
- movl(r11, rdi);
- shrq(rdi, 32);
- addq(r9, rsi);
- addq(r9, rdi);
- imulq(rdx, rax);
- pextrw(rbx, xmm0, 3);
- lea(rdi, ExternalAddress(PI_INV_TABLE));
- subq(rcx, rdi);
- addl(ecx, ecx);
- addl(ecx, ecx);
- addl(ecx, ecx);
- addl(ecx, 19);
- movl(rsi, 32768);
- andl(rsi, rbx);
- shrl(rbx, 4);
- andl(rbx, 2047);
- subl(rbx, 1023);
- subl(ecx, rbx);
- addq(r9, rdx);
- movl(edx, ecx);
- addl(edx, 32);
- cmpl(ecx, 1);
- jcc(Assembler::less, L_2TAG_PACKET_3_0_1);
- negl(ecx);
- addl(ecx, 29);
- shll(r9);
- movl(rdi, r9);
- andl(r9, 536870911);
- testl(r9, 268435456);
- jcc(Assembler::notEqual, L_2TAG_PACKET_4_0_1);
- shrl(r9);
- movl(rbx, 0);
- shlq(r9, 32);
- orq(r9, r11);
-
- bind(L_2TAG_PACKET_5_0_1);
-
- bind(L_2TAG_PACKET_6_0_1);
- cmpq(r9, 0);
- jcc(Assembler::equal, L_2TAG_PACKET_7_0_1);
-
- bind(L_2TAG_PACKET_8_0_1);
- bsrq(r11, r9);
- movl(ecx, 29);
- subl(ecx, r11);
- jcc(Assembler::lessEqual, L_2TAG_PACKET_9_0_1);
- shlq(r9);
- movq(rax, r10);
- shlq(r10);
- addl(edx, ecx);
- negl(ecx);
- addl(ecx, 64);
- shrq(rax);
- shrq(r8);
- orq(r9, rax);
- orq(r10, r8);
-
- bind(L_2TAG_PACKET_10_0_1);
- cvtsi2sdq(xmm0, r9);
- shrq(r10, 1);
- cvtsi2sdq(xmm3, r10);
- xorpd(xmm4, xmm4);
- shll(edx, 4);
- negl(edx);
- addl(edx, 16368);
- orl(edx, rsi);
- xorl(edx, rbx);
- pinsrw(xmm4, edx, 3);
- movq(xmm2, ExternalAddress(PI_4)); //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
- movq(xmm6, ExternalAddress(8 + PI_4)); //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
- xorpd(xmm5, xmm5);
- subl(edx, 1008);
- pinsrw(xmm5, edx, 3);
- mulsd(xmm0, xmm4);
- shll(rsi, 16);
- sarl(rsi, 31);
- mulsd(xmm3, xmm5);
- movdqu(xmm1, xmm0);
- mulsd(xmm0, xmm2);
- shrl(rdi, 29);
- addsd(xmm1, xmm3);
- mulsd(xmm3, xmm2);
- addl(rdi, rsi);
- xorl(rdi, rsi);
- mulsd(xmm6, xmm1);
- movl(eax, rdi);
- addsd(xmm6, xmm3);
- movdqu(xmm2, xmm0);
- addsd(xmm0, xmm6);
- subsd(xmm2, xmm0);
- addsd(xmm6, xmm2);
-
- bind(L_2TAG_PACKET_11_0_1);
- movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
- mulsd(xmm1, xmm0);
- movq(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
- movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
- pand(xmm4, xmm0);
- por(xmm5, xmm4);
- addpd(xmm1, xmm5);
- cvttsd2siq(rdx, xmm1);
- cvtsi2sdq(xmm1, rdx);
- movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
- movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
- mulsd(xmm3, xmm1);
- unpcklpd(xmm1, xmm1);
- shll(eax, 3);
- addl(edx, 1865232);
- movdqu(xmm4, xmm0);
- addl(edx, eax);
- andl(edx, 63);
- movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
- lea(rax, ExternalAddress(Ctable));
- shll(edx, 5);
- addq(rax, rdx);
- mulpd(xmm2, xmm1);
- subsd(xmm0, xmm3);
- mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
- subsd(xmm4, xmm3);
- movq(xmm7, Address(rax, 8));
- unpcklpd(xmm0, xmm0);
- movdqu(xmm3, xmm4);
- subsd(xmm4, xmm2);
- mulpd(xmm5, xmm0);
- subpd(xmm0, xmm2);
- mulsd(xmm7, xmm4);
- subsd(xmm3, xmm4);
- mulpd(xmm5, xmm0);
- mulpd(xmm0, xmm0);
- subsd(xmm3, xmm2);
- movdqu(xmm2, Address(rax, 0));
- subsd(xmm1, xmm3);
- movq(xmm3, Address(rax, 24));
- addsd(xmm2, xmm3);
- subsd(xmm7, xmm2);
- subsd(xmm1, xmm6);
- movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
- mulsd(xmm2, xmm4);
- mulpd(xmm6, xmm0);
- mulsd(xmm3, xmm4);
- mulpd(xmm2, xmm0);
- mulpd(xmm0, xmm0);
- addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
- mulsd(xmm4, Address(rax, 0));
- addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
- mulpd(xmm5, xmm0);
- movdqu(xmm0, xmm3);
- addsd(xmm3, Address(rax, 8));
- mulpd(xmm1, xmm7);
- movdqu(xmm7, xmm4);
- addsd(xmm4, xmm3);
- addpd(xmm6, xmm5);
- movq(xmm5, Address(rax, 8));
- subsd(xmm5, xmm3);
- subsd(xmm3, xmm4);
- addsd(xmm1, Address(rax, 16));
- mulpd(xmm6, xmm2);
- addsd(xmm5, xmm0);
- addsd(xmm3, xmm7);
- addsd(xmm1, xmm5);
- addsd(xmm1, xmm3);
- addsd(xmm1, xmm6);
- unpckhpd(xmm6, xmm6);
- movdqu(xmm0, xmm4);
- addsd(xmm1, xmm6);
- addsd(xmm0, xmm1);
- jmp(B1_4);
-
- bind(L_2TAG_PACKET_7_0_1);
- addl(edx, 64);
- movq(r9, r10);
- movq(r10, r8);
- movl(r8, 0);
- cmpq(r9, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
- addl(edx, 64);
- movq(r9, r10);
- movq(r10, r8);
- cmpq(r9, 0);
- jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
- xorpd(xmm0, xmm0);
- xorpd(xmm6, xmm6);
- jmp(L_2TAG_PACKET_11_0_1);
-
- bind(L_2TAG_PACKET_9_0_1);
- jcc(Assembler::equal, L_2TAG_PACKET_10_0_1);
- negl(ecx);
- shrq(r10);
- movq(rax, r9);
- shrq(r9);
- subl(edx, ecx);
- negl(ecx);
- addl(ecx, 64);
- shlq(rax);
- orq(r10, rax);
- jmp(L_2TAG_PACKET_10_0_1);
- bind(L_2TAG_PACKET_3_0_1);
- negl(ecx);
- shlq(r9, 32);
- orq(r9, r11);
- shlq(r9);
- movq(rdi, r9);
- testl(r9, INT_MIN);
- jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_1);
- shrl(r9);
- movl(rbx, 0);
- shrq(rdi, 3);
- jmp(L_2TAG_PACKET_6_0_1);
-
- bind(L_2TAG_PACKET_4_0_1);
- shrl(r9);
- movl(rbx, 536870912);
- shrl(rbx);
- shlq(r9, 32);
- orq(r9, r11);
- shlq(rbx, 32);
- addl(rdi, 536870912);
- movl(rcx, 0);
- movl(r11, 0);
- subq(rcx, r8);
- sbbq(r11, r10);
- sbbq(rbx, r9);
- movq(r8, rcx);
- movq(r10, r11);
- movq(r9, rbx);
- movl(rbx, 32768);
- jmp(L_2TAG_PACKET_5_0_1);
-
- bind(L_2TAG_PACKET_12_0_1);
- shrl(r9);
- mov64(rbx, 0x100000000);
- shrq(rbx);
- movl(rcx, 0);
- movl(r11, 0);
- subq(rcx, r8);
- sbbq(r11, r10);
- sbbq(rbx, r9);
- movq(r8, rcx);
- movq(r10, r11);
- movq(r9, rbx);
- movl(rbx, 32768);
- shrq(rdi, 3);
- addl(rdi, 536870912);
- jmp(L_2TAG_PACKET_6_0_1);
-
- bind(L_2TAG_PACKET_2_0_1);
- movsd(xmm0, Address(rsp, 8));
- mulsd(xmm0, ExternalAddress(NEG_ZERO)); //0x00000000UL, 0x80000000UL
- movq(Address(rsp, 0), xmm0);
-
- bind(L_2TAG_PACKET_13_0_1);
-
- bind(B1_4);
- addq(rsp, 16);
- pop(rbx);
-}
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
index 7d2c73af358..1a18af590f6 100644
--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
@@ -3399,6 +3399,18 @@ void MacroAssembler::movq(XMMRegister dst, AddressLiteral src) {
}
}
+void MacroAssembler::setvectmask(Register dst, Register src) {
+ Assembler::movl(dst, 1);
+ Assembler::shlxl(dst, dst, src);
+ Assembler::decl(dst);
+ Assembler::kmovdl(k1, dst);
+ Assembler::movl(dst, src);
+}
+
+void MacroAssembler::restorevectmask() {
+ Assembler::knotwl(k1, k0);
+}
+
void MacroAssembler::movdbl(XMMRegister dst, AddressLiteral src) {
if (reachable(src)) {
if (UseXmmLoadAndClearUpper) {
@@ -4320,9 +4332,7 @@ void MacroAssembler::vpcmpeqb(XMMRegister dst, XMMRegister nds, XMMRegister src,
int nds_enc = nds->encoding();
int src_enc = src->encoding();
assert(dst_enc == nds_enc, "");
- if (VM_Version::supports_avxonly() || VM_Version::supports_avx512bw()) {
- Assembler::vpcmpeqb(dst, nds, src, vector_len);
- } else if ((dst_enc < 16) && (src_enc < 16)) {
+ if ((dst_enc < 16) && (src_enc < 16)) {
Assembler::vpcmpeqb(dst, nds, src, vector_len);
} else if (src_enc < 16) {
subptr(rsp, 64);
@@ -4360,9 +4370,7 @@ void MacroAssembler::vpcmpeqw(XMMRegister dst, XMMRegister nds, XMMRegister src,
int nds_enc = nds->encoding();
int src_enc = src->encoding();
assert(dst_enc == nds_enc, "");
- if (VM_Version::supports_avxonly() || VM_Version::supports_avx512bw()) {
- Assembler::vpcmpeqw(dst, nds, src, vector_len);
- } else if ((dst_enc < 16) && (src_enc < 16)) {
+ if ((dst_enc < 16) && (src_enc < 16)) {
Assembler::vpcmpeqw(dst, nds, src, vector_len);
} else if (src_enc < 16) {
subptr(rsp, 64);
@@ -6693,6 +6701,14 @@ void MacroAssembler::restore_cpu_control_state_after_jni() {
#endif // _LP64
}
+void MacroAssembler::load_mirror(Register mirror, Register method) {
+ // get mirror
+ const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+ movptr(mirror, Address(method, Method::const_offset()));
+ movptr(mirror, Address(mirror, ConstMethod::constants_offset()));
+ movptr(mirror, Address(mirror, ConstantPool::pool_holder_offset_in_bytes()));
+ movptr(mirror, Address(mirror, mirror_offset));
+}
void MacroAssembler::load_klass(Register dst, Register src) {
#ifdef _LP64
@@ -7318,7 +7334,7 @@ void MacroAssembler::string_indexofC8(Register str1, Register str2,
decrementl(cnt1); // Shift to next element
cmpl(cnt1, cnt2);
- jccb(Assembler::negative, RET_NOT_FOUND); // Left less then substring
+ jcc(Assembler::negative, RET_NOT_FOUND); // Left less then substring
addptr(result, (1< stride) {
// This code is optimized for the case when whole substring
@@ -7367,7 +7383,7 @@ void MacroAssembler::string_indexofC8(Register str1, Register str2,
bind(MATCH_SUBSTR_HEAD);
pcmpestri(vec, Address(result, 0), mode);
// Reload only string if does not match
- jccb(Assembler::noOverflow, RELOAD_STR); // OF == 0
+ jcc(Assembler::noOverflow, RELOAD_STR); // OF == 0
Label CONT_SCAN_SUBSTR;
// Compare the rest of substring (> 8 chars).
@@ -7625,7 +7641,7 @@ void MacroAssembler::string_indexof(Register str1, Register str2,
addl(cnt1, str1);
decrementl(cnt1); // Shift to next element
cmpl(cnt1, cnt2);
- jccb(Assembler::negative, RET_NOT_FOUND); // Left less then substring
+ jcc(Assembler::negative, RET_NOT_FOUND); // Left less then substring
addptr(result, (1<= 2) {
cmpl(cnt1, stride);
- jccb(Assembler::less, SCAN_TO_CHAR_LOOP);
+ jcc(Assembler::less, SCAN_TO_CHAR_LOOP);
cmpl(cnt1, 2*stride);
- jccb(Assembler::less, SCAN_TO_8_CHAR_INIT);
+ jcc(Assembler::less, SCAN_TO_8_CHAR_INIT);
movdl(vec1, ch);
vpbroadcastw(vec1, vec1);
vpxor(vec2, vec2);
@@ -7791,9 +7807,9 @@ void MacroAssembler::string_indexof_char(Register str1, Register cnt1, Register
bind(SCAN_TO_8_CHAR);
cmpl(cnt1, stride);
if (UseAVX >= 2) {
- jccb(Assembler::less, SCAN_TO_CHAR);
+ jcc(Assembler::less, SCAN_TO_CHAR);
} else {
- jccb(Assembler::less, SCAN_TO_CHAR_LOOP);
+ jcc(Assembler::less, SCAN_TO_CHAR_LOOP);
movdl(vec1, ch);
pshuflw(vec1, vec1, 0x00);
pshufd(vec1, vec1, 0);
@@ -8045,14 +8061,14 @@ void MacroAssembler::string_compare(Register str1, Register str2,
jcc(Assembler::notZero, VECTOR_NOT_EQUAL);
addptr(result, stride2);
subl(cnt2, stride2);
- jccb(Assembler::notZero, COMPARE_WIDE_VECTORS_LOOP);
+ jcc(Assembler::notZero, COMPARE_WIDE_VECTORS_LOOP);
// clean upper bits of YMM registers
vpxor(vec1, vec1);
// compare wide vectors tail
bind(COMPARE_WIDE_TAIL);
testptr(result, result);
- jccb(Assembler::zero, LENGTH_DIFF_LABEL);
+ jcc(Assembler::zero, LENGTH_DIFF_LABEL);
movl(result, stride2);
movl(cnt2, result);
@@ -8076,7 +8092,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
bind(COMPARE_TAIL_LONG);
movl(cnt2, result);
cmpl(cnt2, stride);
- jccb(Assembler::less, COMPARE_SMALL_STR);
+ jcc(Assembler::less, COMPARE_SMALL_STR);
if (ae == StrIntrinsicNode::LL || ae == StrIntrinsicNode::UU) {
movdqu(vec1, Address(str1, 0));
@@ -8086,7 +8102,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
pcmpestri(vec1, Address(str2, 0), pcmpmask);
jcc(Assembler::below, COMPARE_INDEX_CHAR);
subptr(cnt2, stride);
- jccb(Assembler::zero, LENGTH_DIFF_LABEL);
+ jcc(Assembler::zero, LENGTH_DIFF_LABEL);
if (ae == StrIntrinsicNode::LL || ae == StrIntrinsicNode::UU) {
lea(str1, Address(str1, result, scale));
lea(str2, Address(str2, result, scale));
@@ -8109,7 +8125,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
if (ae == StrIntrinsicNode::LL) {
pcmpmask &= ~0x01;
}
- jccb(Assembler::zero, COMPARE_TAIL);
+ jcc(Assembler::zero, COMPARE_TAIL);
if (ae == StrIntrinsicNode::LL || ae == StrIntrinsicNode::UU) {
lea(str1, Address(str1, result, scale));
lea(str2, Address(str2, result, scale));
@@ -8148,7 +8164,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
// compare wide vectors tail
testptr(result, result);
- jccb(Assembler::zero, LENGTH_DIFF_LABEL);
+ jcc(Assembler::zero, LENGTH_DIFF_LABEL);
movl(cnt2, stride);
movl(result, stride);
@@ -8243,10 +8259,19 @@ void MacroAssembler::string_compare(Register str1, Register str2,
// Search for Non-ASCII character (Negative byte value) in a byte array,
// return true if it has any and false otherwise.
+// ..\jdk\src\java.base\share\classes\java\lang\StringCoding.java
+// @HotSpotIntrinsicCandidate
+// private static boolean hasNegatives(byte[] ba, int off, int len) {
+// for (int i = off; i < off + len; i++) {
+// if (ba[i] < 0) {
+// return true;
+// }
+// }
+// return false;
+// }
void MacroAssembler::has_negatives(Register ary1, Register len,
- Register result, Register tmp1,
- XMMRegister vec1, XMMRegister vec2) {
-
+ Register result, Register tmp1,
+ XMMRegister vec1, XMMRegister vec2) {
// rsi: byte array
// rcx: len
// rax: result
@@ -8259,79 +8284,161 @@ void MacroAssembler::has_negatives(Register ary1, Register len,
testl(len, len);
jcc(Assembler::zero, FALSE_LABEL);
- movl(result, len); // copy
+ if ((UseAVX > 2) && // AVX512
+ VM_Version::supports_avx512vlbw() &&
+ VM_Version::supports_bmi2()) {
- if (UseAVX >= 2 && UseSSE >= 2) {
- // With AVX2, use 32-byte vector compare
- Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+ set_vector_masking(); // opening of the stub context for programming mask registers
- // Compare 32-byte vectors
- andl(result, 0x0000001f); // tail count (in bytes)
- andl(len, 0xffffffe0); // vector count (in bytes)
- jccb(Assembler::zero, COMPARE_TAIL);
+ Label test_64_loop, test_tail;
+ Register tmp3_aliased = len;
+
+ movl(tmp1, len);
+ vpxor(vec2, vec2, vec2, Assembler::AVX_512bit);
+
+ andl(tmp1, 64 - 1); // tail count (in chars) 0x3F
+ andl(len, ~(64 - 1)); // vector count (in chars)
+ jccb(Assembler::zero, test_tail);
lea(ary1, Address(ary1, len, Address::times_1));
negptr(len);
- movl(tmp1, 0x80808080); // create mask to test for Unicode chars in vector
- movdl(vec2, tmp1);
- vpbroadcastd(vec2, vec2);
+ bind(test_64_loop);
+ // Check whether our 64 elements of size byte contain negatives
+ evpcmpgtb(k2, vec2, Address(ary1, len, Address::times_1), Assembler::AVX_512bit);
+ kortestql(k2, k2);
+ jcc(Assembler::notZero, TRUE_LABEL);
- bind(COMPARE_WIDE_VECTORS);
- vmovdqu(vec1, Address(ary1, len, Address::times_1));
- vptest(vec1, vec2);
- jccb(Assembler::notZero, TRUE_LABEL);
- addptr(len, 32);
- jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+ addptr(len, 64);
+ jccb(Assembler::notZero, test_64_loop);
- testl(result, result);
- jccb(Assembler::zero, FALSE_LABEL);
- vmovdqu(vec1, Address(ary1, result, Address::times_1, -32));
- vptest(vec1, vec2);
- jccb(Assembler::notZero, TRUE_LABEL);
- jmpb(FALSE_LABEL);
+ bind(test_tail);
+ // bail out when there is nothing to be done
+ testl(tmp1, -1);
+ jcc(Assembler::zero, FALSE_LABEL);
- bind(COMPARE_TAIL); // len is zero
- movl(len, result);
- // Fallthru to tail compare
- } else if (UseSSE42Intrinsics) {
- assert(UseSSE >= 4, "SSE4 must be for SSE4.2 intrinsics to be available");
- // With SSE4.2, use double quad vector compare
- Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+ // Save k1
+ kmovql(k3, k1);
- // Compare 16-byte vectors
- andl(result, 0x0000000f); // tail count (in bytes)
- andl(len, 0xfffffff0); // vector count (in bytes)
- jccb(Assembler::zero, COMPARE_TAIL);
+ // ~(~0 << len) applied up to two times (for 32-bit scenario)
+#ifdef _LP64
+ mov64(tmp3_aliased, 0xFFFFFFFFFFFFFFFF);
+ shlxq(tmp3_aliased, tmp3_aliased, tmp1);
+ notq(tmp3_aliased);
+ kmovql(k1, tmp3_aliased);
+#else
+ Label k_init;
+ jmp(k_init);
- lea(ary1, Address(ary1, len, Address::times_1));
- negptr(len);
+ // We could not read 64-bits from a general purpose register thus we move
+ // data required to compose 64 1's to the instruction stream
+ // We emit 64 byte wide series of elements from 0..63 which later on would
+ // be used as a compare targets with tail count contained in tmp1 register.
+ // Result would be a k1 register having tmp1 consecutive number or 1
+ // counting from least significant bit.
+ address tmp = pc();
+ emit_int64(0x0706050403020100);
+ emit_int64(0x0F0E0D0C0B0A0908);
+ emit_int64(0x1716151413121110);
+ emit_int64(0x1F1E1D1C1B1A1918);
+ emit_int64(0x2726252423222120);
+ emit_int64(0x2F2E2D2C2B2A2928);
+ emit_int64(0x3736353433323130);
+ emit_int64(0x3F3E3D3C3B3A3938);
- movl(tmp1, 0x80808080);
- movdl(vec2, tmp1);
- pshufd(vec2, vec2, 0);
+ bind(k_init);
+ lea(len, InternalAddress(tmp));
+ // create mask to test for negative byte inside a vector
+ evpbroadcastb(vec1, tmp1, Assembler::AVX_512bit);
+ evpcmpgtb(k1, vec1, Address(len, 0), Assembler::AVX_512bit);
- bind(COMPARE_WIDE_VECTORS);
- movdqu(vec1, Address(ary1, len, Address::times_1));
- ptest(vec1, vec2);
- jccb(Assembler::notZero, TRUE_LABEL);
- addptr(len, 16);
- jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+#endif
+ evpcmpgtb(k2, k1, vec2, Address(ary1, 0), Assembler::AVX_512bit);
+ ktestq(k2, k1);
+ // Restore k1
+ kmovql(k1, k3);
+ jcc(Assembler::notZero, TRUE_LABEL);
- testl(result, result);
- jccb(Assembler::zero, FALSE_LABEL);
+ jmp(FALSE_LABEL);
- movdqu(vec1, Address(ary1, result, Address::times_1, -16));
- ptest(vec1, vec2);
- jccb(Assembler::notZero, TRUE_LABEL);
- jmpb(FALSE_LABEL);
-
- bind(COMPARE_TAIL); // len is zero
- movl(len, result);
- // Fallthru to tail compare
+ clear_vector_masking(); // closing of the stub context for programming mask registers
}
+ else {
+ movl(result, len); // copy
+ if (UseAVX == 2 && UseSSE >= 2) {
+ // With AVX2, use 32-byte vector compare
+ Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+
+ // Compare 32-byte vectors
+ andl(result, 0x0000001f); // tail count (in bytes)
+ andl(len, 0xffffffe0); // vector count (in bytes)
+ jccb(Assembler::zero, COMPARE_TAIL);
+
+ lea(ary1, Address(ary1, len, Address::times_1));
+ negptr(len);
+
+ movl(tmp1, 0x80808080); // create mask to test for Unicode chars in vector
+ movdl(vec2, tmp1);
+ vpbroadcastd(vec2, vec2);
+
+ bind(COMPARE_WIDE_VECTORS);
+ vmovdqu(vec1, Address(ary1, len, Address::times_1));
+ vptest(vec1, vec2);
+ jccb(Assembler::notZero, TRUE_LABEL);
+ addptr(len, 32);
+ jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+
+ testl(result, result);
+ jccb(Assembler::zero, FALSE_LABEL);
+
+ vmovdqu(vec1, Address(ary1, result, Address::times_1, -32));
+ vptest(vec1, vec2);
+ jccb(Assembler::notZero, TRUE_LABEL);
+ jmpb(FALSE_LABEL);
+
+ bind(COMPARE_TAIL); // len is zero
+ movl(len, result);
+ // Fallthru to tail compare
+ }
+ else if (UseSSE42Intrinsics) {
+ assert(UseSSE >= 4, "SSE4 must be for SSE4.2 intrinsics to be available");
+ // With SSE4.2, use double quad vector compare
+ Label COMPARE_WIDE_VECTORS, COMPARE_TAIL;
+
+ // Compare 16-byte vectors
+ andl(result, 0x0000000f); // tail count (in bytes)
+ andl(len, 0xfffffff0); // vector count (in bytes)
+ jccb(Assembler::zero, COMPARE_TAIL);
+
+ lea(ary1, Address(ary1, len, Address::times_1));
+ negptr(len);
+
+ movl(tmp1, 0x80808080);
+ movdl(vec2, tmp1);
+ pshufd(vec2, vec2, 0);
+
+ bind(COMPARE_WIDE_VECTORS);
+ movdqu(vec1, Address(ary1, len, Address::times_1));
+ ptest(vec1, vec2);
+ jccb(Assembler::notZero, TRUE_LABEL);
+ addptr(len, 16);
+ jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
+
+ testl(result, result);
+ jccb(Assembler::zero, FALSE_LABEL);
+
+ movdqu(vec1, Address(ary1, result, Address::times_1, -16));
+ ptest(vec1, vec2);
+ jccb(Assembler::notZero, TRUE_LABEL);
+ jmpb(FALSE_LABEL);
+
+ bind(COMPARE_TAIL); // len is zero
+ movl(len, result);
+ // Fallthru to tail compare
+ }
+ }
// Compare 4-byte vectors
andl(len, 0xfffffffc); // vector count (in bytes)
jccb(Assembler::zero, COMPARE_CHAR);
@@ -8379,7 +8486,6 @@ void MacroAssembler::has_negatives(Register ary1, Register len,
vpxor(vec2, vec2);
}
}
-
// Compare char[] or byte[] arrays aligned to 4 bytes or substrings.
void MacroAssembler::arrays_equals(bool is_array_equ, Register ary1, Register ary2,
Register limit, Register result, Register chr,
@@ -8482,12 +8588,12 @@ void MacroAssembler::arrays_equals(bool is_array_equ, Register ary1, Register ar
vpxor(vec1, vec2);
vptest(vec1, vec1);
- jccb(Assembler::notZero, FALSE_LABEL);
+ jcc(Assembler::notZero, FALSE_LABEL);
addptr(limit, 32);
jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
testl(result, result);
- jccb(Assembler::zero, TRUE_LABEL);
+ jcc(Assembler::zero, TRUE_LABEL);
vmovdqu(vec1, Address(ary1, result, Address::times_1, -32));
vmovdqu(vec2, Address(ary2, result, Address::times_1, -32));
@@ -8508,7 +8614,7 @@ void MacroAssembler::arrays_equals(bool is_array_equ, Register ary1, Register ar
// Compare 16-byte vectors
andl(result, 0x0000000f); // tail count (in bytes)
andl(limit, 0xfffffff0); // vector count (in bytes)
- jccb(Assembler::zero, COMPARE_TAIL);
+ jcc(Assembler::zero, COMPARE_TAIL);
lea(ary1, Address(ary1, limit, Address::times_1));
lea(ary2, Address(ary2, limit, Address::times_1));
@@ -8520,12 +8626,12 @@ void MacroAssembler::arrays_equals(bool is_array_equ, Register ary1, Register ar
pxor(vec1, vec2);
ptest(vec1, vec1);
- jccb(Assembler::notZero, FALSE_LABEL);
+ jcc(Assembler::notZero, FALSE_LABEL);
addptr(limit, 16);
jcc(Assembler::notZero, COMPARE_WIDE_VECTORS);
testl(result, result);
- jccb(Assembler::zero, TRUE_LABEL);
+ jcc(Assembler::zero, TRUE_LABEL);
movdqu(vec1, Address(ary1, result, Address::times_1, -16));
movdqu(vec2, Address(ary2, result, Address::times_1, -16));
@@ -8825,10 +8931,23 @@ void MacroAssembler::generate_fill(BasicType t, bool aligned,
}
// encode char[] to byte[] in ISO_8859_1
+ //@HotSpotIntrinsicCandidate
+ //private static int implEncodeISOArray(byte[] sa, int sp,
+ //byte[] da, int dp, int len) {
+ // int i = 0;
+ // for (; i < len; i++) {
+ // char c = StringUTF16.getChar(sa, sp++);
+ // if (c > '\u00FF')
+ // break;
+ // da[dp++] = (byte)c;
+ // }
+ // return i;
+ //}
void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
- XMMRegister tmp1Reg, XMMRegister tmp2Reg,
- XMMRegister tmp3Reg, XMMRegister tmp4Reg,
- Register tmp5, Register result) {
+ XMMRegister tmp1Reg, XMMRegister tmp2Reg,
+ XMMRegister tmp3Reg, XMMRegister tmp4Reg,
+ Register tmp5, Register result) {
+
// rsi: src
// rdi: dst
// rdx: len
@@ -8843,6 +8962,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
// check for zero length
testl(len, len);
jcc(Assembler::zero, L_done);
+
movl(result, len);
// Setup pointers
@@ -8860,7 +8980,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
movl(tmp5, 0xff00ff00); // create mask to test for Unicode chars in vector
movdl(tmp1Reg, tmp5);
vpbroadcastd(tmp1Reg, tmp1Reg);
- jmpb(L_chars_32_check);
+ jmp(L_chars_32_check);
bind(L_copy_32_chars);
vmovdqu(tmp3Reg, Address(src, len, Address::times_2, -64));
@@ -8874,7 +8994,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
bind(L_chars_32_check);
addptr(len, 32);
- jccb(Assembler::lessEqual, L_copy_32_chars);
+ jcc(Assembler::lessEqual, L_copy_32_chars);
bind(L_copy_32_chars_exit);
subptr(len, 16);
@@ -8891,7 +9011,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
if (UseAVX >= 2) {
vmovdqu(tmp2Reg, Address(src, len, Address::times_2, -32));
vptest(tmp2Reg, tmp1Reg);
- jccb(Assembler::notZero, L_copy_16_chars_exit);
+ jcc(Assembler::notZero, L_copy_16_chars_exit);
vpackuswb(tmp2Reg, tmp2Reg, tmp1Reg, /* vector_len */ 1);
vpermq(tmp3Reg, tmp2Reg, 0xD8, /* vector_len */ 1);
} else {
@@ -8913,7 +9033,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
bind(L_chars_16_check);
addptr(len, 16);
- jccb(Assembler::lessEqual, L_copy_16_chars);
+ jcc(Assembler::lessEqual, L_copy_16_chars);
bind(L_copy_16_chars_exit);
if (UseAVX >= 2) {
@@ -8951,6 +9071,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst, Register len,
bind(L_copy_1_char_exit);
addptr(result, len); // len is negative count of not processed elements
+
bind(L_done);
}
@@ -9417,6 +9538,7 @@ void MacroAssembler::multiply_to_len(Register x, Register xlen, Register y, Regi
void MacroAssembler::vectorized_mismatch(Register obja, Register objb, Register length, Register log2_array_indxscale,
Register result, Register tmp1, Register tmp2, XMMRegister rymm0, XMMRegister rymm1, XMMRegister rymm2){
assert(UseSSE42Intrinsics, "SSE4.2 must be enabled.");
+ Label VECTOR64_LOOP, VECTOR64_TAIL, VECTOR64_NOT_EQUAL, VECTOR32_TAIL;
Label VECTOR32_LOOP, VECTOR16_LOOP, VECTOR8_LOOP, VECTOR4_LOOP;
Label VECTOR16_TAIL, VECTOR8_TAIL, VECTOR4_TAIL;
Label VECTOR32_NOT_EQUAL, VECTOR16_NOT_EQUAL, VECTOR8_NOT_EQUAL, VECTOR4_NOT_EQUAL;
@@ -9429,11 +9551,62 @@ void MacroAssembler::vectorized_mismatch(Register obja, Register objb, Register
shlq(length);
xorq(result, result);
+ if ((UseAVX > 2) &&
+ VM_Version::supports_avx512vlbw()) {
+ set_vector_masking(); // opening of the stub context for programming mask registers
+ cmpq(length, 64);
+ jcc(Assembler::less, VECTOR32_TAIL);
+ movq(tmp1, length);
+ andq(tmp1, 0x3F); // tail count
+ andq(length, ~(0x3F)); //vector count
+
+ bind(VECTOR64_LOOP);
+ // AVX512 code to compare 64 byte vectors.
+ evmovdqub(rymm0, Address(obja, result), Assembler::AVX_512bit);
+ evpcmpeqb(k7, rymm0, Address(objb, result), Assembler::AVX_512bit);
+ kortestql(k7, k7);
+ jcc(Assembler::aboveEqual, VECTOR64_NOT_EQUAL); // mismatch
+ addq(result, 64);
+ subq(length, 64);
+ jccb(Assembler::notZero, VECTOR64_LOOP);
+
+ //bind(VECTOR64_TAIL);
+ testq(tmp1, tmp1);
+ jcc(Assembler::zero, SAME_TILL_END);
+
+ bind(VECTOR64_TAIL);
+ // AVX512 code to compare upto 63 byte vectors.
+ // Save k1
+ kmovql(k3, k1);
+ mov64(tmp2, 0xFFFFFFFFFFFFFFFF);
+ shlxq(tmp2, tmp2, tmp1);
+ notq(tmp2);
+ kmovql(k1, tmp2);
+
+ evmovdqub(rymm0, k1, Address(obja, result), Assembler::AVX_512bit);
+ evpcmpeqb(k7, k1, rymm0, Address(objb, result), Assembler::AVX_512bit);
+
+ ktestql(k7, k1);
+ // Restore k1
+ kmovql(k1, k3);
+ jcc(Assembler::below, SAME_TILL_END); // not mismatch
+
+ bind(VECTOR64_NOT_EQUAL);
+ kmovql(tmp1, k7);
+ notq(tmp1);
+ tzcntq(tmp1, tmp1);
+ addq(result, tmp1);
+ shrq(result);
+ jmp(DONE);
+ bind(VECTOR32_TAIL);
+ clear_vector_masking(); // closing of the stub context for programming mask registers
+ }
+
cmpq(length, 8);
jcc(Assembler::equal, VECTOR8_LOOP);
jcc(Assembler::less, VECTOR4_TAIL);
- if (UseAVX >= 2){
+ if (UseAVX >= 2) {
cmpq(length, 16);
jcc(Assembler::equal, VECTOR16_LOOP);
@@ -9541,7 +9714,7 @@ void MacroAssembler::vectorized_mismatch(Register obja, Register objb, Register
jccb(Assembler::notZero, BYTES_NOT_EQUAL);//mismatch found
jmpb(SAME_TILL_END);
- if (UseAVX >= 2){
+ if (UseAVX >= 2) {
bind(VECTOR32_NOT_EQUAL);
vpcmpeqb(rymm2, rymm2, rymm2, Assembler::AVX_256bit);
vpcmpeqb(rymm0, rymm0, rymm1, Assembler::AVX_256bit);
@@ -9554,7 +9727,7 @@ void MacroAssembler::vectorized_mismatch(Register obja, Register objb, Register
}
bind(VECTOR16_NOT_EQUAL);
- if (UseAVX >= 2){
+ if (UseAVX >= 2) {
vpcmpeqb(rymm2, rymm2, rymm2, Assembler::AVX_128bit);
vpcmpeqb(rymm0, rymm0, rymm1, Assembler::AVX_128bit);
pxor(rymm0, rymm2);
@@ -9585,7 +9758,6 @@ void MacroAssembler::vectorized_mismatch(Register obja, Register objb, Register
bind(DONE);
}
-
//Helper functions for square_to_len()
/**
@@ -10771,13 +10943,24 @@ void MacroAssembler::crc32c_ipl_alg2_alt2(Register in_out, Register in1, Registe
#undef BIND
#undef BLOCK_COMMENT
-
// Compress char[] array to byte[].
+// ..\jdk\src\java.base\share\classes\java\lang\StringUTF16.java
+// @HotSpotIntrinsicCandidate
+// private static int compress(char[] src, int srcOff, byte[] dst, int dstOff, int len) {
+// for (int i = 0; i < len; i++) {
+// int c = src[srcOff++];
+// if (c >>> 8 != 0) {
+// return 0;
+// }
+// dst[dstOff++] = (byte)c;
+// }
+// return len;
+// }
void MacroAssembler::char_array_compress(Register src, Register dst, Register len,
- XMMRegister tmp1Reg, XMMRegister tmp2Reg,
- XMMRegister tmp3Reg, XMMRegister tmp4Reg,
- Register tmp5, Register result) {
- Label copy_chars_loop, return_length, return_zero, done;
+ XMMRegister tmp1Reg, XMMRegister tmp2Reg,
+ XMMRegister tmp3Reg, XMMRegister tmp4Reg,
+ Register tmp5, Register result) {
+ Label copy_chars_loop, return_length, return_zero, done, below_threshold;
// rsi: src
// rdi: dst
@@ -10794,11 +10977,141 @@ void MacroAssembler::char_array_compress(Register src, Register dst, Register le
// save length for return
push(len);
+ if ((UseAVX > 2) && // AVX512
+ VM_Version::supports_avx512vlbw() &&
+ VM_Version::supports_bmi2()) {
+
+ set_vector_masking(); // opening of the stub context for programming mask registers
+
+ Label copy_32_loop, copy_loop_tail, copy_just_portion_of_candidates;
+
+ // alignement
+ Label post_alignement;
+
+ // if length of the string is less than 16, handle it in an old fashioned
+ // way
+ testl(len, -32);
+ jcc(Assembler::zero, below_threshold);
+
+ // First check whether a character is compressable ( <= 0xFF).
+ // Create mask to test for Unicode chars inside zmm vector
+ movl(result, 0x00FF);
+ evpbroadcastw(tmp2Reg, result, Assembler::AVX_512bit);
+
+ testl(len, -64);
+ jcc(Assembler::zero, post_alignement);
+
+ // Save k1
+ kmovql(k3, k1);
+
+ movl(tmp5, dst);
+ andl(tmp5, (64 - 1));
+ negl(tmp5);
+ andl(tmp5, (64 - 1));
+
+ // bail out when there is nothing to be done
+ testl(tmp5, 0xFFFFFFFF);
+ jcc(Assembler::zero, post_alignement);
+
+ // ~(~0 << len), where len is the # of remaining elements to process
+ movl(result, 0xFFFFFFFF);
+ shlxl(result, result, tmp5);
+ notl(result);
+
+ kmovdl(k1, result);
+
+ evmovdquw(tmp1Reg, k1, Address(src, 0), Assembler::AVX_512bit);
+ evpcmpuw(k2, k1, tmp1Reg, tmp2Reg, Assembler::le, Assembler::AVX_512bit);
+ ktestd(k2, k1);
+ jcc(Assembler::carryClear, copy_just_portion_of_candidates);
+
+ evpmovwb(Address(dst, 0), k1, tmp1Reg, Assembler::AVX_512bit);
+
+ addptr(src, tmp5);
+ addptr(src, tmp5);
+ addptr(dst, tmp5);
+ subl(len, tmp5);
+
+ bind(post_alignement);
+ // end of alignement
+
+ movl(tmp5, len);
+ andl(tmp5, (32 - 1)); // tail count (in chars)
+ andl(len, ~(32 - 1)); // vector count (in chars)
+ jcc(Assembler::zero, copy_loop_tail);
+
+ lea(src, Address(src, len, Address::times_2));
+ lea(dst, Address(dst, len, Address::times_1));
+ negptr(len);
+
+ bind(copy_32_loop);
+ evmovdquw(tmp1Reg, Address(src, len, Address::times_2), Assembler::AVX_512bit);
+ evpcmpuw(k2, tmp1Reg, tmp2Reg, Assembler::le, Assembler::AVX_512bit);
+ kortestdl(k2, k2);
+ jcc(Assembler::carryClear, copy_just_portion_of_candidates);
+
+ // All elements in current processed chunk are valid candidates for
+ // compression. Write a truncated byte elements to the memory.
+ evpmovwb(Address(dst, len, Address::times_1), tmp1Reg, Assembler::AVX_512bit);
+ addptr(len, 32);
+ jcc(Assembler::notZero, copy_32_loop);
+
+ bind(copy_loop_tail);
+ // bail out when there is nothing to be done
+ testl(tmp5, 0xFFFFFFFF);
+ jcc(Assembler::zero, return_length);
+
+ // Save k1
+ kmovql(k3, k1);
+
+ movl(len, tmp5);
+
+ // ~(~0 << len), where len is the # of remaining elements to process
+ movl(result, 0xFFFFFFFF);
+ shlxl(result, result, len);
+ notl(result);
+
+ kmovdl(k1, result);
+
+ evmovdquw(tmp1Reg, k1, Address(src, 0), Assembler::AVX_512bit);
+ evpcmpuw(k2, k1, tmp1Reg, tmp2Reg, Assembler::le, Assembler::AVX_512bit);
+ ktestd(k2, k1);
+ jcc(Assembler::carryClear, copy_just_portion_of_candidates);
+
+ evpmovwb(Address(dst, 0), k1, tmp1Reg, Assembler::AVX_512bit);
+ // Restore k1
+ kmovql(k1, k3);
+
+ jmp(return_length);
+
+ bind(copy_just_portion_of_candidates);
+ kmovdl(tmp5, k2);
+ tzcntl(tmp5, tmp5);
+
+ // ~(~0 << tmp5), where tmp5 is a number of elements in an array from the
+ // result to the first element larger than 0xFF
+ movl(result, 0xFFFFFFFF);
+ shlxl(result, result, tmp5);
+ notl(result);
+
+ kmovdl(k1, result);
+
+ evpmovwb(Address(dst, 0), k1, tmp1Reg, Assembler::AVX_512bit);
+ // Restore k1
+ kmovql(k1, k3);
+
+ jmp(return_zero);
+
+ clear_vector_masking(); // closing of the stub context for programming mask registers
+ }
if (UseSSE42Intrinsics) {
assert(UseSSE >= 4, "SSE4 must be enabled for SSE4.2 intrinsics to be available");
Label copy_32_loop, copy_16, copy_tail;
+ bind(below_threshold);
+
movl(result, len);
+
movl(tmp5, 0xff00ff00); // create mask to test for Unicode chars in vectors
// vectored compression
@@ -10880,10 +11193,16 @@ void MacroAssembler::char_array_compress(Register src, Register dst, Register le
}
// Inflate byte[] array to char[].
+// ..\jdk\src\java.base\share\classes\java\lang\StringLatin1.java
+// @HotSpotIntrinsicCandidate
+// private static void inflate(byte[] src, int srcOff, char[] dst, int dstOff, int len) {
+// for (int i = 0; i < len; i++) {
+// dst[dstOff++] = (char)(src[srcOff++] & 0xff);
+// }
+// }
void MacroAssembler::byte_array_inflate(Register src, Register dst, Register len,
- XMMRegister tmp1, Register tmp2) {
- Label copy_chars_loop, done;
-
+ XMMRegister tmp1, Register tmp2) {
+ Label copy_chars_loop, done, below_threshold;
// rsi: src
// rdi: dst
// rdx: len
@@ -10894,20 +11213,109 @@ void MacroAssembler::byte_array_inflate(Register src, Register dst, Register len
// rdx holds length
assert_different_registers(src, dst, len, tmp2);
+ if ((UseAVX > 2) && // AVX512
+ VM_Version::supports_avx512vlbw() &&
+ VM_Version::supports_bmi2()) {
+
+ set_vector_masking(); // opening of the stub context for programming mask registers
+
+ Label copy_32_loop, copy_tail;
+ Register tmp3_aliased = len;
+
+ // if length of the string is less than 16, handle it in an old fashioned
+ // way
+ testl(len, -16);
+ jcc(Assembler::zero, below_threshold);
+
+ // In order to use only one arithmetic operation for the main loop we use
+ // this pre-calculation
+ movl(tmp2, len);
+ andl(tmp2, (32 - 1)); // tail count (in chars), 32 element wide loop
+ andl(len, -32); // vector count
+ jccb(Assembler::zero, copy_tail);
+
+ lea(src, Address(src, len, Address::times_1));
+ lea(dst, Address(dst, len, Address::times_2));
+ negptr(len);
+
+
+ // inflate 32 chars per iter
+ bind(copy_32_loop);
+ vpmovzxbw(tmp1, Address(src, len, Address::times_1), Assembler::AVX_512bit);
+ evmovdquw(Address(dst, len, Address::times_2), tmp1, Assembler::AVX_512bit);
+ addptr(len, 32);
+ jcc(Assembler::notZero, copy_32_loop);
+
+ bind(copy_tail);
+ // bail out when there is nothing to be done
+ testl(tmp2, -1); // we don't destroy the contents of tmp2 here
+ jcc(Assembler::zero, done);
+
+ // Save k1
+ kmovql(k2, k1);
+
+ // ~(~0 << length), where length is the # of remaining elements to process
+ movl(tmp3_aliased, -1);
+ shlxl(tmp3_aliased, tmp3_aliased, tmp2);
+ notl(tmp3_aliased);
+ kmovdl(k1, tmp3_aliased);
+ evpmovzxbw(tmp1, k1, Address(src, 0), Assembler::AVX_512bit);
+ evmovdquw(Address(dst, 0), k1, tmp1, Assembler::AVX_512bit);
+
+ // Restore k1
+ kmovql(k1, k2);
+ jmp(done);
+
+ clear_vector_masking(); // closing of the stub context for programming mask registers
+ }
if (UseSSE42Intrinsics) {
assert(UseSSE >= 4, "SSE4 must be enabled for SSE4.2 intrinsics to be available");
- Label copy_8_loop, copy_bytes, copy_tail;
+ Label copy_16_loop, copy_8_loop, copy_bytes, copy_new_tail, copy_tail;
movl(tmp2, len);
- andl(tmp2, 0x00000007); // tail count (in chars)
- andl(len, 0xfffffff8); // vector count (in chars)
- jccb(Assembler::zero, copy_tail);
+
+ if (UseAVX > 1) {
+ andl(tmp2, (16 - 1));
+ andl(len, -16);
+ jccb(Assembler::zero, copy_new_tail);
+ } else {
+ andl(tmp2, 0x00000007); // tail count (in chars)
+ andl(len, 0xfffffff8); // vector count (in chars)
+ jccb(Assembler::zero, copy_tail);
+ }
// vectored inflation
lea(src, Address(src, len, Address::times_1));
lea(dst, Address(dst, len, Address::times_2));
negptr(len);
+ if (UseAVX > 1) {
+ bind(copy_16_loop);
+ vpmovzxbw(tmp1, Address(src, len, Address::times_1), Assembler::AVX_256bit);
+ vmovdqu(Address(dst, len, Address::times_2), tmp1);
+ addptr(len, 16);
+ jcc(Assembler::notZero, copy_16_loop);
+
+ bind(below_threshold);
+ bind(copy_new_tail);
+ if (UseAVX > 2) {
+ movl(tmp2, len);
+ }
+ else {
+ movl(len, tmp2);
+ }
+ andl(tmp2, 0x00000007);
+ andl(len, 0xFFFFFFF8);
+ jccb(Assembler::zero, copy_tail);
+
+ pmovzxbw(tmp1, Address(src, 0));
+ movdqu(Address(dst, 0), tmp1);
+ addptr(src, 8);
+ addptr(dst, 2 * 8);
+
+ jmp(copy_tail, true);
+ }
+
// inflate 8 chars per iter
bind(copy_8_loop);
pmovzxbw(tmp1, Address(src, len, Address::times_1)); // unpack to 8 words
@@ -10946,7 +11354,6 @@ void MacroAssembler::byte_array_inflate(Register src, Register dst, Register len
bind(done);
}
-
Assembler::Condition MacroAssembler::negate_condition(Assembler::Condition cond) {
switch (cond) {
// Note some conditions are synonyms for others
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp
index 836f8c4fb45..48975683350 100644
--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp
@@ -156,6 +156,10 @@ class MacroAssembler: public Assembler {
void incrementq(Register reg, int value = 1);
void incrementq(Address dst, int value = 1);
+ // special instructions for EVEX
+ void setvectmask(Register dst, Register src);
+ void restorevectmask();
+
// Support optimal SSE move instructions.
void movflt(XMMRegister dst, XMMRegister src) {
if (UseXmmRegToRegMoveAll) { movaps(dst, src); return; }
@@ -319,6 +323,8 @@ class MacroAssembler: public Assembler {
void movbool(Address dst, Register src);
void testbool(Register dst);
+ void load_mirror(Register mirror, Register method);
+
// oop manipulations
void load_klass(Register dst, Register src);
void store_klass(Register dst, Register src);
@@ -841,7 +847,7 @@ class MacroAssembler: public Assembler {
void call(Label& L, relocInfo::relocType rtype);
void call(Register entry);
- // NOTE: this call tranfers to the effective address of entry NOT
+ // NOTE: this call transfers to the effective address of entry NOT
// the address contained by entry. This is because this is more natural
// for jumps/calls.
void call(AddressLiteral entry);
@@ -902,6 +908,45 @@ class MacroAssembler: public Assembler {
void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
void ldmxcsr(AddressLiteral src);
+#ifdef _LP64
+ private:
+ void sha256_AVX2_one_round_compute(
+ Register reg_old_h,
+ Register reg_a,
+ Register reg_b,
+ Register reg_c,
+ Register reg_d,
+ Register reg_e,
+ Register reg_f,
+ Register reg_g,
+ Register reg_h,
+ int iter);
+ void sha256_AVX2_four_rounds_compute_first(int start);
+ void sha256_AVX2_four_rounds_compute_last(int start);
+ void sha256_AVX2_one_round_and_sched(
+ XMMRegister xmm_0, /* == ymm4 on 0, 1, 2, 3 iterations, then rotate 4 registers left on 4, 8, 12 iterations */
+ XMMRegister xmm_1, /* ymm5 */ /* full cycle is 16 iterations */
+ XMMRegister xmm_2, /* ymm6 */
+ XMMRegister xmm_3, /* ymm7 */
+ Register reg_a, /* == eax on 0 iteration, then rotate 8 register right on each next iteration */
+ Register reg_b, /* ebx */ /* full cycle is 8 iterations */
+ Register reg_c, /* edi */
+ Register reg_d, /* esi */
+ Register reg_e, /* r8d */
+ Register reg_f, /* r9d */
+ Register reg_g, /* r10d */
+ Register reg_h, /* r11d */
+ int iter);
+
+ void addm(int disp, Register r1, Register r2);
+
+ public:
+ void sha256_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
+ XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
+ Register buf, Register state, Register ofs, Register limit, Register rsp,
+ bool multi_block, XMMRegister shuf_mask);
+#endif
+
void fast_sha1(XMMRegister abcd, XMMRegister e0, XMMRegister e1, XMMRegister msg0,
XMMRegister msg1, XMMRegister msg2, XMMRegister msg3, XMMRegister shuf_mask,
Register buf, Register state, Register ofs, Register limit, Register rsp,
@@ -928,6 +973,10 @@ class MacroAssembler: public Assembler {
XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
Register rax, Register rcx, Register rdx, Register tmp1, Register tmp2);
+ void fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
+ XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
+ Register rax, Register rcx, Register rdx, Register r11);
+
void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4,
XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx,
Register rdx, Register tmp1, Register tmp2, Register tmp3, Register tmp4);
@@ -941,11 +990,19 @@ class MacroAssembler: public Assembler {
XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
Register rax, Register rcx, Register rdx, Register tmp1,
Register tmp2, Register tmp3, Register tmp4);
+ void fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
+ XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
+ Register rax, Register rcx, Register rdx, Register tmp1,
+ Register tmp2, Register tmp3, Register tmp4);
#else
void fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
Register rax, Register rcx, Register rdx, Register tmp1);
+ void fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
+ XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
+ Register rax, Register rcx, Register rdx, Register tmp);
+
void fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4,
XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register rax, Register rcx,
Register rdx, Register tmp);
@@ -964,6 +1021,14 @@ class MacroAssembler: public Assembler {
void libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx,
Register esi, Register edi, Register ebp, Register esp);
+
+ void libm_tancot_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx,
+ Register edx, Register ebx, Register esi, Register edi,
+ Register ebp, Register esp);
+
+ void fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3,
+ XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
+ Register rax, Register rcx, Register rdx, Register tmp);
#endif
void increase_precision();
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_cos.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_cos.cpp
new file mode 100644
index 00000000000..1ebed3523ab
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_cos.cpp
@@ -0,0 +1,889 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - COS()
+// ---------------------
+//
+// 1. RANGE REDUCTION
+//
+// We perform an initial range reduction from X to r with
+//
+// X =~= N * pi/32 + r
+//
+// so that |r| <= pi/64 + epsilon. We restrict inputs to those
+// where |N| <= 932560. Beyond this, the range reduction is
+// insufficiently accurate. For extremely small inputs,
+// denormalization can occur internally, impacting performance.
+// This means that the main path is actually only taken for
+// 2^-252 <= |X| < 90112.
+//
+// To avoid branches, we perform the range reduction to full
+// accuracy each time.
+//
+// X - N * (P_1 + P_2 + P_3)
+//
+// where P_1 and P_2 are 32-bit numbers (so multiplication by N
+// is exact) and P_3 is a 53-bit number. Together, these
+// approximate pi well enough for all cases in the restricted
+// range.
+//
+// The main reduction sequence is:
+//
+// y = 32/pi * x
+// N = integer(y)
+// (computed by adding and subtracting off SHIFTER)
+//
+// m_1 = N * P_1
+// m_2 = N * P_2
+// r_1 = x - m_1
+// r = r_1 - m_2
+// (this r can be used for most of the calculation)
+//
+// c_1 = r_1 - r
+// m_3 = N * P_3
+// c_2 = c_1 - m_2
+// c = c_2 - m_3
+//
+// 2. MAIN ALGORITHM
+//
+// The algorithm uses a table lookup based on B = M * pi / 32
+// where M = N mod 64. The stored values are:
+// sigma closest power of 2 to cos(B)
+// C_hl 53-bit cos(B) - sigma
+// S_hi + S_lo 2 * 53-bit sin(B)
+//
+// The computation is organized as follows:
+//
+// sin(B + r + c) = [sin(B) + sigma * r] +
+// r * (cos(B) - sigma) +
+// sin(B) * [cos(r + c) - 1] +
+// cos(B) * [sin(r + c) - r]
+//
+// which is approximately:
+//
+// [S_hi + sigma * r] +
+// C_hl * r +
+// S_lo + S_hi * [(cos(r) - 1) - r * c] +
+// (C_hl + sigma) * [(sin(r) - r) + c]
+//
+// and this is what is actually computed. We separate this sum
+// into four parts:
+//
+// hi + med + pols + corr
+//
+// where
+//
+// hi = S_hi + sigma r
+// med = C_hl * r
+// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+// 3. POLYNOMIAL
+//
+// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+// (sin(r) - r) can be rearranged freely, since it is quite
+// small, so we exploit parallelism to the fullest.
+//
+// psc4 = SC_4 * r_1
+// msc4 = psc4 * r
+// r2 = r * r
+// msc2 = SC_2 * r2
+// r4 = r2 * r2
+// psc3 = SC_3 + msc4
+// psc1 = SC_1 + msc2
+// msc3 = r4 * psc3
+// sincospols = psc1 + msc3
+// pols = sincospols *
+//
+//
+// 4. CORRECTION TERM
+//
+// This is where the "c" component of the range reduction is
+// taken into account; recall that just "r" is used for most of
+// the calculation.
+//
+// -c = m_3 - c_2
+// -d = S_hi * r - (C_hl + sigma)
+// corr = -c * -d + S_lo
+//
+// 5. COMPENSATED SUMMATIONS
+//
+// The two successive compensated summations add up the high
+// and medium parts, leaving just the low parts to add up at
+// the end.
+//
+// rs = sigma * r
+// res_int = S_hi + rs
+// k_0 = S_hi - res_int
+// k_2 = k_0 + rs
+// med = C_hl * r
+// res_hi = res_int + med
+// k_1 = res_int - res_hi
+// k_3 = k_1 + med
+//
+// 6. FINAL SUMMATION
+//
+// We now add up all the small parts:
+//
+// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+// Now the overall result is just:
+//
+// res_hi + res_lo
+//
+// 7. SMALL ARGUMENTS
+//
+// Inputs with |X| < 2^-252 are treated specially as
+// 1 - |x|.
+//
+// Special cases:
+// cos(NaN) = quiet NaN, and raise invalid exception
+// cos(INF) = NaN and raise invalid exception
+// cos(0) = 1
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(8) juint _ONE[] =
+{
+ 0x00000000UL, 0x3ff00000UL
+};
+void MacroAssembler::fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r8, Register r9, Register r10, Register r11) {
+
+ Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
+ Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
+ Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
+ Label L_2TAG_PACKET_12_0_1, L_2TAG_PACKET_13_0_1, B1_2, B1_3, B1_4, B1_5, start;
+
+ assert_different_registers(r8, r9, r10, r11, eax, ecx, edx);
+
+ address ONEHALF = StubRoutines::x86::_ONEHALF_addr();
+ address P_2 = StubRoutines::x86::_P_2_addr();
+ address SC_4 = StubRoutines::x86::_SC_4_addr();
+ address Ctable = StubRoutines::x86::_Ctable_addr();
+ address SC_2 = StubRoutines::x86::_SC_2_addr();
+ address SC_3 = StubRoutines::x86::_SC_3_addr();
+ address SC_1 = StubRoutines::x86::_SC_1_addr();
+ address PI_INV_TABLE = StubRoutines::x86::_PI_INV_TABLE_addr();
+ address PI_4 = (address)StubRoutines::x86::_PI_4_addr();
+ address PI32INV = (address)StubRoutines::x86::_PI32INV_addr();
+ address SIGN_MASK = (address)StubRoutines::x86::_SIGN_MASK_addr();
+ address P_1 = (address)StubRoutines::x86::_P_1_addr();
+ address P_3 = (address)StubRoutines::x86::_P_3_addr();
+ address ONE = (address)_ONE;
+ address NEG_ZERO = (address)StubRoutines::x86::_NEG_ZERO_addr();
+
+ bind(start);
+ push(rbx);
+ subq(rsp, 16);
+ movsd(Address(rsp, 8), xmm0);
+
+ bind(B1_2);
+ movl(eax, Address(rsp, 12));
+ movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
+ andl(eax, 2147418112);
+ subl(eax, 808452096);
+ cmpl(eax, 281346048);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
+ mulsd(xmm1, xmm0);
+ movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ cvttsd2sil(edx, xmm1);
+ cvtsi2sdl(xmm1, edx);
+ movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
+ movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
+ mulsd(xmm3, xmm1);
+ unpcklpd(xmm1, xmm1);
+ addq(rdx, 1865232);
+ movdqu(xmm4, xmm0);
+ andq(rdx, 63);
+ movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
+ lea(rax, ExternalAddress(Ctable));
+ shlq(rdx, 5);
+ addq(rax, rdx);
+ mulpd(xmm2, xmm1);
+ subsd(xmm0, xmm3);
+ mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
+ subsd(xmm4, xmm3);
+ movq(xmm7, Address(rax, 8));
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm3, xmm4);
+ subsd(xmm4, xmm2);
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm2);
+ movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm2);
+ movdqu(xmm2, Address(rax, 0));
+ subsd(xmm1, xmm3);
+ movq(xmm3, Address(rax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
+ mulsd(xmm4, Address(rax, 0));
+ addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
+ mulpd(xmm5, xmm0);
+ movdqu(xmm0, xmm3);
+ addsd(xmm3, Address(rax, 8));
+ mulpd(xmm1, xmm7);
+ movdqu(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movq(xmm5, Address(rax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(rax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm0, xmm5);
+ addsd(xmm3, xmm7);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm3);
+ addsd(xmm0, xmm6);
+ unpckhpd(xmm6, xmm6);
+ addsd(xmm0, xmm6);
+ addsd(xmm0, xmm4);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_0_0_1);
+ jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ pinsrw(xmm0, eax, 3);
+ movq(xmm1, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
+ subsd(xmm1, xmm0);
+ movdqu(xmm0, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_1_0_1);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_2_0_1);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ subl(ecx, 16224);
+ shrl(ecx, 7);
+ andl(ecx, 65532);
+ lea(r11, ExternalAddress(PI_INV_TABLE));
+ addq(rcx, r11);
+ movdq(rax, xmm0);
+ movl(r10, Address(rcx, 20));
+ movl(r8, Address(rcx, 24));
+ movl(edx, eax);
+ shrq(rax, 21);
+ orl(eax, INT_MIN);
+ shrl(eax, 11);
+ movl(r9, r10);
+ imulq(r10, rdx);
+ imulq(r9, rax);
+ imulq(r8, rax);
+ movl(rsi, Address(rcx, 16));
+ movl(rdi, Address(rcx, 12));
+ movl(r11, r10);
+ shrq(r10, 32);
+ addq(r9, r10);
+ addq(r11, r8);
+ movl(r8, r11);
+ shrq(r11, 32);
+ addq(r9, r11);
+ movl(r10, rsi);
+ imulq(rsi, rdx);
+ imulq(r10, rax);
+ movl(r11, rdi);
+ imulq(rdi, rdx);
+ movl(rbx, rsi);
+ shrq(rsi, 32);
+ addq(r9, rbx);
+ movl(rbx, r9);
+ shrq(r9, 32);
+ addq(r10, rsi);
+ addq(r10, r9);
+ shlq(rbx, 32);
+ orq(r8, rbx);
+ imulq(r11, rax);
+ movl(r9, Address(rcx, 8));
+ movl(rsi, Address(rcx, 4));
+ movl(rbx, rdi);
+ shrq(rdi, 32);
+ addq(r10, rbx);
+ movl(rbx, r10);
+ shrq(r10, 32);
+ addq(r11, rdi);
+ addq(r11, r10);
+ movq(rdi, r9);
+ imulq(r9, rdx);
+ imulq(rdi, rax);
+ movl(r10, r9);
+ shrq(r9, 32);
+ addq(r11, r10);
+ movl(r10, r11);
+ shrq(r11, 32);
+ addq(rdi, r9);
+ addq(rdi, r11);
+ movq(r9, rsi);
+ imulq(rsi, rdx);
+ imulq(r9, rax);
+ shlq(r10, 32);
+ orq(r10, rbx);
+ movl(eax, Address(rcx, 0));
+ movl(r11, rsi);
+ shrq(rsi, 32);
+ addq(rdi, r11);
+ movl(r11, rdi);
+ shrq(rdi, 32);
+ addq(r9, rsi);
+ addq(r9, rdi);
+ imulq(rdx, rax);
+ pextrw(rbx, xmm0, 3);
+ lea(rdi, ExternalAddress(PI_INV_TABLE));
+ subq(rcx, rdi);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, 19);
+ movl(rsi, 32768);
+ andl(rsi, rbx);
+ shrl(rbx, 4);
+ andl(rbx, 2047);
+ subl(rbx, 1023);
+ subl(ecx, rbx);
+ addq(r9, rdx);
+ movl(edx, ecx);
+ addl(edx, 32);
+ cmpl(ecx, 1);
+ jcc(Assembler::less, L_2TAG_PACKET_3_0_1);
+ negl(ecx);
+ addl(ecx, 29);
+ shll(r9);
+ movl(rdi, r9);
+ andl(r9, 536870911);
+ testl(r9, 268435456);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_4_0_1);
+ shrl(r9);
+ movl(rbx, 0);
+ shlq(r9, 32);
+ orq(r9, r11);
+
+ bind(L_2TAG_PACKET_5_0_1);
+
+ bind(L_2TAG_PACKET_6_0_1);
+ cmpq(r9, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_1);
+
+ bind(L_2TAG_PACKET_8_0_1);
+ bsrq(r11, r9);
+ movl(ecx, 29);
+ subl(ecx, r11);
+ jcc(Assembler::lessEqual, L_2TAG_PACKET_9_0_1);
+ shlq(r9);
+ movq(rax, r10);
+ shlq(r10);
+ addl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shrq(rax);
+ shrq(r8);
+ orq(r9, rax);
+ orq(r10, r8);
+
+ bind(L_2TAG_PACKET_10_0_1);
+ cvtsi2sdq(xmm0, r9);
+ shrq(r10, 1);
+ cvtsi2sdq(xmm3, r10);
+ xorpd(xmm4, xmm4);
+ shll(edx, 4);
+ negl(edx);
+ addl(edx, 16368);
+ orl(edx, rsi);
+ xorl(edx, rbx);
+ pinsrw(xmm4, edx, 3);
+ movq(xmm2, ExternalAddress(PI_4)); //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
+ movq(xmm6, ExternalAddress(8 + PI_4)); //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
+ xorpd(xmm5, xmm5);
+ subl(edx, 1008);
+ pinsrw(xmm5, edx, 3);
+ mulsd(xmm0, xmm4);
+ shll(rsi, 16);
+ sarl(rsi, 31);
+ mulsd(xmm3, xmm5);
+ movdqu(xmm1, xmm0);
+ mulsd(xmm0, xmm2);
+ shrl(rdi, 29);
+ addsd(xmm1, xmm3);
+ mulsd(xmm3, xmm2);
+ addl(rdi, rsi);
+ xorl(rdi, rsi);
+ mulsd(xmm6, xmm1);
+ movl(eax, rdi);
+ addsd(xmm6, xmm3);
+ movdqu(xmm2, xmm0);
+ addsd(xmm0, xmm6);
+ subsd(xmm2, xmm0);
+ addsd(xmm6, xmm2);
+
+ bind(L_2TAG_PACKET_11_0_1);
+ movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
+ mulsd(xmm1, xmm0);
+ movq(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ cvttsd2siq(rdx, xmm1);
+ cvtsi2sdq(xmm1, rdx);
+ movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
+ movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
+ mulsd(xmm3, xmm1);
+ unpcklpd(xmm1, xmm1);
+ shll(eax, 3);
+ addl(edx, 1865232);
+ movdqu(xmm4, xmm0);
+ addl(edx, eax);
+ andl(edx, 63);
+ movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
+ lea(rax, ExternalAddress(Ctable));
+ shll(edx, 5);
+ addq(rax, rdx);
+ mulpd(xmm2, xmm1);
+ subsd(xmm0, xmm3);
+ mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
+ subsd(xmm4, xmm3);
+ movq(xmm7, Address(rax, 8));
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm3, xmm4);
+ subsd(xmm4, xmm2);
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm2);
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm2);
+ movdqu(xmm2, Address(rax, 0));
+ subsd(xmm1, xmm3);
+ movq(xmm3, Address(rax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ subsd(xmm1, xmm6);
+ movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
+ mulsd(xmm4, Address(rax, 0));
+ addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
+ mulpd(xmm5, xmm0);
+ movdqu(xmm0, xmm3);
+ addsd(xmm3, Address(rax, 8));
+ mulpd(xmm1, xmm7);
+ movdqu(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movq(xmm5, Address(rax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(rax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm5, xmm0);
+ addsd(xmm3, xmm7);
+ addsd(xmm1, xmm5);
+ addsd(xmm1, xmm3);
+ addsd(xmm1, xmm6);
+ unpckhpd(xmm6, xmm6);
+ movdqu(xmm0, xmm4);
+ addsd(xmm1, xmm6);
+ addsd(xmm0, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_7_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ movl(r8, 0);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_8_0_1);
+ xorpd(xmm0, xmm0);
+ xorpd(xmm6, xmm6);
+ jmp(L_2TAG_PACKET_11_0_1);
+
+ bind(L_2TAG_PACKET_9_0_1);
+ jcc(Assembler::equal, L_2TAG_PACKET_10_0_1);
+ negl(ecx);
+ shrq(r10);
+ movq(rax, r9);
+ shrq(r9);
+ subl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shlq(rax);
+ orq(r10, rax);
+ jmp(L_2TAG_PACKET_10_0_1);
+ bind(L_2TAG_PACKET_3_0_1);
+ negl(ecx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(r9);
+ movq(rdi, r9);
+ testl(r9, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_1);
+ shrl(r9);
+ movl(rbx, 0);
+ shrq(rdi, 3);
+ jmp(L_2TAG_PACKET_6_0_1);
+
+ bind(L_2TAG_PACKET_4_0_1);
+ shrl(r9);
+ movl(rbx, 536870912);
+ shrl(rbx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(rbx, 32);
+ addl(rdi, 536870912);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(rbx, 32768);
+ jmp(L_2TAG_PACKET_5_0_1);
+
+ bind(L_2TAG_PACKET_12_0_1);
+ shrl(r9);
+ mov64(rbx, 0x100000000);
+ shrq(rbx);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(rbx, 32768);
+ shrq(rdi, 3);
+ addl(rdi, 536870912);
+ jmp(L_2TAG_PACKET_6_0_1);
+
+ bind(L_2TAG_PACKET_2_0_1);
+ movsd(xmm0, Address(rsp, 8));
+ mulsd(xmm0, ExternalAddress(NEG_ZERO)); //0x00000000UL, 0x80000000UL
+ movq(Address(rsp, 0), xmm0);
+
+ bind(L_2TAG_PACKET_13_0_1);
+
+ bind(B1_4);
+ addq(rsp, 16);
+ pop(rbx);
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+
+ALIGNED_(16) juint _static_const_table_cos[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
+ 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
+ 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
+ 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
+ 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
+ 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
+ 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
+ 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
+ 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
+ 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
+ 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
+ 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
+ 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
+ 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
+ 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
+ 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
+ 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
+ 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
+ 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
+ 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
+ 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
+ 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
+ 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
+ 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
+ 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
+ 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
+ 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
+ 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
+ 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
+ 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
+ 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
+ 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
+ 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
+ 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
+ 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
+ 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
+ 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
+ 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
+ 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
+ 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
+ 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
+ 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
+ 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
+ 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
+ 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
+ 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
+ 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
+ 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
+ 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
+ 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
+ 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
+ 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
+ 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
+ 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
+ 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
+ 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
+ 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
+ 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
+ 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
+ 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
+ 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
+ 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
+ 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
+ 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
+ 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
+ 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
+ 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
+ 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
+ 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
+ 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
+ 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
+ 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
+ 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
+ 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
+ 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0x3ff00000UL, 0x55555555UL, 0xbfc55555UL, 0x00000000UL,
+ 0xbfe00000UL, 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL,
+ 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL, 0xa556c734UL,
+ 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL, 0x1a600000UL, 0x3d90b461UL,
+ 0x1a600000UL, 0x3d90b461UL, 0x54400000UL, 0x3fb921fbUL, 0x00000000UL,
+ 0x00000000UL, 0x2e037073UL, 0x3b63198aUL, 0x00000000UL, 0x00000000UL,
+ 0x6dc9c883UL, 0x40245f30UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x43380000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+};
+//registers,
+// input: (rbp + 8)
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, rbx (tmp)
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_cos(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+
+ address static_const_table_cos = (address)_static_const_table_cos;
+
+ bind(start);
+ subl(rsp, 120);
+ movl(Address(rsp, 56), tmp);
+ lea(tmp, ExternalAddress(static_const_table_cos));
+ movsd(xmm0, Address(rsp, 128));
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ subl(eax, 12336);
+ cmpl(eax, 4293);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_2);
+ movsd(xmm1, Address(tmp, 2160));
+ mulsd(xmm1, xmm0);
+ movdqu(xmm5, Address(tmp, 2240));
+ movsd(xmm4, Address(tmp, 2224));
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ movsd(xmm3, Address(tmp, 2128));
+ movdqu(xmm2, Address(tmp, 2112));
+ addpd(xmm1, xmm5);
+ cvttsd2sil(edx, xmm1);
+ cvtsi2sdl(xmm1, edx);
+ mulsd(xmm3, xmm1);
+ unpcklpd(xmm1, xmm1);
+ addl(edx, 1865232);
+ movdqu(xmm4, xmm0);
+ andl(edx, 63);
+ movdqu(xmm5, Address(tmp, 2096));
+ lea(eax, Address(tmp, 0));
+ shll(edx, 5);
+ addl(eax, edx);
+ mulpd(xmm2, xmm1);
+ subsd(xmm0, xmm3);
+ mulsd(xmm1, Address(tmp, 2144));
+ subsd(xmm4, xmm3);
+ movsd(xmm7, Address(eax, 8));
+ unpcklpd(xmm0, xmm0);
+ movapd(xmm3, xmm4);
+ subsd(xmm4, xmm2);
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm2);
+ movdqu(xmm6, Address(tmp, 2064));
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm2);
+ movdqu(xmm2, Address(eax, 0));
+ subsd(xmm1, xmm3);
+ movsd(xmm3, Address(eax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, Address(tmp, 2080));
+ mulsd(xmm4, Address(eax, 0));
+ addpd(xmm6, Address(tmp, 2048));
+ mulpd(xmm5, xmm0);
+ movapd(xmm0, xmm3);
+ addsd(xmm3, Address(eax, 8));
+ mulpd(xmm1, xmm7);
+ movapd(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movsd(xmm5, Address(eax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(eax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm5, xmm0);
+ addsd(xmm3, xmm7);
+ addsd(xmm1, xmm5);
+ addsd(xmm1, xmm3);
+ addsd(xmm1, xmm6);
+ unpckhpd(xmm6, xmm6);
+ addsd(xmm1, xmm6);
+ addsd(xmm4, xmm1);
+ movsd(Address(rsp, 0), xmm4);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ pinsrw(xmm0, eax, 3);
+ movsd(xmm1, Address(tmp, 2192));
+ subsd(xmm1, xmm0);
+ movsd(Address(rsp, 0), xmm1);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movl(eax, Address(rsp, 132));
+ andl(eax, 2146435072);
+ cmpl(eax, 2146435072);
+ jcc(Assembler::equal, L_2TAG_PACKET_3_0_2);
+ subl(rsp, 32);
+ movsd(Address(rsp, 0), xmm0);
+ lea(eax, Address(rsp, 40));
+ movl(Address(rsp, 8), eax);
+ movl(eax, 1);
+ movl(Address(rsp, 12), eax);
+ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_sin_cos_huge())));
+ addl(rsp, 32);
+ fld_d(Address(rsp, 8));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ fld_d(Address(rsp, 128));
+ fmul_d(Address(tmp, 2208));
+
+ bind(L_2TAG_PACKET_1_0_2);
+ movl(tmp, Address(rsp, 56));
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_exp.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_exp.cpp
new file mode 100644
index 00000000000..faea7b9434b
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_exp.cpp
@@ -0,0 +1,674 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - EXP()
+// ---------------------
+//
+// Description:
+// Let K = 64 (table size).
+// x x/log(2) n
+// e = 2 = 2 * T[j] * (1 + P(y))
+// where
+// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
+// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
+// j/K
+// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
+//
+// P(y) is a minimax polynomial approximation of exp(x)-1
+// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
+//
+// To avoid problems with arithmetic overflow and underflow,
+// n n1 n2
+// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
+// where BIAS is a value of exponent bias.
+//
+// Special cases:
+// exp(NaN) = NaN
+// exp(+INF) = +INF
+// exp(-INF) = 0
+// exp(x) = 1 for subnormals
+// for finite argument, only exp(0)=1 is exact
+// For IEEE double
+// if x > 709.782712893383973096 then exp(x) overflow
+// if x < -745.133219101941108420 then exp(x) underflow
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _cv[] =
+{
+ 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL, 0xfefa0000UL,
+ 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL, 0x3d1cf79aUL,
+ 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL,
+ 0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL,
+ 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
+};
+
+ALIGNED_(16) juint _shifter[] =
+{
+ 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
+};
+
+ALIGNED_(16) juint _mmask[] =
+{
+ 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint _bias[] =
+{
+ 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint _Tbl_addr[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
+ 0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
+ 0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
+ 0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
+ 0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
+ 0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
+ 0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
+ 0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
+ 0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
+ 0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
+ 0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
+ 0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
+ 0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
+ 0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
+ 0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
+ 0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
+ 0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
+ 0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
+ 0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
+ 0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
+ 0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
+ 0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
+ 0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
+ 0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
+ 0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
+ 0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
+ 0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
+ 0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
+ 0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
+ 0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
+ 0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
+ 0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
+ 0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
+ 0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
+ 0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
+ 0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
+ 0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
+ 0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
+ 0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
+ 0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
+ 0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
+ 0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
+ 0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
+ 0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
+ 0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
+ 0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
+ 0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
+ 0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
+ 0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
+ 0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
+ 0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
+ 0x000fa7c1UL
+};
+
+ALIGNED_(16) juint _ALLONES[] =
+{
+ 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
+};
+
+ALIGNED_(16) juint _ebias[] =
+{
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
+};
+
+ALIGNED_(4) juint _XMAX[] =
+{
+ 0xffffffffUL, 0x7fefffffUL
+};
+
+ALIGNED_(4) juint _XMIN[] =
+{
+ 0x00000000UL, 0x00100000UL
+};
+
+ALIGNED_(4) juint _INF[] =
+{
+ 0x00000000UL, 0x7ff00000UL
+};
+
+ALIGNED_(4) juint _ZERO[] =
+{
+ 0x00000000UL, 0x00000000UL
+};
+
+ALIGNED_(4) juint _ONE_val[] =
+{
+ 0x00000000UL, 0x3ff00000UL
+};
+
+
+// Registers:
+// input: xmm0
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, tmp - r11
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+ jmp(start);
+ address cv = (address)_cv;
+ address Shifter = (address)_shifter;
+ address mmask = (address)_mmask;
+ address bias = (address)_bias;
+ address Tbl_addr = (address)_Tbl_addr;
+ address ALLONES = (address)_ALLONES;
+ address ebias = (address)_ebias;
+ address XMAX = (address)_XMAX;
+ address XMIN = (address)_XMIN;
+ address INF = (address)_INF;
+ address ZERO = (address)_ZERO;
+ address ONE_val = (address)_ONE_val;
+
+ bind(start);
+ subq(rsp, 24);
+ movsd(Address(rsp, 8), xmm0);
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm1, ExternalAddress(cv)); // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
+ movdqu(xmm6, ExternalAddress(Shifter)); // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
+ movdqu(xmm2, ExternalAddress(16 + cv)); // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
+ movdqu(xmm3, ExternalAddress(32 + cv)); // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ movl(edx, 16527);
+ subl(edx, eax);
+ subl(eax, 15504);
+ orl(edx, eax);
+ cmpl(edx, INT_MIN);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+ mulpd(xmm1, xmm0);
+ addpd(xmm1, xmm6);
+ movapd(xmm7, xmm1);
+ subpd(xmm1, xmm6);
+ mulpd(xmm2, xmm1);
+ movdqu(xmm4, ExternalAddress(64 + cv)); // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
+ mulpd(xmm3, xmm1);
+ movdqu(xmm5, ExternalAddress(80 + cv)); // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
+ subpd(xmm0, xmm2);
+ movdl(eax, xmm7);
+ movl(ecx, eax);
+ andl(ecx, 63);
+ shll(ecx, 4);
+ sarl(eax, 6);
+ movl(edx, eax);
+ movdqu(xmm6, ExternalAddress(mmask)); // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
+ pand(xmm7, xmm6);
+ movdqu(xmm6, ExternalAddress(bias)); // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
+ paddq(xmm7, xmm6);
+ psllq(xmm7, 46);
+ subpd(xmm0, xmm3);
+ lea(tmp, ExternalAddress(Tbl_addr));
+ movdqu(xmm2, Address(ecx, tmp));
+ mulpd(xmm4, xmm0);
+ movapd(xmm6, xmm0);
+ movapd(xmm1, xmm0);
+ mulpd(xmm6, xmm6);
+ mulpd(xmm0, xmm6);
+ addpd(xmm5, xmm4);
+ mulsd(xmm0, xmm6);
+ mulpd(xmm6, ExternalAddress(48 + cv)); // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
+ addsd(xmm1, xmm2);
+ unpckhpd(xmm2, xmm2);
+ mulpd(xmm0, xmm5);
+ addsd(xmm1, xmm0);
+ por(xmm2, xmm7);
+ unpckhpd(xmm0, xmm0);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm6);
+ addl(edx, 894);
+ cmpl(edx, 1916);
+ jcc(Assembler::above, L_2TAG_PACKET_1_0_2);
+ mulsd(xmm0, xmm2);
+ addsd(xmm0, xmm2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ xorpd(xmm3, xmm3);
+ movdqu(xmm4, ExternalAddress(ALLONES)); // 0xffffffffUL, 0xffffffffUL, 0xffffffffUL, 0xffffffffUL
+ movl(edx, -1022);
+ subl(edx, eax);
+ movdl(xmm5, edx);
+ psllq(xmm4, xmm5);
+ movl(ecx, eax);
+ sarl(eax, 1);
+ pinsrw(xmm3, eax, 3);
+ movdqu(xmm6, ExternalAddress(ebias)); // 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3ff00000UL
+ psllq(xmm3, 4);
+ psubd(xmm2, xmm3);
+ mulsd(xmm0, xmm2);
+ cmpl(edx, 52);
+ jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
+ pand(xmm4, xmm2);
+ paddd(xmm3, xmm6);
+ subsd(xmm2, xmm4);
+ addsd(xmm0, xmm2);
+ cmpl(ecx, 1023);
+ jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32768);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
+ movapd(xmm6, xmm0);
+ addsd(xmm0, xmm4);
+ mulsd(xmm0, xmm3);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ cmpl(ecx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_5_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ mulsd(xmm6, xmm3);
+ mulsd(xmm4, xmm3);
+ movdqu(xmm0, xmm6);
+ pxor(xmm6, xmm4);
+ psrad(xmm6, 31);
+ pshufd(xmm6, xmm6, 85);
+ psllq(xmm0, 1);
+ psrlq(xmm0, 1);
+ pxor(xmm0, xmm6);
+ psrlq(xmm6, 63);
+ paddq(xmm0, xmm6);
+ paddq(xmm0, xmm4);
+ movl(Address(rsp, 0), 15);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ addsd(xmm0, xmm4);
+ mulsd(xmm0, xmm3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ addsd(xmm0, xmm4);
+ mulsd(xmm0, xmm3);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ cmpl(ecx, 32752);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ paddd(xmm3, xmm6);
+ addpd(xmm0, xmm2);
+ mulsd(xmm0, xmm3);
+ movl(Address(rsp, 0), 15);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ cmpl(eax, 2146435072);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_9_0_2);
+ movl(eax, Address(rsp, 12));
+ cmpl(eax, INT_MIN);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_10_0_2);
+ movsd(xmm0, ExternalAddress(XMAX)); // 0xffffffffUL, 0x7fefffffUL
+ mulsd(xmm0, xmm0);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ movl(Address(rsp, 0), 14);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movsd(xmm0, ExternalAddress(XMIN)); // 0x00000000UL, 0x00100000UL
+ mulsd(xmm0, xmm0);
+ movl(Address(rsp, 0), 15);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movl(edx, Address(rsp, 8));
+ cmpl(eax, 2146435072);
+ jcc(Assembler::above, L_2TAG_PACKET_11_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
+ movl(eax, Address(rsp, 12));
+ cmpl(eax, 2146435072);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_12_0_2);
+ movsd(xmm0, ExternalAddress(INF)); // 0x00000000UL, 0x7ff00000UL
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_12_0_2);
+ movsd(xmm0, ExternalAddress(ZERO)); // 0x00000000UL, 0x00000000UL
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_11_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ addsd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movl(eax, Address(rsp, 12));
+ andl(eax, 2147483647);
+ cmpl(eax, 1083179008);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_8_0_2);
+ movsd(Address(rsp, 8), xmm0);
+ addsd(xmm0, ExternalAddress(ONE_val)); // 0x00000000UL, 0x3ff00000UL
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ movq(Address(rsp, 16), xmm0);
+
+ bind(B1_3);
+ movq(xmm0, Address(rsp, 16));
+
+ bind(B1_5);
+ addq(rsp, 24);
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _static_const_table[] =
+{
+ 0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL, 0xffffffc0UL,
+ 0x00000000UL, 0xffffffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL,
+ 0x0000ffc0UL, 0x00000000UL, 0x00000000UL, 0x43380000UL, 0x00000000UL,
+ 0x43380000UL, 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL,
+ 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL, 0xbc9e3b3aUL,
+ 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xfffffffeUL, 0x3fdfffffUL,
+ 0xfffffffeUL, 0x3fdfffffUL, 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL,
+ 0x3fa55555UL, 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0e03754dUL,
+ 0x3cad7bbfUL, 0x3e778060UL, 0x00002c9aUL, 0x3567f613UL, 0x3c8cd252UL,
+ 0xd3158574UL, 0x000059b0UL, 0x61e6c861UL, 0x3c60f74eUL, 0x18759bc8UL,
+ 0x00008745UL, 0x5d837b6cUL, 0x3c979aa6UL, 0x6cf9890fUL, 0x0000b558UL,
+ 0x702f9cd1UL, 0x3c3ebe3dUL, 0x32d3d1a2UL, 0x0000e3ecUL, 0x1e63bcd8UL,
+ 0x3ca3516eUL, 0xd0125b50UL, 0x00011301UL, 0x26f0387bUL, 0x3ca4c554UL,
+ 0xaea92ddfUL, 0x0001429aUL, 0x62523fb6UL, 0x3ca95153UL, 0x3c7d517aUL,
+ 0x000172b8UL, 0x3f1353bfUL, 0x3c8b898cUL, 0xeb6fcb75UL, 0x0001a35bUL,
+ 0x3e3a2f5fUL, 0x3c9aecf7UL, 0x3168b9aaUL, 0x0001d487UL, 0x44a6c38dUL,
+ 0x3c8a6f41UL, 0x88628cd6UL, 0x0002063bUL, 0xe3a8a894UL, 0x3c968efdUL,
+ 0x6e756238UL, 0x0002387aUL, 0x981fe7f2UL, 0x3c80472bUL, 0x65e27cddUL,
+ 0x00026b45UL, 0x6d09ab31UL, 0x3c82f7e1UL, 0xf51fdee1UL, 0x00029e9dUL,
+ 0x720c0ab3UL, 0x3c8b3782UL, 0xa6e4030bUL, 0x0002d285UL, 0x4db0abb6UL,
+ 0x3c834d75UL, 0x0a31b715UL, 0x000306feUL, 0x5dd3f84aUL, 0x3c8fdd39UL,
+ 0xb26416ffUL, 0x00033c08UL, 0xcc187d29UL, 0x3ca12f8cUL, 0x373aa9caUL,
+ 0x000371a7UL, 0x738b5e8bUL, 0x3ca7d229UL, 0x34e59ff6UL, 0x0003a7dbUL,
+ 0xa72a4c6dUL, 0x3c859f48UL, 0x4c123422UL, 0x0003dea6UL, 0x259d9205UL,
+ 0x3ca8b846UL, 0x21f72e29UL, 0x0004160aUL, 0x60c2ac12UL, 0x3c4363edUL,
+ 0x6061892dUL, 0x00044e08UL, 0xdaa10379UL, 0x3c6ecce1UL, 0xb5c13cd0UL,
+ 0x000486a2UL, 0xbb7aafb0UL, 0x3c7690ceUL, 0xd5362a27UL, 0x0004bfdaUL,
+ 0x9b282a09UL, 0x3ca083ccUL, 0x769d2ca6UL, 0x0004f9b2UL, 0xc1aae707UL,
+ 0x3ca509b0UL, 0x569d4f81UL, 0x0005342bUL, 0x18fdd78eUL, 0x3c933505UL,
+ 0x36b527daUL, 0x00056f47UL, 0xe21c5409UL, 0x3c9063e1UL, 0xdd485429UL,
+ 0x0005ab07UL, 0x2b64c035UL, 0x3c9432e6UL, 0x15ad2148UL, 0x0005e76fUL,
+ 0x99f08c0aUL, 0x3ca01284UL, 0xb03a5584UL, 0x0006247eUL, 0x0073dc06UL,
+ 0x3c99f087UL, 0x82552224UL, 0x00066238UL, 0x0da05571UL, 0x3c998d4dUL,
+ 0x667f3bccUL, 0x0006a09eUL, 0x86ce4786UL, 0x3ca52bb9UL, 0x3c651a2eUL,
+ 0x0006dfb2UL, 0x206f0dabUL, 0x3ca32092UL, 0xe8ec5f73UL, 0x00071f75UL,
+ 0x8e17a7a6UL, 0x3ca06122UL, 0x564267c8UL, 0x00075febUL, 0x461e9f86UL,
+ 0x3ca244acUL, 0x73eb0186UL, 0x0007a114UL, 0xabd66c55UL, 0x3c65ebe1UL,
+ 0x36cf4e62UL, 0x0007e2f3UL, 0xbbff67d0UL, 0x3c96fe9fUL, 0x994cce12UL,
+ 0x00082589UL, 0x14c801dfUL, 0x3c951f14UL, 0x9b4492ecUL, 0x000868d9UL,
+ 0xc1f0eab4UL, 0x3c8db72fUL, 0x422aa0dbUL, 0x0008ace5UL, 0x59f35f44UL,
+ 0x3c7bf683UL, 0x99157736UL, 0x0008f1aeUL, 0x9c06283cUL, 0x3ca360baUL,
+ 0xb0cdc5e4UL, 0x00093737UL, 0x20f962aaUL, 0x3c95e8d1UL, 0x9fde4e4fUL,
+ 0x00097d82UL, 0x2b91ce27UL, 0x3c71affcUL, 0x82a3f090UL, 0x0009c491UL,
+ 0x589a2ebdUL, 0x3c9b6d34UL, 0x7b5de564UL, 0x000a0c66UL, 0x9ab89880UL,
+ 0x3c95277cUL, 0xb23e255cUL, 0x000a5503UL, 0x6e735ab3UL, 0x3c846984UL,
+ 0x5579fdbfUL, 0x000a9e6bUL, 0x92cb3387UL, 0x3c8c1a77UL, 0x995ad3adUL,
+ 0x000ae89fUL, 0xdc2d1d96UL, 0x3ca22466UL, 0xb84f15faUL, 0x000b33a2UL,
+ 0xb19505aeUL, 0x3ca1112eUL, 0xf2fb5e46UL, 0x000b7f76UL, 0x0a5fddcdUL,
+ 0x3c74ffd7UL, 0x904bc1d2UL, 0x000bcc1eUL, 0x30af0cb3UL, 0x3c736eaeUL,
+ 0xdd85529cUL, 0x000c199bUL, 0xd10959acUL, 0x3c84e08fUL, 0x2e57d14bUL,
+ 0x000c67f1UL, 0x6c921968UL, 0x3c676b2cUL, 0xdcef9069UL, 0x000cb720UL,
+ 0x36df99b3UL, 0x3c937009UL, 0x4a07897bUL, 0x000d072dUL, 0xa63d07a7UL,
+ 0x3c74a385UL, 0xdcfba487UL, 0x000d5818UL, 0xd5c192acUL, 0x3c8e5a50UL,
+ 0x03db3285UL, 0x000da9e6UL, 0x1c4a9792UL, 0x3c98bb73UL, 0x337b9b5eUL,
+ 0x000dfc97UL, 0x603a88d3UL, 0x3c74b604UL, 0xe78b3ff6UL, 0x000e502eUL,
+ 0x92094926UL, 0x3c916f27UL, 0xa2a490d9UL, 0x000ea4afUL, 0x41aa2008UL,
+ 0x3c8ec3bcUL, 0xee615a27UL, 0x000efa1bUL, 0x31d185eeUL, 0x3c8a64a9UL,
+ 0x5b6e4540UL, 0x000f5076UL, 0x4d91cd9dUL, 0x3c77893bUL, 0x819e90d8UL,
+ 0x000fa7c1UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x7ff00000UL,
+ 0x00000000UL, 0x00000000UL, 0xffffffffUL, 0x7fefffffUL, 0x00000000UL,
+ 0x00100000UL
+};
+
+//registers,
+// input: (rbp + 8)
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, rbx (tmp)
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_exp(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+ jmp(start);
+ address static_const_table = (address)_static_const_table;
+
+ bind(start);
+ subl(rsp, 120);
+ movl(Address(rsp, 64), tmp);
+ lea(tmp, ExternalAddress(static_const_table));
+ movdqu(xmm0, Address(rsp, 128));
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm1, Address(tmp, 64)); // 0x652b82feUL, 0x40571547UL, 0x652b82feUL, 0x40571547UL
+ movdqu(xmm6, Address(tmp, 48)); // 0x00000000UL, 0x43380000UL, 0x00000000UL, 0x43380000UL
+ movdqu(xmm2, Address(tmp, 80)); // 0xfefa0000UL, 0x3f862e42UL, 0xfefa0000UL, 0x3f862e42UL
+ movdqu(xmm3, Address(tmp, 96)); // 0xbc9e3b3aUL, 0x3d1cf79aUL, 0xbc9e3b3aUL, 0x3d1cf79aUL
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ movl(edx, 16527);
+ subl(edx, eax);
+ subl(eax, 15504);
+ orl(edx, eax);
+ cmpl(edx, INT_MIN);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+ mulpd(xmm1, xmm0);
+ addpd(xmm1, xmm6);
+ movapd(xmm7, xmm1);
+ subpd(xmm1, xmm6);
+ mulpd(xmm2, xmm1);
+ movdqu(xmm4, Address(tmp, 128)); // 0xe3289860UL, 0x3f56c15cUL, 0x555b9e25UL, 0x3fa55555UL
+ mulpd(xmm3, xmm1);
+ movdqu(xmm5, Address(tmp, 144)); // 0xc090cf0fUL, 0x3f811115UL, 0x55548ba1UL, 0x3fc55555UL
+ subpd(xmm0, xmm2);
+ movdl(eax, xmm7);
+ movl(ecx, eax);
+ andl(ecx, 63);
+ shll(ecx, 4);
+ sarl(eax, 6);
+ movl(edx, eax);
+ movdqu(xmm6, Address(tmp, 16)); // 0xffffffc0UL, 0x00000000UL, 0xffffffc0UL, 0x00000000UL
+ pand(xmm7, xmm6);
+ movdqu(xmm6, Address(tmp, 32)); // 0x0000ffc0UL, 0x00000000UL, 0x0000ffc0UL, 0x00000000UL
+ paddq(xmm7, xmm6);
+ psllq(xmm7, 46);
+ subpd(xmm0, xmm3);
+ movdqu(xmm2, Address(tmp, ecx, Address::times_1, 160));
+ mulpd(xmm4, xmm0);
+ movapd(xmm6, xmm0);
+ movapd(xmm1, xmm0);
+ mulpd(xmm6, xmm6);
+ mulpd(xmm0, xmm6);
+ addpd(xmm5, xmm4);
+ mulsd(xmm0, xmm6);
+ mulpd(xmm6, Address(tmp, 112)); // 0xfffffffeUL, 0x3fdfffffUL, 0xfffffffeUL, 0x3fdfffffUL
+ addsd(xmm1, xmm2);
+ unpckhpd(xmm2, xmm2);
+ mulpd(xmm0, xmm5);
+ addsd(xmm1, xmm0);
+ por(xmm2, xmm7);
+ unpckhpd(xmm0, xmm0);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm6);
+ addl(edx, 894);
+ cmpl(edx, 1916);
+ jcc(Assembler::above, L_2TAG_PACKET_1_0_2);
+ mulsd(xmm0, xmm2);
+ addsd(xmm0, xmm2);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ fnstcw(Address(rsp, 24));
+ movzwl(edx, Address(rsp, 24));
+ orl(edx, 768);
+ movw(Address(rsp, 28), edx);
+ fldcw(Address(rsp, 28));
+ movl(edx, eax);
+ sarl(eax, 1);
+ subl(edx, eax);
+ movdqu(xmm6, Address(tmp, 0)); // 0x00000000UL, 0xfff00000UL, 0x00000000UL, 0xfff00000UL
+ pandn(xmm6, xmm2);
+ addl(eax, 1023);
+ movdl(xmm3, eax);
+ psllq(xmm3, 52);
+ por(xmm6, xmm3);
+ addl(edx, 1023);
+ movdl(xmm4, edx);
+ psllq(xmm4, 52);
+ movsd(Address(rsp, 8), xmm0);
+ fld_d(Address(rsp, 8));
+ movsd(Address(rsp, 16), xmm6);
+ fld_d(Address(rsp, 16));
+ fmula(1);
+ faddp(1);
+ movsd(Address(rsp, 8), xmm4);
+ fld_d(Address(rsp, 8));
+ fmulp(1);
+ fstp_d(Address(rsp, 8));
+ movsd(xmm0, Address(rsp, 8));
+ fldcw(Address(rsp, 24));
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ cmpl(ecx, 32752);
+ jcc(Assembler::greaterEqual, L_2TAG_PACKET_3_0_2);
+ cmpl(ecx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
+ jmp(L_2TAG_PACKET_2_0_2);
+ cmpl(ecx, INT_MIN);
+ jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
+ cmpl(ecx, -1064950997);
+ jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
+ jcc(Assembler::greater, L_2TAG_PACKET_4_0_2);
+ movl(edx, Address(rsp, 128));
+ cmpl(edx, -17155601);
+ jcc(Assembler::less, L_2TAG_PACKET_2_0_2);
+ jmp(L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ movl(edx, 14);
+ jmp(L_2TAG_PACKET_5_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ movl(edx, 15);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ movsd(xmm0, Address(rsp, 128));
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ cmpl(eax, 2146435072);
+ jcc(Assembler::greaterEqual, L_2TAG_PACKET_8_0_2);
+ movl(eax, Address(rsp, 132));
+ cmpl(eax, INT_MIN);
+ jcc(Assembler::greaterEqual, L_2TAG_PACKET_9_0_2);
+ movsd(xmm0, Address(tmp, 1208)); // 0xffffffffUL, 0x7fefffffUL
+ mulsd(xmm0, xmm0);
+ movl(edx, 14);
+ jmp(L_2TAG_PACKET_5_0_2);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movsd(xmm0, Address(tmp, 1216));
+ mulsd(xmm0, xmm0);
+ movl(edx, 15);
+ jmp(L_2TAG_PACKET_5_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ movl(edx, Address(rsp, 128));
+ cmpl(eax, 2146435072);
+ jcc(Assembler::above, L_2TAG_PACKET_10_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_2);
+ movl(eax, Address(rsp, 132));
+ cmpl(eax, 2146435072);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_11_0_2);
+ movsd(xmm0, Address(tmp, 1192)); // 0x00000000UL, 0x7ff00000UL
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_11_0_2);
+ movsd(xmm0, Address(tmp, 1200)); // 0x00000000UL, 0x00000000UL
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movsd(xmm0, Address(rsp, 128));
+ addsd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movl(eax, Address(rsp, 132));
+ andl(eax, 2147483647);
+ cmpl(eax, 1083179008);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_7_0_2);
+ movsd(xmm0, Address(rsp, 128));
+ addsd(xmm0, Address(tmp, 1184)); // 0x00000000UL, 0x3ff00000UL
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movsd(Address(rsp, 48), xmm0);
+ fld_d(Address(rsp, 48));
+
+ bind(L_2TAG_PACKET_6_0_2);
+ movl(tmp, Address(rsp, 64));
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_log.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_log.cpp
new file mode 100644
index 00000000000..cd4ed0d79d8
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_log.cpp
@@ -0,0 +1,655 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - LOG()
+// ---------------------
+//
+// x=2^k * mx, mx in [1,2)
+//
+// Get B~1/mx based on the output of rcpss instruction (B0)
+// B = int((B0*2^7+0.5))/2^7
+//
+// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
+//
+// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
+// p(r) is a degree 7 polynomial
+// -log(B) read from data table (high, low parts)
+// Result is formed from high and low parts
+//
+// Special cases:
+// log(NaN) = quiet NaN, and raise invalid exception
+// log(+INF) = that INF
+// log(0) = -INF with divide-by-zero exception raised
+// log(1) = +0
+// log(x) = NaN with invalid exception raised if x < -0, including -INF
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _L_tbl[] =
+{
+ 0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
+ 0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
+ 0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
+ 0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
+ 0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
+ 0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
+ 0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
+ 0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
+ 0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
+ 0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
+ 0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
+ 0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
+ 0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
+ 0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
+ 0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
+ 0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
+ 0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
+ 0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
+ 0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
+ 0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
+ 0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
+ 0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
+ 0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
+ 0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
+ 0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
+ 0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
+ 0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
+ 0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
+ 0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
+ 0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
+ 0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
+ 0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
+ 0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
+ 0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
+ 0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
+ 0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
+ 0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
+ 0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
+ 0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
+ 0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
+ 0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
+ 0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
+ 0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
+ 0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
+ 0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
+ 0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
+ 0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
+ 0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
+ 0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
+ 0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
+ 0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
+ 0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
+ 0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
+ 0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
+ 0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
+ 0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
+ 0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
+ 0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
+ 0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
+ 0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
+ 0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
+ 0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
+ 0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
+ 0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
+ 0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
+ 0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
+ 0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
+ 0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
+ 0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
+ 0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
+ 0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
+ 0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
+ 0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
+ 0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
+ 0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
+ 0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
+ 0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
+ 0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
+ 0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
+ 0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
+ 0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
+ 0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
+ 0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
+ 0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
+ 0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
+ 0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
+ 0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
+ 0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
+ 0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
+ 0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
+ 0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
+ 0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
+ 0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
+ 0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
+ 0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
+ 0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
+ 0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
+ 0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
+ 0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
+ 0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
+ 0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
+ 0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
+ 0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x80000000UL
+};
+
+ALIGNED_(16) juint _log2[] =
+{
+ 0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL
+};
+
+ALIGNED_(16) juint _coeff[] =
+{
+ 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
+ 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
+ 0x00000000UL, 0xbfe00000UL
+};
+
+//registers,
+// input: xmm0
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, r8, r11
+
+void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp1, tmp2, eax, ecx, edx);
+ jmp(start);
+ address L_tbl = (address)_L_tbl;
+ address log2 = (address)_log2;
+ address coeff = (address)_coeff;
+
+ bind(start);
+ subq(rsp, 24);
+ movsd(Address(rsp, 0), xmm0);
+ mov64(rax, 0x3ff0000000000000);
+ movdq(xmm2, rax);
+ mov64(rdx, 0x77f0000000000000);
+ movdq(xmm3, rdx);
+ movl(ecx, 32768);
+ movdl(xmm4, rcx);
+ mov64(tmp1, 0xffffe00000000000);
+ movdq(xmm5, tmp1);
+ movdqu(xmm1, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 16352);
+ psrlq(xmm0, 27);
+ lea(tmp2, ExternalAddress(L_tbl));
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 228);
+ psrlq(xmm1, 12);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ paddd(xmm0, xmm4);
+ por(xmm1, xmm3);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm1);
+ pand(xmm0, xmm6);
+ subsd(xmm1, xmm5);
+ mulpd(xmm5, xmm0);
+ andl(eax, 32752);
+ subl(eax, ecx);
+ cvtsi2sdl(xmm7, eax);
+ mulsd(xmm1, xmm0);
+ movq(xmm6, ExternalAddress(log2)); // 0xfefa3800UL, 0x3fa62e42UL
+ movdqu(xmm3, ExternalAddress(coeff)); // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
+ subsd(xmm5, xmm2);
+ andl(edx, 16711680);
+ shrl(edx, 12);
+ movdqu(xmm0, Address(tmp2, edx));
+ movdqu(xmm4, ExternalAddress(16 + coeff)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
+ addsd(xmm1, xmm5);
+ movdqu(xmm2, ExternalAddress(32 + coeff)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
+ mulsd(xmm6, xmm7);
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm5, xmm1);
+ }
+ else {
+ movdqu(xmm5, xmm1);
+ movlhps(xmm5, xmm5);
+ }
+ mulsd(xmm7, ExternalAddress(8 + log2)); // 0x93c76730UL, 0x3ceef357UL
+ mulsd(xmm3, xmm1);
+ addsd(xmm0, xmm6);
+ mulpd(xmm4, xmm5);
+ mulpd(xmm5, xmm5);
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm6, xmm0);
+ }
+ else {
+ movdqu(xmm6, xmm0);
+ movlhps(xmm6, xmm6);
+ }
+ addsd(xmm0, xmm1);
+ addpd(xmm4, xmm2);
+ mulpd(xmm3, xmm5);
+ subsd(xmm6, xmm0);
+ mulsd(xmm4, xmm1);
+ pshufd(xmm2, xmm0, 238);
+ addsd(xmm1, xmm6);
+ mulsd(xmm5, xmm5);
+ addsd(xmm7, xmm2);
+ addpd(xmm4, xmm3);
+ addsd(xmm1, xmm7);
+ mulpd(xmm4, xmm5);
+ addsd(xmm1, xmm4);
+ pshufd(xmm5, xmm4, 238);
+ addsd(xmm1, xmm5);
+ addsd(xmm0, xmm1);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movq(xmm0, Address(rsp, 0));
+ movq(xmm1, Address(rsp, 0));
+ addl(eax, 16);
+ cmpl(eax, 32768);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
+ cmpl(eax, 16);
+ jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ addsd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ xorpd(xmm1, xmm1);
+ addsd(xmm1, xmm0);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 18416);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ movdqu(xmm1, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ psrlq(xmm0, 27);
+ movl(ecx, 18416);
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 228);
+ psrlq(xmm1, 12);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ addl(ecx, ecx);
+ cmpl(ecx, -2097152);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ movl(Address(rsp, 16), 3);
+ jmp(L_2TAG_PACKET_8_0_2);
+ bind(L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 49136);
+ pinsrw(xmm0, eax, 3);
+ divsd(xmm0, xmm1);
+ movl(Address(rsp, 16), 2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ movq(Address(rsp, 8), xmm0);
+
+ bind(B1_3);
+ movq(xmm0, Address(rsp, 8));
+
+ bind(B1_5);
+ addq(rsp, 24);
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _static_const_table_log[] =
+{
+ 0xfefa3800UL, 0x3fe62e42UL, 0x93c76730UL, 0x3d2ef357UL, 0xaa241800UL,
+ 0x3fe5ee82UL, 0x0cda46beUL, 0x3d220238UL, 0x5c364800UL, 0x3fe5af40UL,
+ 0xac10c9fbUL, 0x3d2dfa63UL, 0x26bb8c00UL, 0x3fe5707aUL, 0xff3303ddUL,
+ 0x3d09980bUL, 0x26867800UL, 0x3fe5322eUL, 0x5d257531UL, 0x3d05ccc4UL,
+ 0x835a5000UL, 0x3fe4f45aUL, 0x6d93b8fbUL, 0xbd2e6c51UL, 0x6f970c00UL,
+ 0x3fe4b6fdUL, 0xed4c541cUL, 0x3cef7115UL, 0x27e8a400UL, 0x3fe47a15UL,
+ 0xf94d60aaUL, 0xbd22cb6aUL, 0xf2f92400UL, 0x3fe43d9fUL, 0x481051f7UL,
+ 0xbcfd984fUL, 0x2125cc00UL, 0x3fe4019cUL, 0x30f0c74cUL, 0xbd26ce79UL,
+ 0x0c36c000UL, 0x3fe3c608UL, 0x7cfe13c2UL, 0xbd02b736UL, 0x17197800UL,
+ 0x3fe38ae2UL, 0xbb5569a4UL, 0xbd218b7aUL, 0xad9d8c00UL, 0x3fe35028UL,
+ 0x9527e6acUL, 0x3d10b83fUL, 0x44340800UL, 0x3fe315daUL, 0xc5a0ed9cUL,
+ 0xbd274e93UL, 0x57b0e000UL, 0x3fe2dbf5UL, 0x07b9dc11UL, 0xbd17a6e5UL,
+ 0x6d0ec000UL, 0x3fe2a278UL, 0xe797882dUL, 0x3d206d2bUL, 0x1134dc00UL,
+ 0x3fe26962UL, 0x05226250UL, 0xbd0b61f1UL, 0xd8bebc00UL, 0x3fe230b0UL,
+ 0x6e48667bUL, 0x3d12fc06UL, 0x5fc61800UL, 0x3fe1f863UL, 0xc9fe81d3UL,
+ 0xbd2a7242UL, 0x49ae6000UL, 0x3fe1c078UL, 0xed70e667UL, 0x3cccacdeUL,
+ 0x40f23c00UL, 0x3fe188eeUL, 0xf8ab4650UL, 0x3d14cc4eUL, 0xf6f29800UL,
+ 0x3fe151c3UL, 0xa293ae49UL, 0xbd2edd97UL, 0x23c75c00UL, 0x3fe11af8UL,
+ 0xbb9ddcb2UL, 0xbd258647UL, 0x8611cc00UL, 0x3fe0e489UL, 0x07801742UL,
+ 0x3d1c2998UL, 0xe2d05400UL, 0x3fe0ae76UL, 0x887e7e27UL, 0x3d1f486bUL,
+ 0x0533c400UL, 0x3fe078bfUL, 0x41edf5fdUL, 0x3d268122UL, 0xbe760400UL,
+ 0x3fe04360UL, 0xe79539e0UL, 0xbd04c45fUL, 0xe5b20800UL, 0x3fe00e5aUL,
+ 0xb1727b1cUL, 0xbd053ba3UL, 0xaf7a4800UL, 0x3fdfb358UL, 0x3c164935UL,
+ 0x3d0085faUL, 0xee031800UL, 0x3fdf4aa7UL, 0x6f014a8bUL, 0x3d12cde5UL,
+ 0x56b41000UL, 0x3fdee2a1UL, 0x5a470251UL, 0x3d2f27f4UL, 0xc3ddb000UL,
+ 0x3fde7b42UL, 0x5372bd08UL, 0xbd246550UL, 0x1a272800UL, 0x3fde148aUL,
+ 0x07322938UL, 0xbd1326b2UL, 0x484c9800UL, 0x3fddae75UL, 0x60dc616aUL,
+ 0xbd1ea42dUL, 0x46def800UL, 0x3fdd4902UL, 0xe9a767a8UL, 0x3d235bafUL,
+ 0x18064800UL, 0x3fdce42fUL, 0x3ec7a6b0UL, 0xbd0797c3UL, 0xc7455800UL,
+ 0x3fdc7ff9UL, 0xc15249aeUL, 0xbd29b6ddUL, 0x693fa000UL, 0x3fdc1c60UL,
+ 0x7fe8e180UL, 0x3d2cec80UL, 0x1b80e000UL, 0x3fdbb961UL, 0xf40a666dUL,
+ 0x3d27d85bUL, 0x04462800UL, 0x3fdb56faUL, 0x2d841995UL, 0x3d109525UL,
+ 0x5248d000UL, 0x3fdaf529UL, 0x52774458UL, 0xbd217cc5UL, 0x3c8ad800UL,
+ 0x3fda93edUL, 0xbea77a5dUL, 0x3d1e36f2UL, 0x0224f800UL, 0x3fda3344UL,
+ 0x7f9d79f5UL, 0x3d23c645UL, 0xea15f000UL, 0x3fd9d32bUL, 0x10d0c0b0UL,
+ 0xbd26279eUL, 0x43135800UL, 0x3fd973a3UL, 0xa502d9f0UL, 0xbd152313UL,
+ 0x635bf800UL, 0x3fd914a8UL, 0x2ee6307dUL, 0xbd1766b5UL, 0xa88b3000UL,
+ 0x3fd8b639UL, 0xe5e70470UL, 0xbd205ae1UL, 0x776dc800UL, 0x3fd85855UL,
+ 0x3333778aUL, 0x3d2fd56fUL, 0x3bd81800UL, 0x3fd7fafaUL, 0xc812566aUL,
+ 0xbd272090UL, 0x687cf800UL, 0x3fd79e26UL, 0x2efd1778UL, 0x3d29ec7dUL,
+ 0x76c67800UL, 0x3fd741d8UL, 0x49dc60b3UL, 0x3d2d8b09UL, 0xe6af1800UL,
+ 0x3fd6e60eUL, 0x7c222d87UL, 0x3d172165UL, 0x3e9c6800UL, 0x3fd68ac8UL,
+ 0x2756eba0UL, 0x3d20a0d3UL, 0x0b3ab000UL, 0x3fd63003UL, 0xe731ae00UL,
+ 0xbd2db623UL, 0xdf596000UL, 0x3fd5d5bdUL, 0x08a465dcUL, 0xbd0a0b2aUL,
+ 0x53c8d000UL, 0x3fd57bf7UL, 0xee5d40efUL, 0x3d1fadedUL, 0x0738a000UL,
+ 0x3fd522aeUL, 0x8164c759UL, 0x3d2ebe70UL, 0x9e173000UL, 0x3fd4c9e0UL,
+ 0x1b0ad8a4UL, 0xbd2e2089UL, 0xc271c800UL, 0x3fd4718dUL, 0x0967d675UL,
+ 0xbd2f27ceUL, 0x23d5e800UL, 0x3fd419b4UL, 0xec90e09dUL, 0x3d08e436UL,
+ 0x77333000UL, 0x3fd3c252UL, 0xb606bd5cUL, 0x3d183b54UL, 0x76be1000UL,
+ 0x3fd36b67UL, 0xb0f177c8UL, 0x3d116ecdUL, 0xe1d36000UL, 0x3fd314f1UL,
+ 0xd3213cb8UL, 0xbd28e27aUL, 0x7cdc9000UL, 0x3fd2bef0UL, 0x4a5004f4UL,
+ 0x3d2a9cfaUL, 0x1134d800UL, 0x3fd26962UL, 0xdf5bb3b6UL, 0x3d2c93c1UL,
+ 0x6d0eb800UL, 0x3fd21445UL, 0xba46baeaUL, 0x3d0a87deUL, 0x635a6800UL,
+ 0x3fd1bf99UL, 0x5147bdb7UL, 0x3d2ca6edUL, 0xcbacf800UL, 0x3fd16b5cUL,
+ 0xf7a51681UL, 0x3d2b9acdUL, 0x8227e800UL, 0x3fd1178eUL, 0x63a5f01cUL,
+ 0xbd2c210eUL, 0x67616000UL, 0x3fd0c42dUL, 0x163ceae9UL, 0x3d27188bUL,
+ 0x604d5800UL, 0x3fd07138UL, 0x16ed4e91UL, 0x3cf89cdbUL, 0x5626c800UL,
+ 0x3fd01eaeUL, 0x1485e94aUL, 0xbd16f08cUL, 0x6cb3b000UL, 0x3fcf991cUL,
+ 0xca0cdf30UL, 0x3d1bcbecUL, 0xe4dd0000UL, 0x3fcef5adUL, 0x65bb8e11UL,
+ 0xbcca2115UL, 0xffe71000UL, 0x3fce530eUL, 0x6041f430UL, 0x3cc21227UL,
+ 0xb0d49000UL, 0x3fcdb13dUL, 0xf715b035UL, 0xbd2aff2aUL, 0xf2656000UL,
+ 0x3fcd1037UL, 0x75b6f6e4UL, 0xbd084a7eUL, 0xc6f01000UL, 0x3fcc6ffbUL,
+ 0xc5962bd2UL, 0xbcf1ec72UL, 0x383be000UL, 0x3fcbd087UL, 0x595412b6UL,
+ 0xbd2d4bc4UL, 0x575bd000UL, 0x3fcb31d8UL, 0x4eace1aaUL, 0xbd0c358dUL,
+ 0x3c8ae000UL, 0x3fca93edUL, 0x50562169UL, 0xbd287243UL, 0x07089000UL,
+ 0x3fc9f6c4UL, 0x6865817aUL, 0x3d29904dUL, 0xdcf70000UL, 0x3fc95a5aUL,
+ 0x58a0ff6fUL, 0x3d07f228UL, 0xeb390000UL, 0x3fc8beafUL, 0xaae92cd1UL,
+ 0xbd073d54UL, 0x6551a000UL, 0x3fc823c1UL, 0x9a631e83UL, 0x3d1e0ddbUL,
+ 0x85445000UL, 0x3fc7898dUL, 0x70914305UL, 0xbd1c6610UL, 0x8b757000UL,
+ 0x3fc6f012UL, 0xe59c21e1UL, 0xbd25118dUL, 0xbe8c1000UL, 0x3fc6574eUL,
+ 0x2c3c2e78UL, 0x3d19cf8bUL, 0x6b544000UL, 0x3fc5bf40UL, 0xeb68981cUL,
+ 0xbd127023UL, 0xe4a1b000UL, 0x3fc527e5UL, 0xe5697dc7UL, 0x3d2633e8UL,
+ 0x8333b000UL, 0x3fc4913dUL, 0x54fdb678UL, 0x3d258379UL, 0xa5993000UL,
+ 0x3fc3fb45UL, 0x7e6a354dUL, 0xbd2cd1d8UL, 0xb0159000UL, 0x3fc365fcUL,
+ 0x234b7289UL, 0x3cc62fa8UL, 0x0c868000UL, 0x3fc2d161UL, 0xcb81b4a1UL,
+ 0x3d039d6cUL, 0x2a49c000UL, 0x3fc23d71UL, 0x8fd3df5cUL, 0x3d100d23UL,
+ 0x7e23f000UL, 0x3fc1aa2bUL, 0x44389934UL, 0x3d2ca78eUL, 0x8227e000UL,
+ 0x3fc1178eUL, 0xce2d07f2UL, 0x3d21ef78UL, 0xb59e4000UL, 0x3fc08598UL,
+ 0x7009902cUL, 0xbd27e5ddUL, 0x39dbe000UL, 0x3fbfe891UL, 0x4fa10afdUL,
+ 0xbd2534d6UL, 0x830a2000UL, 0x3fbec739UL, 0xafe645e0UL, 0xbd2dc068UL,
+ 0x63844000UL, 0x3fbda727UL, 0x1fa71733UL, 0x3d1a8940UL, 0x01bc4000UL,
+ 0x3fbc8858UL, 0xc65aacd3UL, 0x3d2646d1UL, 0x8dad6000UL, 0x3fbb6ac8UL,
+ 0x2bf768e5UL, 0xbd139080UL, 0x40b1c000UL, 0x3fba4e76UL, 0xb94407c8UL,
+ 0xbd0e42b6UL, 0x5d594000UL, 0x3fb9335eUL, 0x3abd47daUL, 0x3d23115cUL,
+ 0x2f40e000UL, 0x3fb8197eUL, 0xf96ffdf7UL, 0x3d0f80dcUL, 0x0aeac000UL,
+ 0x3fb700d3UL, 0xa99ded32UL, 0x3cec1e8dUL, 0x4d97a000UL, 0x3fb5e95aUL,
+ 0x3c5d1d1eUL, 0xbd2c6906UL, 0x5d208000UL, 0x3fb4d311UL, 0x82f4e1efUL,
+ 0xbcf53a25UL, 0xa7d1e000UL, 0x3fb3bdf5UL, 0xa5db4ed7UL, 0x3d2cc85eUL,
+ 0xa4472000UL, 0x3fb2aa04UL, 0xae9c697dUL, 0xbd20b6e8UL, 0xd1466000UL,
+ 0x3fb1973bUL, 0x560d9e9bUL, 0xbd25325dUL, 0xb59e4000UL, 0x3fb08598UL,
+ 0x7009902cUL, 0xbd17e5ddUL, 0xc006c000UL, 0x3faeea31UL, 0x4fc93b7bUL,
+ 0xbd0e113eUL, 0xcdddc000UL, 0x3faccb73UL, 0x47d82807UL, 0xbd1a68f2UL,
+ 0xd0fb0000UL, 0x3faaaef2UL, 0x353bb42eUL, 0x3d20fc1aUL, 0x149fc000UL,
+ 0x3fa894aaUL, 0xd05a267dUL, 0xbd197995UL, 0xf2d4c000UL, 0x3fa67c94UL,
+ 0xec19afa2UL, 0xbd029efbUL, 0xd42e0000UL, 0x3fa466aeUL, 0x75bdfd28UL,
+ 0xbd2c1673UL, 0x2f8d0000UL, 0x3fa252f3UL, 0xe021b67bUL, 0x3d283e9aUL,
+ 0x89e74000UL, 0x3fa0415dUL, 0x5cf1d753UL, 0x3d0111c0UL, 0xec148000UL,
+ 0x3f9c63d2UL, 0x3f9eb2f3UL, 0x3d2578c6UL, 0x28c90000UL, 0x3f984925UL,
+ 0x325a0c34UL, 0xbd2aa0baUL, 0x25980000UL, 0x3f9432a9UL, 0x928637feUL,
+ 0x3d098139UL, 0x58938000UL, 0x3f902056UL, 0x06e2f7d2UL, 0xbd23dc5bUL,
+ 0xa3890000UL, 0x3f882448UL, 0xda74f640UL, 0xbd275577UL, 0x75890000UL,
+ 0x3f801015UL, 0x999d2be8UL, 0xbd10c76bUL, 0x59580000UL, 0x3f700805UL,
+ 0xcb31c67bUL, 0x3d2166afUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x80000000UL, 0xfefa3800UL, 0x3fa62e42UL, 0x93c76730UL, 0x3ceef357UL,
+ 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL, 0x3d6fb175UL,
+ 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL, 0x9999999aUL, 0x3fc99999UL,
+ 0x00000000UL, 0xbfe00000UL, 0x00000000UL, 0xffffe000UL, 0x00000000UL,
+ 0xffffe000UL
+};
+//registers,
+// input: xmm0
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, rbx (tmp)
+
+void MacroAssembler::fast_log(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2;
+ Label L_2TAG_PACKET_10_0_2, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+ jmp(start);
+ address static_const_table = (address)_static_const_table_log;
+
+ bind(start);
+ subl(rsp, 104);
+ movl(Address(rsp, 40), tmp);
+ lea(tmp, ExternalAddress(static_const_table));
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ xorpd(xmm3, xmm3);
+ movl(edx, 30704);
+ pinsrw(xmm3, edx, 3);
+ movsd(xmm0, Address(rsp, 112));
+ movapd(xmm1, xmm0);
+ movl(ecx, 32768);
+ movdl(xmm4, ecx);
+ movsd(xmm5, Address(tmp, 2128)); // 0x00000000UL, 0xffffe000UL
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ psllq(xmm0, 5);
+ movl(ecx, 16352);
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 228);
+ psrlq(xmm1, 12);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ paddd(xmm0, xmm4);
+ por(xmm1, xmm3);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm1);
+ pand(xmm0, xmm6);
+ subsd(xmm1, xmm5);
+ mulpd(xmm5, xmm0);
+ andl(eax, 32752);
+ subl(eax, ecx);
+ cvtsi2sdl(xmm7, eax);
+ mulsd(xmm1, xmm0);
+ movsd(xmm6, Address(tmp, 2064)); // 0xfefa3800UL, 0x3fa62e42UL
+ movdqu(xmm3, Address(tmp, 2080)); // 0x92492492UL, 0x3fc24924UL, 0x00000000UL, 0xbfd00000UL
+ subsd(xmm5, xmm2);
+ andl(edx, 16711680);
+ shrl(edx, 12);
+ movdqu(xmm0, Address(tmp, edx));
+ movdqu(xmm4, Address(tmp, 2096)); // 0x3d6fb175UL, 0xbfc5555eUL, 0x55555555UL, 0x3fd55555UL
+ addsd(xmm1, xmm5);
+ movdqu(xmm2, Address(tmp, 2112)); // 0x9999999aUL, 0x3fc99999UL, 0x00000000UL, 0xbfe00000UL
+ mulsd(xmm6, xmm7);
+ pshufd(xmm5, xmm1, 68);
+ mulsd(xmm7, Address(tmp, 2072)); // 0x93c76730UL, 0x3ceef357UL, 0x92492492UL, 0x3fc24924UL
+ mulsd(xmm3, xmm1);
+ addsd(xmm0, xmm6);
+ mulpd(xmm4, xmm5);
+ mulpd(xmm5, xmm5);
+ pshufd(xmm6, xmm0, 228);
+ addsd(xmm0, xmm1);
+ addpd(xmm4, xmm2);
+ mulpd(xmm3, xmm5);
+ subsd(xmm6, xmm0);
+ mulsd(xmm4, xmm1);
+ pshufd(xmm2, xmm0, 238);
+ addsd(xmm1, xmm6);
+ mulsd(xmm5, xmm5);
+ addsd(xmm7, xmm2);
+ addpd(xmm4, xmm3);
+ addsd(xmm1, xmm7);
+ mulpd(xmm4, xmm5);
+ addsd(xmm1, xmm4);
+ pshufd(xmm5, xmm4, 238);
+ addsd(xmm1, xmm5);
+ addsd(xmm0, xmm1);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movsd(xmm0, Address(rsp, 112));
+ movdqu(xmm1, xmm0);
+ addl(eax, 16);
+ cmpl(eax, 32768);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_3_0_2);
+ cmpl(eax, 16);
+ jcc(Assembler::below, L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ addsd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
+ jmp(L_2TAG_PACKET_7_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ addl(ecx, ecx);
+ cmpl(ecx, -2097152);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_6_0_2);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ movl(edx, 3);
+ mulsd(xmm0, xmm1);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ movsd(xmm0, Address(rsp, 112));
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_10_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 49136);
+ pinsrw(xmm0, eax, 3);
+ divsd(xmm0, xmm1);
+ movl(edx, 2);
+ jmp(L_2TAG_PACKET_9_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 18416);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ movapd(xmm1, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ psllq(xmm0, 5);
+ movl(ecx, 18416);
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 228);
+ psrlq(xmm1, 12);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movsd(Address(rsp, 24), xmm0);
+ fld_d(Address(rsp, 24));
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movl(tmp, Address(rsp, 40));
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_log10.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_log10.cpp
new file mode 100644
index 00000000000..72a8aba01c7
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_log10.cpp
@@ -0,0 +1,687 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - LOG10()
+// ---------------------
+//
+// Let x=2^k * mx, mx in [1,2)
+//
+// Get B~1/mx based on the output of rcpss instruction (B0)
+// B = int((B0*LH*2^7+0.5))/2^7
+// LH is a short approximation for log10(e)
+//
+// Reduced argument: r=B*mx-LH (computed accurately in high and low parts)
+//
+// Result: k*log10(2) - log(B) + p(r)
+// p(r) is a degree 7 polynomial
+// -log(B) read from data table (high, low parts)
+// Result is formed from high and low parts
+//
+// Special cases:
+// log10(0) = -INF with divide-by-zero exception raised
+// log10(1) = +0
+// log10(x) = NaN with invalid exception raised if x < -0, including -INF
+// log10(+INF) = +INF
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _HIGHSIGMASK_log10[] =
+{
+ 0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xffffe000UL
+};
+
+ALIGNED_(16) juint _LOG10_E[] =
+{
+ 0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
+};
+
+ALIGNED_(16) juint _L_tbl_log10[] =
+{
+ 0x509f7800UL, 0x3fd34413UL, 0x1f12b358UL, 0x3d1fef31UL, 0x80333400UL,
+ 0x3fd32418UL, 0xc671d9d0UL, 0xbcf542bfUL, 0x51195000UL, 0x3fd30442UL,
+ 0x78a4b0c3UL, 0x3d18216aUL, 0x6fc79400UL, 0x3fd2e490UL, 0x80fa389dUL,
+ 0xbc902869UL, 0x89d04000UL, 0x3fd2c502UL, 0x75c2f564UL, 0x3d040754UL,
+ 0x4ddd1c00UL, 0x3fd2a598UL, 0xd219b2c3UL, 0xbcfa1d84UL, 0x6baa7c00UL,
+ 0x3fd28651UL, 0xfd9abec1UL, 0x3d1be6d3UL, 0x94028800UL, 0x3fd2672dUL,
+ 0xe289a455UL, 0xbd1ede5eUL, 0x78b86400UL, 0x3fd2482cUL, 0x6734d179UL,
+ 0x3d1fe79bUL, 0xcca3c800UL, 0x3fd2294dUL, 0x981a40b8UL, 0xbced34eaUL,
+ 0x439c5000UL, 0x3fd20a91UL, 0xcc392737UL, 0xbd1a9cc3UL, 0x92752c00UL,
+ 0x3fd1ebf6UL, 0x03c9afe7UL, 0x3d1e98f8UL, 0x6ef8dc00UL, 0x3fd1cd7dUL,
+ 0x71dae7f4UL, 0x3d08a86cUL, 0x8fe4dc00UL, 0x3fd1af25UL, 0xee9185a1UL,
+ 0xbcff3412UL, 0xace59400UL, 0x3fd190eeUL, 0xc2cab353UL, 0x3cf17ed9UL,
+ 0x7e925000UL, 0x3fd172d8UL, 0x6952c1b2UL, 0x3cf1521cUL, 0xbe694400UL,
+ 0x3fd154e2UL, 0xcacb79caUL, 0xbd0bdc78UL, 0x26cbac00UL, 0x3fd1370dUL,
+ 0xf71f4de1UL, 0xbd01f8beUL, 0x72fa0800UL, 0x3fd11957UL, 0x55bf910bUL,
+ 0x3c946e2bUL, 0x5f106000UL, 0x3fd0fbc1UL, 0x39e639c1UL, 0x3d14a84bUL,
+ 0xa802a800UL, 0x3fd0de4aUL, 0xd3f31d5dUL, 0xbd178385UL, 0x0b992000UL,
+ 0x3fd0c0f3UL, 0x3843106fUL, 0xbd1f602fUL, 0x486ce800UL, 0x3fd0a3baUL,
+ 0x8819497cUL, 0x3cef987aUL, 0x1de49400UL, 0x3fd086a0UL, 0x1caa0467UL,
+ 0x3d0faec7UL, 0x4c30cc00UL, 0x3fd069a4UL, 0xa4424372UL, 0xbd1618fcUL,
+ 0x94490000UL, 0x3fd04cc6UL, 0x946517d2UL, 0xbd18384bUL, 0xb7e84000UL,
+ 0x3fd03006UL, 0xe0109c37UL, 0xbd19a6acUL, 0x798a0c00UL, 0x3fd01364UL,
+ 0x5121e864UL, 0xbd164cf7UL, 0x38ce8000UL, 0x3fcfedbfUL, 0x46214d1aUL,
+ 0xbcbbc402UL, 0xc8e62000UL, 0x3fcfb4efUL, 0xdab93203UL, 0x3d1e0176UL,
+ 0x2cb02800UL, 0x3fcf7c5aUL, 0x2a2ea8e4UL, 0xbcfec86aUL, 0xeeeaa000UL,
+ 0x3fcf43fdUL, 0xc18e49a4UL, 0x3cf110a8UL, 0x9bb6e800UL, 0x3fcf0bdaUL,
+ 0x923cc9c0UL, 0xbd15ce99UL, 0xc093f000UL, 0x3fced3efUL, 0x4d4b51e9UL,
+ 0x3d1a04c7UL, 0xec58f800UL, 0x3fce9c3cUL, 0x163cad59UL, 0x3cac8260UL,
+ 0x9a907000UL, 0x3fce2d7dUL, 0x3fa93646UL, 0x3ce4a1c0UL, 0x37311000UL,
+ 0x3fcdbf99UL, 0x32abd1fdUL, 0x3d07ea9dUL, 0x6744b800UL, 0x3fcd528cUL,
+ 0x4dcbdfd4UL, 0xbd1b08e2UL, 0xe36de800UL, 0x3fcce653UL, 0x0b7b7f7fUL,
+ 0xbd1b8f03UL, 0x77506800UL, 0x3fcc7aecUL, 0xa821c9fbUL, 0x3d13c163UL,
+ 0x00ff8800UL, 0x3fcc1053UL, 0x536bca76UL, 0xbd074ee5UL, 0x70719800UL,
+ 0x3fcba684UL, 0xd7da9b6bUL, 0xbd1fbf16UL, 0xc6f8d800UL, 0x3fcb3d7dUL,
+ 0xe2220bb3UL, 0x3d1a295dUL, 0x16c15800UL, 0x3fcad53cUL, 0xe724911eUL,
+ 0xbcf55822UL, 0x82533800UL, 0x3fca6dbcUL, 0x6d982371UL, 0x3cac567cUL,
+ 0x3c19e800UL, 0x3fca06fcUL, 0x84d17d80UL, 0x3d1da204UL, 0x85ef8000UL,
+ 0x3fc9a0f8UL, 0x54466a6aUL, 0xbd002204UL, 0xb0ac2000UL, 0x3fc93baeUL,
+ 0xd601fd65UL, 0x3d18840cUL, 0x1bb9b000UL, 0x3fc8d71cUL, 0x7bf58766UL,
+ 0xbd14f897UL, 0x34aae800UL, 0x3fc8733eUL, 0x3af6ac24UL, 0xbd0f5c45UL,
+ 0x76d68000UL, 0x3fc81012UL, 0x4303e1a1UL, 0xbd1f9a80UL, 0x6af57800UL,
+ 0x3fc7ad96UL, 0x43fbcb46UL, 0x3cf4c33eUL, 0xa6c51000UL, 0x3fc74bc7UL,
+ 0x70f0eac5UL, 0xbd192e3bUL, 0xccab9800UL, 0x3fc6eaa3UL, 0xc0093dfeUL,
+ 0xbd0faf15UL, 0x8b60b800UL, 0x3fc68a28UL, 0xde78d5fdUL, 0xbc9ea4eeUL,
+ 0x9d987000UL, 0x3fc62a53UL, 0x962bea6eUL, 0xbd194084UL, 0xc9b0e800UL,
+ 0x3fc5cb22UL, 0x888dd999UL, 0x3d1fe201UL, 0xe1634800UL, 0x3fc56c93UL,
+ 0x16ada7adUL, 0x3d1b1188UL, 0xc176c000UL, 0x3fc50ea4UL, 0x4159b5b5UL,
+ 0xbcf09c08UL, 0x51766000UL, 0x3fc4b153UL, 0x84393d23UL, 0xbcf6a89cUL,
+ 0x83695000UL, 0x3fc4549dUL, 0x9f0b8bbbUL, 0x3d1c4b8cUL, 0x538d5800UL,
+ 0x3fc3f881UL, 0xf49df747UL, 0x3cf89b99UL, 0xc8138000UL, 0x3fc39cfcUL,
+ 0xd503b834UL, 0xbd13b99fUL, 0xf0df0800UL, 0x3fc3420dUL, 0xf011b386UL,
+ 0xbd05d8beUL, 0xe7466800UL, 0x3fc2e7b2UL, 0xf39c7bc2UL, 0xbd1bb94eUL,
+ 0xcdd62800UL, 0x3fc28de9UL, 0x05e6d69bUL, 0xbd10ed05UL, 0xd015d800UL,
+ 0x3fc234b0UL, 0xe29b6c9dUL, 0xbd1ff967UL, 0x224ea800UL, 0x3fc1dc06UL,
+ 0x727711fcUL, 0xbcffb30dUL, 0x01540000UL, 0x3fc183e8UL, 0x39786c5aUL,
+ 0x3cc23f57UL, 0xb24d9800UL, 0x3fc12c54UL, 0xc905a342UL, 0x3d003a1dUL,
+ 0x82835800UL, 0x3fc0d54aUL, 0x9b9920c0UL, 0x3d03b25aUL, 0xc72ac000UL,
+ 0x3fc07ec7UL, 0x46f26a24UL, 0x3cf0fa41UL, 0xdd35d800UL, 0x3fc028caUL,
+ 0x41d9d6dcUL, 0x3d034a65UL, 0x52474000UL, 0x3fbfa6a4UL, 0x44f66449UL,
+ 0x3d19cad3UL, 0x2da3d000UL, 0x3fbefcb8UL, 0x67832999UL, 0x3d18400fUL,
+ 0x32a10000UL, 0x3fbe53ceUL, 0x9c0e3b1aUL, 0xbcff62fdUL, 0x556b7000UL,
+ 0x3fbdabe3UL, 0x02976913UL, 0xbcf8243bUL, 0x97e88000UL, 0x3fbd04f4UL,
+ 0xec793797UL, 0x3d1c0578UL, 0x09647000UL, 0x3fbc5effUL, 0x05fc0565UL,
+ 0xbd1d799eUL, 0xc6426000UL, 0x3fbbb9ffUL, 0x4625f5edUL, 0x3d1f5723UL,
+ 0xf7afd000UL, 0x3fbb15f3UL, 0xdd5aae61UL, 0xbd1a7e1eUL, 0xd358b000UL,
+ 0x3fba72d8UL, 0x3314e4d3UL, 0x3d17bc91UL, 0x9b1f5000UL, 0x3fb9d0abUL,
+ 0x9a4d514bUL, 0x3cf18c9bUL, 0x9cd4e000UL, 0x3fb92f69UL, 0x7e4496abUL,
+ 0x3cf1f96dUL, 0x31f4f000UL, 0x3fb88f10UL, 0xf56479e7UL, 0x3d165818UL,
+ 0xbf628000UL, 0x3fb7ef9cUL, 0x26bf486dUL, 0xbd1113a6UL, 0xb526b000UL,
+ 0x3fb7510cUL, 0x1a1c3384UL, 0x3ca9898dUL, 0x8e31e000UL, 0x3fb6b35dUL,
+ 0xb3875361UL, 0xbd0661acUL, 0xd01de000UL, 0x3fb6168cUL, 0x2a7cacfaUL,
+ 0xbd1bdf10UL, 0x0af23000UL, 0x3fb57a98UL, 0xff868816UL, 0x3cf046d0UL,
+ 0xd8ea0000UL, 0x3fb4df7cUL, 0x1515fbe7UL, 0xbd1fd529UL, 0xde3b2000UL,
+ 0x3fb44538UL, 0x6e59a132UL, 0x3d1faeeeUL, 0xc8df9000UL, 0x3fb3abc9UL,
+ 0xf1322361UL, 0xbd198807UL, 0x505f1000UL, 0x3fb3132dUL, 0x0888e6abUL,
+ 0x3d1e5380UL, 0x359bd000UL, 0x3fb27b61UL, 0xdfbcbb22UL, 0xbcfe2724UL,
+ 0x429ee000UL, 0x3fb1e463UL, 0x6eb4c58cUL, 0xbcfe4dd6UL, 0x4a673000UL,
+ 0x3fb14e31UL, 0x4ce1ac9bUL, 0x3d1ba691UL, 0x28b96000UL, 0x3fb0b8c9UL,
+ 0x8c7813b8UL, 0xbd0b3872UL, 0xc1f08000UL, 0x3fb02428UL, 0xc2bc8c2cUL,
+ 0x3cb5ea6bUL, 0x05a1a000UL, 0x3faf209cUL, 0x72e8f18eUL, 0xbce8df84UL,
+ 0xc0b5e000UL, 0x3fadfa6dUL, 0x9fdef436UL, 0x3d087364UL, 0xaf416000UL,
+ 0x3facd5c2UL, 0x1068c3a9UL, 0x3d0827e7UL, 0xdb356000UL, 0x3fabb296UL,
+ 0x120a34d3UL, 0x3d101a9fUL, 0x5dfea000UL, 0x3faa90e6UL, 0xdaded264UL,
+ 0xbd14c392UL, 0x6034c000UL, 0x3fa970adUL, 0x1c9d06a9UL, 0xbd1b705eUL,
+ 0x194c6000UL, 0x3fa851e8UL, 0x83996ad9UL, 0xbd0117bcUL, 0xcf4ac000UL,
+ 0x3fa73492UL, 0xb1a94a62UL, 0xbca5ea42UL, 0xd67b4000UL, 0x3fa618a9UL,
+ 0x75aed8caUL, 0xbd07119bUL, 0x9126c000UL, 0x3fa4fe29UL, 0x5291d533UL,
+ 0x3d12658fUL, 0x6f4d4000UL, 0x3fa3e50eUL, 0xcd2c5cd9UL, 0x3d1d5c70UL,
+ 0xee608000UL, 0x3fa2cd54UL, 0xd1008489UL, 0x3d1a4802UL, 0x9900e000UL,
+ 0x3fa1b6f9UL, 0x54fb5598UL, 0xbd16593fUL, 0x06bb6000UL, 0x3fa0a1f9UL,
+ 0x64ef57b4UL, 0xbd17636bUL, 0xb7940000UL, 0x3f9f1c9fUL, 0xee6a4737UL,
+ 0x3cb5d479UL, 0x91aa0000UL, 0x3f9cf7f5UL, 0x3a16373cUL, 0x3d087114UL,
+ 0x156b8000UL, 0x3f9ad5edUL, 0x836c554aUL, 0x3c6900b0UL, 0xd4764000UL,
+ 0x3f98b67fUL, 0xed12f17bUL, 0xbcffc974UL, 0x77dec000UL, 0x3f9699a7UL,
+ 0x232ce7eaUL, 0x3d1e35bbUL, 0xbfbf4000UL, 0x3f947f5dUL, 0xd84ffa6eUL,
+ 0x3d0e0a49UL, 0x82c7c000UL, 0x3f92679cUL, 0x8d170e90UL, 0xbd14d9f2UL,
+ 0xadd20000UL, 0x3f90525dUL, 0x86d9f88eUL, 0x3cdeb986UL, 0x86f10000UL,
+ 0x3f8c7f36UL, 0xb9e0a517UL, 0x3ce29faaUL, 0xb75c8000UL, 0x3f885e9eUL,
+ 0x542568cbUL, 0xbd1f7bdbUL, 0x46b30000UL, 0x3f8442e8UL, 0xb954e7d9UL,
+ 0x3d1e5287UL, 0xb7e60000UL, 0x3f802c07UL, 0x22da0b17UL, 0xbd19fb27UL,
+ 0x6c8b0000UL, 0x3f7833e3UL, 0x821271efUL, 0xbd190f96UL, 0x29910000UL,
+ 0x3f701936UL, 0xbc3491a5UL, 0xbd1bcf45UL, 0x354a0000UL, 0x3f600fe3UL,
+ 0xc0ff520aUL, 0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL
+};
+
+ALIGNED_(16) juint _log2_log10[] =
+{
+ 0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL
+};
+
+ALIGNED_(16) juint _coeff_log10[] =
+{
+ 0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL, 0x385593b1UL,
+ 0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL,
+ 0xdc77b115UL, 0xbff27af2UL
+};
+
+// Registers:
+// input: xmm0
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, tmp - r11
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r11) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, B1_2, B1_3, B1_4, B1_5, start;
+
+ assert_different_registers(r11, eax, ecx, edx);
+
+ address HIGHSIGMASK = (address)_HIGHSIGMASK_log10;
+ address LOG10_E = (address)_LOG10_E;
+ address L_tbl = (address)_L_tbl_log10;
+ address log2 = (address)_log2_log10;
+ address coeff = (address)_coeff_log10;
+
+ bind(start);
+ subq(rsp, 24);
+ movsd(Address(rsp, 0), xmm0);
+
+ bind(B1_2);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movl(ecx, 1054736384);
+ movdl(xmm7, ecx);
+ xorpd(xmm3, xmm3);
+ movl(edx, 30704);
+ pinsrw(xmm3, edx, 3);
+ movdqu(xmm1, xmm0);
+ movl(edx, 32768);
+ movdl(xmm4, edx);
+ movdqu(xmm5, ExternalAddress(HIGHSIGMASK)); //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xffffe000UL
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 16352);
+ psrlq(xmm0, 27);
+ movdqu(xmm2, ExternalAddress(LOG10_E)); //0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 78);
+ psrlq(xmm1, 12);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ mulss(xmm0, xmm7);
+ por(xmm1, xmm3);
+ lea(r11, ExternalAddress(L_tbl));
+ andpd(xmm5, xmm1);
+ paddd(xmm0, xmm4);
+ subsd(xmm1, xmm5);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ andpd(xmm0, xmm6);
+ andl(eax, 32752);
+ subl(eax, ecx);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ mulsd(xmm1, xmm0);
+ movq(xmm6, ExternalAddress(log2)); //0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL
+ movdqu(xmm3, ExternalAddress(coeff)); //0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL
+ subsd(xmm5, xmm2);
+ andl(edx, 16711680);
+ shrl(edx, 12);
+ movdqu(xmm0, Address(r11, rdx, Address::times_1, -1504));
+ movdqu(xmm4, ExternalAddress(16 + coeff)); //0x385593b1UL, 0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL
+ addsd(xmm1, xmm5);
+ movdqu(xmm2, ExternalAddress(32 + coeff)); //0x7f9d3aa1UL, 0x4016ab9fUL, 0xdc77b115UL, 0xbff27af2UL
+ mulsd(xmm6, xmm7);
+ pshufd(xmm5, xmm1, 68);
+ mulsd(xmm7, ExternalAddress(8 + log2)); //0x1f12b358UL, 0x3cdfef31UL
+ mulsd(xmm3, xmm1);
+ addsd(xmm0, xmm6);
+ mulpd(xmm4, xmm5);
+ movq(xmm6, ExternalAddress(8 + LOG10_E)); //0xbf2e4108UL, 0x3f5a7a6cUL
+ mulpd(xmm5, xmm5);
+ addpd(xmm4, xmm2);
+ mulpd(xmm3, xmm5);
+ pshufd(xmm2, xmm0, 228);
+ addsd(xmm0, xmm1);
+ mulsd(xmm4, xmm1);
+ subsd(xmm2, xmm0);
+ mulsd(xmm6, xmm1);
+ addsd(xmm1, xmm2);
+ pshufd(xmm2, xmm0, 238);
+ mulsd(xmm5, xmm5);
+ addsd(xmm7, xmm2);
+ addsd(xmm1, xmm6);
+ addpd(xmm4, xmm3);
+ addsd(xmm1, xmm7);
+ mulpd(xmm4, xmm5);
+ addsd(xmm1, xmm4);
+ pshufd(xmm5, xmm4, 238);
+ addsd(xmm1, xmm5);
+ addsd(xmm0, xmm1);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movq(xmm0, Address(rsp, 0));
+ movq(xmm1, Address(rsp, 0));
+ addl(eax, 16);
+ cmpl(eax, 32768);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_2_0_2);
+ cmpl(eax, 16);
+ jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ addsd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::above, L_2TAG_PACKET_4_0_2);
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ xorpd(xmm1, xmm1);
+ addsd(xmm1, xmm0);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 18416);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm1, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psrlq(xmm0, 27);
+ movdqu(xmm2, ExternalAddress(LOG10_E)); //0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 78);
+ psrlq(xmm1, 12);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ addl(ecx, ecx);
+ cmpl(ecx, -2097152);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ movl(Address(rsp, 16), 9);
+ jmp(L_2TAG_PACKET_8_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 49136);
+ pinsrw(xmm0, eax, 3);
+ divsd(xmm0, xmm1);
+ movl(Address(rsp, 16), 8);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ movq(Address(rsp, 8), xmm0);
+
+ bind(B1_3);
+ movq(xmm0, Address(rsp, 8));
+
+ bind(L_2TAG_PACKET_9_0_2);
+
+ bind(B1_5);
+ addq(rsp, 24);
+
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _static_const_table_log10[] =
+{
+ 0x509f7800UL, 0x3fd34413UL, 0x1f12b358UL, 0x3d1fef31UL, 0x80333400UL,
+ 0x3fd32418UL, 0xc671d9d0UL, 0xbcf542bfUL, 0x51195000UL, 0x3fd30442UL,
+ 0x78a4b0c3UL, 0x3d18216aUL, 0x6fc79400UL, 0x3fd2e490UL, 0x80fa389dUL,
+ 0xbc902869UL, 0x89d04000UL, 0x3fd2c502UL, 0x75c2f564UL, 0x3d040754UL,
+ 0x4ddd1c00UL, 0x3fd2a598UL, 0xd219b2c3UL, 0xbcfa1d84UL, 0x6baa7c00UL,
+ 0x3fd28651UL, 0xfd9abec1UL, 0x3d1be6d3UL, 0x94028800UL, 0x3fd2672dUL,
+ 0xe289a455UL, 0xbd1ede5eUL, 0x78b86400UL, 0x3fd2482cUL, 0x6734d179UL,
+ 0x3d1fe79bUL, 0xcca3c800UL, 0x3fd2294dUL, 0x981a40b8UL, 0xbced34eaUL,
+ 0x439c5000UL, 0x3fd20a91UL, 0xcc392737UL, 0xbd1a9cc3UL, 0x92752c00UL,
+ 0x3fd1ebf6UL, 0x03c9afe7UL, 0x3d1e98f8UL, 0x6ef8dc00UL, 0x3fd1cd7dUL,
+ 0x71dae7f4UL, 0x3d08a86cUL, 0x8fe4dc00UL, 0x3fd1af25UL, 0xee9185a1UL,
+ 0xbcff3412UL, 0xace59400UL, 0x3fd190eeUL, 0xc2cab353UL, 0x3cf17ed9UL,
+ 0x7e925000UL, 0x3fd172d8UL, 0x6952c1b2UL, 0x3cf1521cUL, 0xbe694400UL,
+ 0x3fd154e2UL, 0xcacb79caUL, 0xbd0bdc78UL, 0x26cbac00UL, 0x3fd1370dUL,
+ 0xf71f4de1UL, 0xbd01f8beUL, 0x72fa0800UL, 0x3fd11957UL, 0x55bf910bUL,
+ 0x3c946e2bUL, 0x5f106000UL, 0x3fd0fbc1UL, 0x39e639c1UL, 0x3d14a84bUL,
+ 0xa802a800UL, 0x3fd0de4aUL, 0xd3f31d5dUL, 0xbd178385UL, 0x0b992000UL,
+ 0x3fd0c0f3UL, 0x3843106fUL, 0xbd1f602fUL, 0x486ce800UL, 0x3fd0a3baUL,
+ 0x8819497cUL, 0x3cef987aUL, 0x1de49400UL, 0x3fd086a0UL, 0x1caa0467UL,
+ 0x3d0faec7UL, 0x4c30cc00UL, 0x3fd069a4UL, 0xa4424372UL, 0xbd1618fcUL,
+ 0x94490000UL, 0x3fd04cc6UL, 0x946517d2UL, 0xbd18384bUL, 0xb7e84000UL,
+ 0x3fd03006UL, 0xe0109c37UL, 0xbd19a6acUL, 0x798a0c00UL, 0x3fd01364UL,
+ 0x5121e864UL, 0xbd164cf7UL, 0x38ce8000UL, 0x3fcfedbfUL, 0x46214d1aUL,
+ 0xbcbbc402UL, 0xc8e62000UL, 0x3fcfb4efUL, 0xdab93203UL, 0x3d1e0176UL,
+ 0x2cb02800UL, 0x3fcf7c5aUL, 0x2a2ea8e4UL, 0xbcfec86aUL, 0xeeeaa000UL,
+ 0x3fcf43fdUL, 0xc18e49a4UL, 0x3cf110a8UL, 0x9bb6e800UL, 0x3fcf0bdaUL,
+ 0x923cc9c0UL, 0xbd15ce99UL, 0xc093f000UL, 0x3fced3efUL, 0x4d4b51e9UL,
+ 0x3d1a04c7UL, 0xec58f800UL, 0x3fce9c3cUL, 0x163cad59UL, 0x3cac8260UL,
+ 0x9a907000UL, 0x3fce2d7dUL, 0x3fa93646UL, 0x3ce4a1c0UL, 0x37311000UL,
+ 0x3fcdbf99UL, 0x32abd1fdUL, 0x3d07ea9dUL, 0x6744b800UL, 0x3fcd528cUL,
+ 0x4dcbdfd4UL, 0xbd1b08e2UL, 0xe36de800UL, 0x3fcce653UL, 0x0b7b7f7fUL,
+ 0xbd1b8f03UL, 0x77506800UL, 0x3fcc7aecUL, 0xa821c9fbUL, 0x3d13c163UL,
+ 0x00ff8800UL, 0x3fcc1053UL, 0x536bca76UL, 0xbd074ee5UL, 0x70719800UL,
+ 0x3fcba684UL, 0xd7da9b6bUL, 0xbd1fbf16UL, 0xc6f8d800UL, 0x3fcb3d7dUL,
+ 0xe2220bb3UL, 0x3d1a295dUL, 0x16c15800UL, 0x3fcad53cUL, 0xe724911eUL,
+ 0xbcf55822UL, 0x82533800UL, 0x3fca6dbcUL, 0x6d982371UL, 0x3cac567cUL,
+ 0x3c19e800UL, 0x3fca06fcUL, 0x84d17d80UL, 0x3d1da204UL, 0x85ef8000UL,
+ 0x3fc9a0f8UL, 0x54466a6aUL, 0xbd002204UL, 0xb0ac2000UL, 0x3fc93baeUL,
+ 0xd601fd65UL, 0x3d18840cUL, 0x1bb9b000UL, 0x3fc8d71cUL, 0x7bf58766UL,
+ 0xbd14f897UL, 0x34aae800UL, 0x3fc8733eUL, 0x3af6ac24UL, 0xbd0f5c45UL,
+ 0x76d68000UL, 0x3fc81012UL, 0x4303e1a1UL, 0xbd1f9a80UL, 0x6af57800UL,
+ 0x3fc7ad96UL, 0x43fbcb46UL, 0x3cf4c33eUL, 0xa6c51000UL, 0x3fc74bc7UL,
+ 0x70f0eac5UL, 0xbd192e3bUL, 0xccab9800UL, 0x3fc6eaa3UL, 0xc0093dfeUL,
+ 0xbd0faf15UL, 0x8b60b800UL, 0x3fc68a28UL, 0xde78d5fdUL, 0xbc9ea4eeUL,
+ 0x9d987000UL, 0x3fc62a53UL, 0x962bea6eUL, 0xbd194084UL, 0xc9b0e800UL,
+ 0x3fc5cb22UL, 0x888dd999UL, 0x3d1fe201UL, 0xe1634800UL, 0x3fc56c93UL,
+ 0x16ada7adUL, 0x3d1b1188UL, 0xc176c000UL, 0x3fc50ea4UL, 0x4159b5b5UL,
+ 0xbcf09c08UL, 0x51766000UL, 0x3fc4b153UL, 0x84393d23UL, 0xbcf6a89cUL,
+ 0x83695000UL, 0x3fc4549dUL, 0x9f0b8bbbUL, 0x3d1c4b8cUL, 0x538d5800UL,
+ 0x3fc3f881UL, 0xf49df747UL, 0x3cf89b99UL, 0xc8138000UL, 0x3fc39cfcUL,
+ 0xd503b834UL, 0xbd13b99fUL, 0xf0df0800UL, 0x3fc3420dUL, 0xf011b386UL,
+ 0xbd05d8beUL, 0xe7466800UL, 0x3fc2e7b2UL, 0xf39c7bc2UL, 0xbd1bb94eUL,
+ 0xcdd62800UL, 0x3fc28de9UL, 0x05e6d69bUL, 0xbd10ed05UL, 0xd015d800UL,
+ 0x3fc234b0UL, 0xe29b6c9dUL, 0xbd1ff967UL, 0x224ea800UL, 0x3fc1dc06UL,
+ 0x727711fcUL, 0xbcffb30dUL, 0x01540000UL, 0x3fc183e8UL, 0x39786c5aUL,
+ 0x3cc23f57UL, 0xb24d9800UL, 0x3fc12c54UL, 0xc905a342UL, 0x3d003a1dUL,
+ 0x82835800UL, 0x3fc0d54aUL, 0x9b9920c0UL, 0x3d03b25aUL, 0xc72ac000UL,
+ 0x3fc07ec7UL, 0x46f26a24UL, 0x3cf0fa41UL, 0xdd35d800UL, 0x3fc028caUL,
+ 0x41d9d6dcUL, 0x3d034a65UL, 0x52474000UL, 0x3fbfa6a4UL, 0x44f66449UL,
+ 0x3d19cad3UL, 0x2da3d000UL, 0x3fbefcb8UL, 0x67832999UL, 0x3d18400fUL,
+ 0x32a10000UL, 0x3fbe53ceUL, 0x9c0e3b1aUL, 0xbcff62fdUL, 0x556b7000UL,
+ 0x3fbdabe3UL, 0x02976913UL, 0xbcf8243bUL, 0x97e88000UL, 0x3fbd04f4UL,
+ 0xec793797UL, 0x3d1c0578UL, 0x09647000UL, 0x3fbc5effUL, 0x05fc0565UL,
+ 0xbd1d799eUL, 0xc6426000UL, 0x3fbbb9ffUL, 0x4625f5edUL, 0x3d1f5723UL,
+ 0xf7afd000UL, 0x3fbb15f3UL, 0xdd5aae61UL, 0xbd1a7e1eUL, 0xd358b000UL,
+ 0x3fba72d8UL, 0x3314e4d3UL, 0x3d17bc91UL, 0x9b1f5000UL, 0x3fb9d0abUL,
+ 0x9a4d514bUL, 0x3cf18c9bUL, 0x9cd4e000UL, 0x3fb92f69UL, 0x7e4496abUL,
+ 0x3cf1f96dUL, 0x31f4f000UL, 0x3fb88f10UL, 0xf56479e7UL, 0x3d165818UL,
+ 0xbf628000UL, 0x3fb7ef9cUL, 0x26bf486dUL, 0xbd1113a6UL, 0xb526b000UL,
+ 0x3fb7510cUL, 0x1a1c3384UL, 0x3ca9898dUL, 0x8e31e000UL, 0x3fb6b35dUL,
+ 0xb3875361UL, 0xbd0661acUL, 0xd01de000UL, 0x3fb6168cUL, 0x2a7cacfaUL,
+ 0xbd1bdf10UL, 0x0af23000UL, 0x3fb57a98UL, 0xff868816UL, 0x3cf046d0UL,
+ 0xd8ea0000UL, 0x3fb4df7cUL, 0x1515fbe7UL, 0xbd1fd529UL, 0xde3b2000UL,
+ 0x3fb44538UL, 0x6e59a132UL, 0x3d1faeeeUL, 0xc8df9000UL, 0x3fb3abc9UL,
+ 0xf1322361UL, 0xbd198807UL, 0x505f1000UL, 0x3fb3132dUL, 0x0888e6abUL,
+ 0x3d1e5380UL, 0x359bd000UL, 0x3fb27b61UL, 0xdfbcbb22UL, 0xbcfe2724UL,
+ 0x429ee000UL, 0x3fb1e463UL, 0x6eb4c58cUL, 0xbcfe4dd6UL, 0x4a673000UL,
+ 0x3fb14e31UL, 0x4ce1ac9bUL, 0x3d1ba691UL, 0x28b96000UL, 0x3fb0b8c9UL,
+ 0x8c7813b8UL, 0xbd0b3872UL, 0xc1f08000UL, 0x3fb02428UL, 0xc2bc8c2cUL,
+ 0x3cb5ea6bUL, 0x05a1a000UL, 0x3faf209cUL, 0x72e8f18eUL, 0xbce8df84UL,
+ 0xc0b5e000UL, 0x3fadfa6dUL, 0x9fdef436UL, 0x3d087364UL, 0xaf416000UL,
+ 0x3facd5c2UL, 0x1068c3a9UL, 0x3d0827e7UL, 0xdb356000UL, 0x3fabb296UL,
+ 0x120a34d3UL, 0x3d101a9fUL, 0x5dfea000UL, 0x3faa90e6UL, 0xdaded264UL,
+ 0xbd14c392UL, 0x6034c000UL, 0x3fa970adUL, 0x1c9d06a9UL, 0xbd1b705eUL,
+ 0x194c6000UL, 0x3fa851e8UL, 0x83996ad9UL, 0xbd0117bcUL, 0xcf4ac000UL,
+ 0x3fa73492UL, 0xb1a94a62UL, 0xbca5ea42UL, 0xd67b4000UL, 0x3fa618a9UL,
+ 0x75aed8caUL, 0xbd07119bUL, 0x9126c000UL, 0x3fa4fe29UL, 0x5291d533UL,
+ 0x3d12658fUL, 0x6f4d4000UL, 0x3fa3e50eUL, 0xcd2c5cd9UL, 0x3d1d5c70UL,
+ 0xee608000UL, 0x3fa2cd54UL, 0xd1008489UL, 0x3d1a4802UL, 0x9900e000UL,
+ 0x3fa1b6f9UL, 0x54fb5598UL, 0xbd16593fUL, 0x06bb6000UL, 0x3fa0a1f9UL,
+ 0x64ef57b4UL, 0xbd17636bUL, 0xb7940000UL, 0x3f9f1c9fUL, 0xee6a4737UL,
+ 0x3cb5d479UL, 0x91aa0000UL, 0x3f9cf7f5UL, 0x3a16373cUL, 0x3d087114UL,
+ 0x156b8000UL, 0x3f9ad5edUL, 0x836c554aUL, 0x3c6900b0UL, 0xd4764000UL,
+ 0x3f98b67fUL, 0xed12f17bUL, 0xbcffc974UL, 0x77dec000UL, 0x3f9699a7UL,
+ 0x232ce7eaUL, 0x3d1e35bbUL, 0xbfbf4000UL, 0x3f947f5dUL, 0xd84ffa6eUL,
+ 0x3d0e0a49UL, 0x82c7c000UL, 0x3f92679cUL, 0x8d170e90UL, 0xbd14d9f2UL,
+ 0xadd20000UL, 0x3f90525dUL, 0x86d9f88eUL, 0x3cdeb986UL, 0x86f10000UL,
+ 0x3f8c7f36UL, 0xb9e0a517UL, 0x3ce29faaUL, 0xb75c8000UL, 0x3f885e9eUL,
+ 0x542568cbUL, 0xbd1f7bdbUL, 0x46b30000UL, 0x3f8442e8UL, 0xb954e7d9UL,
+ 0x3d1e5287UL, 0xb7e60000UL, 0x3f802c07UL, 0x22da0b17UL, 0xbd19fb27UL,
+ 0x6c8b0000UL, 0x3f7833e3UL, 0x821271efUL, 0xbd190f96UL, 0x29910000UL,
+ 0x3f701936UL, 0xbc3491a5UL, 0xbd1bcf45UL, 0x354a0000UL, 0x3f600fe3UL,
+ 0xc0ff520aUL, 0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x509f7800UL, 0x3f934413UL, 0x1f12b358UL, 0x3cdfef31UL,
+ 0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL, 0xc0089309UL, 0x385593b1UL,
+ 0xc025c917UL, 0xdc963467UL, 0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL,
+ 0xdc77b115UL, 0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL,
+ 0xffffe000UL, 0x00000000UL, 0x3fdbc000UL, 0xbf2e4108UL, 0x3f5a7a6cUL
+};
+//registers,
+// input: xmm0
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, rbx (tmp)
+
+void MacroAssembler::fast_log10(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+
+ address static_const_table_log10 = (address)_static_const_table_log10;
+
+ bind(start);
+ subl(rsp, 104);
+ movl(Address(rsp, 40), tmp);
+ lea(tmp, ExternalAddress(static_const_table_log10));
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movl(ecx, 1054736384);
+ movdl(xmm7, ecx);
+ xorpd(xmm3, xmm3);
+ movl(edx, 30704);
+ pinsrw(xmm3, edx, 3);
+ movsd(xmm0, Address(rsp, 112));
+ movdqu(xmm1, xmm0);
+ movl(edx, 32768);
+ movdl(xmm4, edx);
+ movdqu(xmm5, Address(tmp, 2128)); //0x3ffc6a02UL, 0x7f9d3aa1UL, 0x4016ab9fUL, 0xdc77b115UL
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 16352);
+ psllq(xmm0, 5);
+ movsd(xmm2, Address(tmp, 2144)); //0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 78);
+ psrlq(xmm1, 12);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ mulss(xmm0, xmm7);
+ por(xmm1, xmm3);
+ andpd(xmm5, xmm1);
+ paddd(xmm0, xmm4);
+ subsd(xmm1, xmm5);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ andpd(xmm0, xmm6);
+ andl(eax, 32752);
+ subl(eax, ecx);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ mulsd(xmm1, xmm0);
+ movsd(xmm6, Address(tmp, 2064)); //0xbd19d71cUL, 0x00000000UL, 0x00000000UL, 0x00000000UL
+ movdqu(xmm3, Address(tmp, 2080)); //0x00000000UL, 0x509f7800UL, 0x3f934413UL, 0x1f12b358UL
+ subsd(xmm5, xmm2);
+ andl(edx, 16711680);
+ shrl(edx, 12);
+ movdqu(xmm0, Address(tmp, edx, Address::times_1, -1504));
+ movdqu(xmm4, Address(tmp, 2096)); //0x3cdfef31UL, 0xc1a5f12eUL, 0x40358874UL, 0x64d4ef0dUL
+ addsd(xmm1, xmm5);
+ movdqu(xmm2, Address(tmp, 2112)); //0xc0089309UL, 0x385593b1UL, 0xc025c917UL, 0xdc963467UL
+ mulsd(xmm6, xmm7);
+ pshufd(xmm5, xmm1, 68);
+ mulsd(xmm7, Address(tmp, 2072)); //0x00000000UL, 0x00000000UL, 0x00000000UL, 0x509f7800UL
+ mulsd(xmm3, xmm1);
+ addsd(xmm0, xmm6);
+ mulpd(xmm4, xmm5);
+ movsd(xmm6, Address(tmp, 2152)); //0xffffffffUL, 0x00000000UL, 0xffffe000UL, 0x00000000UL
+ mulpd(xmm5, xmm5);
+ addpd(xmm4, xmm2);
+ mulpd(xmm3, xmm5);
+ pshufd(xmm2, xmm0, 228);
+ addsd(xmm0, xmm1);
+ mulsd(xmm4, xmm1);
+ subsd(xmm2, xmm0);
+ mulsd(xmm6, xmm1);
+ addsd(xmm1, xmm2);
+ pshufd(xmm2, xmm0, 238);
+ mulsd(xmm5, xmm5);
+ addsd(xmm7, xmm2);
+ addsd(xmm1, xmm6);
+ addpd(xmm4, xmm3);
+ addsd(xmm1, xmm7);
+ mulpd(xmm4, xmm5);
+ addsd(xmm1, xmm4);
+ pshufd(xmm5, xmm4, 238);
+ addsd(xmm1, xmm5);
+ addsd(xmm0, xmm1);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ movsd(xmm0, Address(rsp, 112)); //0xbcfa1d84UL, 0x6baa7c00UL, 0x3fd28651UL, 0xfd9abec1UL
+ movdqu(xmm1, xmm0);
+ addl(eax, 16);
+ cmpl(eax, 32768);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_3_0_2);
+ cmpl(eax, 16);
+ jcc(Assembler::below, L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ addsd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_2_0_2);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
+ cmpl(edx, 0);
+ jcc(Assembler::above, L_2TAG_PACKET_5_0_2);
+ jmp(L_2TAG_PACKET_7_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ addl(ecx, ecx);
+ cmpl(ecx, -2097152);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_6_0_2);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ movl(edx, 9);
+ mulsd(xmm0, xmm1);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ movsd(xmm0, Address(rsp, 112)); //0xbcfa1d84UL, 0x6baa7c00UL, 0x3fd28651UL, 0xfd9abec1UL
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_10_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ xorpd(xmm1, xmm1);
+ xorpd(xmm0, xmm0);
+ movl(eax, 49136);
+ pinsrw(xmm0, eax, 3);
+ divsd(xmm0, xmm1);
+ movl(edx, 8);
+ jmp(L_2TAG_PACKET_9_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ movdl(edx, xmm1);
+ psrlq(xmm1, 32);
+ movdl(ecx, xmm1);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 18416);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm1, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psllq(xmm0, 5);
+ movsd(xmm2, Address(tmp, 2144)); //0xbff27af2UL, 0xf8000000UL, 0xffffffffUL, 0x00000000UL
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm1, 12);
+ pshufd(xmm6, xmm5, 78);
+ psrlq(xmm1, 12);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movsd(Address(rsp, 24), xmm0);
+ fld_d(Address(rsp, 24));
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movl(tmp, Address(rsp, 40));
+
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_pow.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_pow.cpp
new file mode 100644
index 00000000000..12b38d8c5ef
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_pow.cpp
@@ -0,0 +1,3592 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - POW()
+// ---------------------
+//
+// Let x=2^k * mx, mx in [1,2)
+//
+// log2(x) calculation:
+//
+// Get B~1/mx based on the output of rcpps instruction (B0)
+// B = int((B0*LH*2^9+0.5))/2^9
+// LH is a short approximation for log2(e)
+//
+// Reduced argument, scaled by LH:
+// r=B*mx-LH (computed accurately in high and low parts)
+//
+// log2(x) result: k - log2(B) + p(r)
+// p(r) is a degree 8 polynomial
+// -log2(B) read from data table (high, low parts)
+// log2(x) is formed from high and low parts
+// For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
+// based om the same table design is performed.
+//
+// Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
+// to filter out all potential OF/UF cases.
+// exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
+// polynomial
+//
+// Special cases:
+// pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd
+// integer < 0.
+// pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and
+// not an odd integer.
+// pow(-0,y) = -0 for y an odd integer > 0.
+// pow(-0,y) = +0 for y > 0 and not an odd integer.
+// pow(-1,-INF) = NaN.
+// pow(+1,y) = NaN for any y, even a NaN.
+// pow(x,-0) = 1 for any x, even a NaN.
+// pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
+// finite non-integer y.
+// pow(x,-INF) = +INF for |x|<1.
+// pow(x,-INF) = +0 for |x|>1.
+// pow(x,+INF) = +0 for |x|<1.
+// pow(x,+INF) = +INF for |x|>1.
+// pow(-INF,y) = -0 for y an odd integer < 0.
+// pow(-INF,y) = +0 for y < 0 and not an odd integer.
+// pow(-INF,y) = -INF for y an odd integer > 0.
+// pow(-INF,y) = +INF for y > 0 and not an odd integer.
+// pow(+INF,y) = +0 for y <0.
+// pow(+INF,y) = +INF for y >0.
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _HIGHSIGMASK[] =
+{
+ 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
+};
+
+ALIGNED_(16) juint _LOG2_E[] =
+{
+ 0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+};
+
+ALIGNED_(16) juint _HIGHMASK_Y[] =
+{
+ 0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
+};
+
+ALIGNED_(16) juint _T_exp[] =
+{
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL, 0xfa5abcbfUL,
+ 0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL, 0x3ff0163dUL,
+ 0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL, 0x0fc54eb6UL,
+ 0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL, 0xbc719083UL,
+ 0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL, 0xe86e7f85UL,
+ 0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL, 0x3ff04e5fUL,
+ 0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL, 0xa475b465UL,
+ 0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL, 0xbc95cb7bUL,
+ 0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL, 0x2b72a836UL,
+ 0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL, 0x3ff08745UL,
+ 0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL, 0x800a3fd1UL,
+ 0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL, 0x3c914878UL,
+ 0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL, 0x6cf9890fUL,
+ 0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL, 0x3ff0c0f1UL,
+ 0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL, 0x16e24f71UL,
+ 0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL, 0xbc9bc14dUL,
+ 0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL, 0x5fdfa9c5UL,
+ 0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL, 0x3ff0fb66UL,
+ 0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL, 0x1692fdd5UL,
+ 0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL, 0xbc96c510UL,
+ 0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL, 0xc06c31ccUL,
+ 0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL, 0x3ff136a8UL,
+ 0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL, 0x9af1369eUL,
+ 0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL, 0xbc8b91e8UL,
+ 0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL, 0x5471c3c2UL,
+ 0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL, 0x3ff172b8UL,
+ 0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL, 0xe2ac5a64UL,
+ 0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL, 0xbc911023UL,
+ 0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL, 0xeb6fcb75UL,
+ 0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL, 0x3ff1af99UL,
+ 0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL, 0x352ef607UL,
+ 0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL, 0x3c900977UL,
+ 0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL, 0x5eb44027UL,
+ 0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL, 0x3ff1ed50UL,
+ 0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL, 0xa097af5cUL,
+ 0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL, 0x3c8dc775UL,
+ 0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL, 0x917ddc96UL,
+ 0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL, 0x3ff22bddUL,
+ 0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL, 0xb6c70573UL,
+ 0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL, 0x3c8acfccUL,
+ 0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL, 0x711ece75UL,
+ 0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL, 0x3ff26b45UL,
+ 0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL, 0x05f9e76cUL,
+ 0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL, 0xbc9a4c3aUL,
+ 0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL, 0xf51fdee1UL,
+ 0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL, 0x3ff2ab8aUL,
+ 0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL, 0xd6381aa4UL,
+ 0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL, 0xbc950145UL,
+ 0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL, 0x1f641589UL,
+ 0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL, 0x3ff2ecafUL,
+ 0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL, 0x532bda93UL,
+ 0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL, 0x3c86f46aUL,
+ 0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL, 0xfc4cd831UL,
+ 0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL, 0x3ff32eb8UL,
+ 0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL, 0x843659a6UL,
+ 0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL, 0xbc835a75UL,
+ 0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL, 0xa2de883bUL,
+ 0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL, 0x3ff371a7UL,
+ 0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL, 0x9eceb23cUL,
+ 0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL, 0xbc9e958dUL,
+ 0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL, 0x34e59ff7UL,
+ 0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL, 0x3ff3b57fUL,
+ 0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL, 0x375d29c3UL,
+ 0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL, 0x3c7fe8d0UL,
+ 0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL, 0xdf1c5175UL,
+ 0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL, 0x3ff3fa45UL,
+ 0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL, 0xb6f4d048UL,
+ 0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL, 0xbc5ef369UL,
+ 0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL, 0xd950a897UL,
+ 0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL, 0x3ff43ffaUL,
+ 0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL, 0x04ef80d0UL,
+ 0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL, 0xbc686419UL,
+ 0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL, 0x668b3237UL,
+ 0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL, 0x3ff486a2UL,
+ 0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL, 0x5e499ea0UL,
+ 0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL, 0x3c99cb62UL,
+ 0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL, 0xd5362a27UL,
+ 0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL, 0x3ff4ce41UL,
+ 0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL, 0xbc6a7833UL,
+ 0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL, 0xbc95257dUL,
+ 0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL, 0x7f4531eeUL,
+ 0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL, 0x3ff516daUL,
+ 0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL, 0x43efef71UL,
+ 0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL, 0xbc807abeUL,
+ 0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL, 0xca5d920fUL,
+ 0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL, 0x3ff56070UL,
+ 0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL, 0x011d93adUL,
+ 0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL, 0xbc90b98cUL,
+ 0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL, 0x27ff07ccUL,
+ 0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL, 0x3ff5ab07UL,
+ 0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL, 0x4c233e1aUL,
+ 0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL, 0x3c3c4b1bUL,
+ 0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL, 0x15ad2148UL,
+ 0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL, 0x3ff5f6a3UL,
+ 0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL, 0x9b56de47UL,
+ 0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL, 0x3c9e4b3eUL,
+ 0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL, 0x1d1929fdUL,
+ 0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL, 0x3ff64346UL,
+ 0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL, 0xc9a73e09UL,
+ 0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL, 0xbc9bb609UL,
+ 0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL, 0xd44ca973UL,
+ 0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL, 0x3ff690f4UL,
+ 0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL, 0x13b26456UL,
+ 0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL, 0x3c7a38f5UL,
+ 0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL, 0xddd47645UL,
+ 0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL, 0x3ff6dfb2UL,
+ 0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL, 0x9e1ac8b2UL,
+ 0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL, 0xbc883c0fUL,
+ 0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL, 0xe8ec5f74UL,
+ 0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL, 0x3ff72f82UL,
+ 0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL, 0x6c65d53cUL,
+ 0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL, 0x3c9047fdUL,
+ 0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL, 0xb1ab6e09UL,
+ 0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL, 0x3ff78069UL,
+ 0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL, 0x62aadd3eUL,
+ 0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL, 0xbc841577UL,
+ 0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL, 0x0130c132UL,
+ 0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL, 0x3ff7d26aUL,
+ 0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL, 0xba15797eUL,
+ 0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL, 0xbc807f11UL,
+ 0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL, 0xadd106d9UL,
+ 0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL, 0x3ff82589UL,
+ 0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL, 0x31df2bd5UL,
+ 0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL, 0xbc88d684UL,
+ 0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL, 0x9b4492edUL,
+ 0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL, 0x3ff879caUL,
+ 0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL, 0xf37cb53aUL,
+ 0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL, 0x3c9d5395UL,
+ 0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL, 0xbad61778UL,
+ 0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL, 0x3ff8cf32UL,
+ 0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL, 0x6fc9b2e6UL,
+ 0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL, 0x3c85cc13UL,
+ 0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL, 0x0b91ffc6UL,
+ 0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL, 0x3ff925c3UL,
+ 0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL, 0x81b57ebcUL,
+ 0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL, 0xbc8dc3d6UL,
+ 0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL, 0x9a7670b3UL,
+ 0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL, 0x3ff97d82UL,
+ 0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL, 0xa24c78ecUL,
+ 0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL, 0xbc9173bdUL,
+ 0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL, 0x82a3f090UL,
+ 0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL, 0x3ff9d674UL,
+ 0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL, 0x78e64c6eUL,
+ 0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL, 0xbc84a9ceUL,
+ 0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL, 0xed8eb8bbUL,
+ 0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL, 0x3ffa309bUL,
+ 0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL, 0x589fb120UL,
+ 0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL, 0xbc9d2f6eUL,
+ 0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL, 0x1330b358UL,
+ 0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL, 0x3ffa8bfeUL,
+ 0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL, 0x0ef7fd31UL,
+ 0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL, 0x3c889c31UL,
+ 0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL, 0x3a3c2774UL,
+ 0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL, 0x3ffae89fUL,
+ 0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL, 0x0f315ecdUL,
+ 0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL, 0xbc9bdef5UL,
+ 0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL, 0xb84f15fbUL,
+ 0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL, 0x3ffb4684UL,
+ 0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL, 0xbbba6de3UL,
+ 0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL, 0x3c92a8f3UL,
+ 0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL, 0xf22749e4UL,
+ 0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL, 0x3ffba5b0UL,
+ 0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL, 0xc9696205UL,
+ 0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL, 0x3c823dd0UL,
+ 0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL, 0x5bd71e09UL,
+ 0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL, 0x3ffc0628UL,
+ 0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL, 0x895048ddUL,
+ 0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL, 0xbc96e516UL,
+ 0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL, 0x78fafb22UL,
+ 0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL, 0x3ffc67f1UL,
+ 0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL, 0xbe255559UL,
+ 0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL, 0x3c71acbcUL,
+ 0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL, 0xdcef9069UL,
+ 0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL, 0x3ffccb0fUL,
+ 0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL, 0x53829d72UL,
+ 0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL, 0xbc9a08e9UL,
+ 0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL, 0x2b08c968UL,
+ 0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL, 0x3ffd2f87UL,
+ 0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL, 0xbf5a1614UL,
+ 0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL, 0x3c82ed02UL,
+ 0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL, 0x16c98398UL,
+ 0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL, 0x3ffd955dUL,
+ 0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL, 0x696db532UL,
+ 0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL, 0xbc9b76f1UL,
+ 0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL, 0x641c0658UL,
+ 0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL, 0x3ffdfc97UL,
+ 0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL, 0xbd5c7f44UL,
+ 0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL, 0xbc97b627UL,
+ 0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL, 0xe78b3ff6UL,
+ 0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL, 0x3ffe6539UL,
+ 0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL, 0xca0c8de2UL,
+ 0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL, 0xbc910894UL,
+ 0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL, 0x867cca6eUL,
+ 0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL, 0x3ffecf48UL,
+ 0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL, 0xa487568dUL,
+ 0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL, 0x3c9dc7f4UL,
+ 0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL, 0x376bba97UL,
+ 0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL, 0x3fff3ac9UL,
+ 0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL, 0x2dd8a18bUL,
+ 0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL, 0x3c9fa37bUL,
+ 0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL, 0x02243c89UL,
+ 0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL, 0x3fffa7c1UL,
+ 0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL, 0x15098eb6UL,
+ 0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL, 0x3c62eb74UL,
+ 0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL
+};
+
+ALIGNED_(16) juint _e_coeff[] =
+{
+ 0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
+ 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
+ 0x00000000UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint _coeff_h[] =
+{
+ 0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
+};
+
+ALIGNED_(16) juint _HIGHMASK_LOG_X[] =
+{
+ 0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
+};
+
+ALIGNED_(8) juint _HALFMASK[] =
+{
+ 0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
+};
+
+ALIGNED_(16) juint _coeff_pow[] =
+{
+ 0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL,
+ 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL,
+ 0xac8349bbUL, 0x3fa76c9bUL, 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL,
+ 0xbf5dabe1UL, 0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL,
+ 0x486ececbUL, 0x3fc4635eUL, 0x412055ccUL, 0xbdd61bb2UL
+};
+
+ALIGNED_(16) juint _L_tbl_pow[] =
+{
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x20000000UL,
+ 0x3feff00aUL, 0x96621f95UL, 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL,
+ 0xe5916f9eUL, 0xbe325278UL, 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL,
+ 0x3e595fb7UL, 0xc0000000UL, 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL,
+ 0xe0000000UL, 0x3fefb069UL, 0xad2880a7UL, 0xbe501230UL, 0x60000000UL,
+ 0x3fefa08fUL, 0xc8e72420UL, 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL,
+ 0xc30c4500UL, 0xbe5d6c75UL, 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL,
+ 0x3e2e1318UL, 0xc0000000UL, 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL,
+ 0x00000000UL, 0x3fef615cUL, 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL,
+ 0x3fef519cUL, 0x65c5cd68UL, 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL,
+ 0x46d1306cUL, 0xbe5a840eUL, 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL,
+ 0x3e5071afUL, 0xa0000000UL, 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL,
+ 0xa0000000UL, 0x3fef12d4UL, 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL,
+ 0x3fef032fUL, 0xbc7247faUL, 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL,
+ 0xbcaa1e46UL, 0xbe53bb3bUL, 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL,
+ 0xbe54c619UL, 0x80000000UL, 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL,
+ 0xe0000000UL, 0x3feec4d1UL, 0xec678f76UL, 0xbe369af6UL, 0x80000000UL,
+ 0x3feeb547UL, 0x41301f55UL, 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL,
+ 0x676da6bdUL, 0xbe4d8dd0UL, 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL,
+ 0x3e51f991UL, 0xa0000000UL, 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL,
+ 0x20000000UL, 0x3fee7752UL, 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL,
+ 0x3fee67e1UL, 0xd75b5bf1UL, 0xbe449531UL, 0x80000000UL, 0x3fee5876UL,
+ 0xbd423b8eUL, 0x3df54fe4UL, 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL,
+ 0x3e54289cUL, 0x80000000UL, 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL,
+ 0xa0000000UL, 0x3fee2a53UL, 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL,
+ 0x3fee1afcUL, 0x0989328dUL, 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL,
+ 0xee642abdUL, 0xbe425dd8UL, 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL,
+ 0x3e526362UL, 0x20000000UL, 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL,
+ 0xc0000000UL, 0x3fedddd4UL, 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL,
+ 0x3fedce97UL, 0x0ecac52fUL, 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL,
+ 0x124cb3b8UL, 0x3e257024UL, 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL,
+ 0xbe2033eeUL, 0x20000000UL, 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL,
+ 0xc0000000UL, 0x3fed91d3UL, 0xef8a552aUL, 0xbe543390UL, 0x40000000UL,
+ 0x3fed82afUL, 0xb8e85204UL, 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL,
+ 0x3d59fe08UL, 0xbe5db728UL, 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL,
+ 0x3e58804bUL, 0xc0000000UL, 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL,
+ 0x00000000UL, 0x3fed464fUL, 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL,
+ 0x3fed3743UL, 0xb0b0a190UL, 0x3e598635UL, 0x80000000UL, 0x3fed283cUL,
+ 0xe2113295UL, 0xbe5c1119UL, 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL,
+ 0xbe492e9cUL, 0x60000000UL, 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL,
+ 0x20000000UL, 0x3fecfb45UL, 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL,
+ 0x3fecec51UL, 0x110f7dddUL, 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL,
+ 0x7dd7d508UL, 0xbe5a8943UL, 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL,
+ 0xbe50676aUL, 0x80000000UL, 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL,
+ 0x60000000UL, 0x3fecb0b4UL, 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL,
+ 0x3feca1d9UL, 0x38a6ec89UL, 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL,
+ 0x3a0b7d8eUL, 0x3e53dbfdUL, 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL,
+ 0xbe27c5c9UL, 0xc0000000UL, 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL,
+ 0x60000000UL, 0x3fec669bUL, 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL,
+ 0x3fec57d7UL, 0x40e5e7e8UL, 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL,
+ 0x5602770fUL, 0xbe55219dUL, 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL,
+ 0x3e5a5d25UL, 0x60000000UL, 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL,
+ 0x80000000UL, 0x3fec1cf8UL, 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL,
+ 0x3fec0e4cUL, 0x580798bdUL, 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL,
+ 0xb8282df6UL, 0xbe46b874UL, 0x20000000UL, 0x3febf102UL, 0xe33a6729UL,
+ 0x3e54963fUL, 0x00000000UL, 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL,
+ 0x60000000UL, 0x3febd3caUL, 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL,
+ 0x3febc535UL, 0xa335c5eeUL, 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL,
+ 0x7325b04dUL, 0x3e42ba15UL, 0x60000000UL, 0x3feba819UL, 0x1564540fUL,
+ 0x3e3a9f35UL, 0x40000000UL, 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL,
+ 0xa0000000UL, 0x3feb8b0fUL, 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL,
+ 0x3feb7c91UL, 0x6d6f1ea4UL, 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL,
+ 0x5e80a1bfUL, 0x3e4ddbb6UL, 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL,
+ 0x3e592877UL, 0xa0000000UL, 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL,
+ 0xa0000000UL, 0x3feb42c6UL, 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL,
+ 0x3feb345fUL, 0xa3e0cceeUL, 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL,
+ 0x8e752b50UL, 0xbe3da3c2UL, 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL,
+ 0x3e1fb481UL, 0xc0000000UL, 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL,
+ 0x20000000UL, 0x3feafaeeUL, 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL,
+ 0x3feaec9dUL, 0x3c3d640eUL, 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL,
+ 0x8f97a715UL, 0x3e3a8ec5UL, 0x20000000UL, 0x3fead008UL, 0x23ab2839UL,
+ 0x3e2fe98aUL, 0x40000000UL, 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL,
+ 0xe0000000UL, 0x3feab384UL, 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL,
+ 0x3feaa549UL, 0x7c7b0eeaUL, 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL,
+ 0xf56f7013UL, 0x3e386200UL, 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL,
+ 0xbe514af5UL, 0xe0000000UL, 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL,
+ 0x60000000UL, 0x3fea6c89UL, 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL,
+ 0x3fea5e64UL, 0x3f19d970UL, 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL,
+ 0x09ea3e6bUL, 0x3e5065dcUL, 0x80000000UL, 0x3fea4226UL, 0x78df246cUL,
+ 0x3e5e05f6UL, 0x40000000UL, 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL,
+ 0x40000000UL, 0x3fea25faUL, 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL,
+ 0x3fea17eaUL, 0x9436f40aUL, 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL,
+ 0x4b5253b3UL, 0x3e46380bUL, 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL,
+ 0xbe386f9bUL, 0x20000000UL, 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL,
+ 0x60000000UL, 0x3fe9dfd6UL, 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL,
+ 0x3fe9d1dcUL, 0xeabdff1dUL, 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL,
+ 0xafd30e73UL, 0xbe585e63UL, 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL,
+ 0xbe43e8f9UL, 0x20000000UL, 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL,
+ 0x80000000UL, 0x3fe99a1cUL, 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL,
+ 0x3fe98c37UL, 0x7c9a88fbUL, 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL,
+ 0xda015741UL, 0xbe5d13baUL, 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL,
+ 0x3e51b947UL, 0x00000000UL, 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL,
+ 0x40000000UL, 0x3fe954cbUL, 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL,
+ 0x3fe946faUL, 0xe63b3767UL, 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL,
+ 0xe57cc2a9UL, 0x3e34eda3UL, 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL,
+ 0x3e5766a0UL, 0xc0000000UL, 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL,
+ 0x80000000UL, 0x3fe90fe1UL, 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL,
+ 0x3fe90225UL, 0xdbd3f369UL, 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL,
+ 0x1c9be989UL, 0xbe5e2b0aUL, 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL,
+ 0x3e5c8618UL, 0xe0000000UL, 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL,
+ 0x20000000UL, 0x3fe8cb5eUL, 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL,
+ 0x3fe8bdb6UL, 0x49e58cc3UL, 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL,
+ 0xa7cfeb8fUL, 0x3e56c412UL, 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL,
+ 0x3e1429b8UL, 0x60000000UL, 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL,
+ 0xc0000000UL, 0x3fe8873fUL, 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL,
+ 0x3fe879acUL, 0x56aee828UL, 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL,
+ 0x7ceab8ecUL, 0x3e493365UL, 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL,
+ 0xbe4f7f25UL, 0x00000000UL, 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL,
+ 0x40000000UL, 0x3fe84385UL, 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL,
+ 0x3fe83605UL, 0xa670975aUL, 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL,
+ 0xf61b77b2UL, 0xbe43a20aUL, 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL,
+ 0x3e5e5fe5UL, 0xc0000000UL, 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL,
+ 0xa0000000UL, 0x3fe8002dUL, 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL,
+ 0x3fe7f2c1UL, 0x22a16f01UL, 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL,
+ 0xc38cd451UL, 0x3e506963UL, 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL,
+ 0x3e4503d7UL, 0x40000000UL, 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL,
+ 0xa0000000UL, 0x3fe7bd37UL, 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL,
+ 0x3fe7afdeUL, 0xe3b0be70UL, 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL,
+ 0xaf9f193cUL, 0xbe5dff6cUL, 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL,
+ 0xbe258ed0UL, 0xa0000000UL, 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL,
+ 0x40000000UL, 0x3fe77aa2UL, 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL,
+ 0x3fe76d5cUL, 0x7cb0b5e4UL, 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL,
+ 0x2b1bc4adUL, 0xbe32e8bbUL, 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL,
+ 0x3e41f57bUL, 0xc0000000UL, 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL,
+ 0x60000000UL, 0x3fe7386cUL, 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL,
+ 0x3fe72b39UL, 0x91d690f7UL, 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL,
+ 0x627a2159UL, 0xbe4425d5UL, 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL,
+ 0x3e422b7eUL, 0x60000000UL, 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL,
+ 0xe0000000UL, 0x3fe6f694UL, 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL,
+ 0x3fe6e975UL, 0x306d8894UL, 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL,
+ 0x30bf24aaUL, 0xbe4650caUL, 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL,
+ 0xbe5db007UL, 0xc0000000UL, 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL,
+ 0xc0000000UL, 0x3fe6b51aUL, 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL,
+ 0x3fe6a80dUL, 0xf3559341UL, 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL,
+ 0xa885899eUL, 0xbe5c2011UL, 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL,
+ 0x3e224a82UL, 0xa0000000UL, 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL,
+ 0x00000000UL, 0x3fe673fdUL, 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL,
+ 0x3fe66702UL, 0x5df10408UL, 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL,
+ 0xa4070568UL, 0xbe40b12fUL, 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL,
+ 0x3e5f5e8bUL, 0x00000000UL, 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL,
+ 0xa0000000UL, 0x3fe6333aUL, 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL,
+ 0x3fe62651UL, 0x6f538d61UL, 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL,
+ 0x14344120UL, 0xbe529af6UL, 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL,
+ 0xbe3e1e4fUL, 0x00000000UL, 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL,
+ 0x80000000UL, 0x3fe5f2d2UL, 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL,
+ 0x3fe5e5fbUL, 0xa4695699UL, 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL,
+ 0x80d118aeUL, 0x3e456b61UL, 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL,
+ 0x3e54dc29UL, 0x80000000UL, 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL,
+ 0xe0000000UL, 0x3fe5b2c3UL, 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL,
+ 0x3fe5a5feUL, 0x9292c7eaUL, 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL,
+ 0x33b4d380UL, 0x3e5d6d93UL, 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL,
+ 0x3e2fe961UL, 0xa0000000UL, 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL,
+ 0xa0000000UL, 0x3fe5730dUL, 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL,
+ 0x3fe5665aUL, 0x024acfeaUL, 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL,
+ 0xcc9edd09UL, 0xbe325403UL, 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL,
+ 0x3e5d500eUL, 0x60000000UL, 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL,
+ 0xc0000000UL, 0x3fe533aeUL, 0x154b0287UL, 0xbe401571UL, 0xa0000000UL,
+ 0x3fe5270cUL, 0x0673f401UL, 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL,
+ 0x751b639cUL, 0x3e235269UL, 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL,
+ 0x3ddec887UL, 0xc0000000UL, 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL,
+ 0x60000000UL, 0x3fe4f4a6UL, 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL,
+ 0x3fe4e815UL, 0xf33e2a76UL, 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL,
+ 0x839f3e3eUL, 0x3e57db01UL, 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL,
+ 0x3e535e0fUL, 0x00000000UL, 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL,
+ 0xc0000000UL, 0x3fe4b5f3UL, 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL,
+ 0x3fe4a973UL, 0x4aa7cd1dUL, 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL,
+ 0x8e23025eUL, 0xbe5749f2UL, 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL,
+ 0x3e360f39UL, 0x20000000UL, 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL,
+ 0xc0000000UL, 0x3fe47795UL, 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL,
+ 0x3fe46b26UL, 0x8f0e62aaUL, 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL,
+ 0x5775c40cUL, 0xbe56aad4UL, 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL,
+ 0x3e48bd71UL, 0x40000000UL, 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL,
+ 0x80000000UL, 0x3fe4398bUL, 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL,
+ 0x3fe42d2dUL, 0x388e4d2eUL, 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL,
+ 0x6f797c18UL, 0x3e554b4cUL, 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL,
+ 0xbe5b1112UL, 0x80000000UL, 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL,
+ 0x40000000UL, 0x3fe3fbd4UL, 0x50201119UL, 0x3e40b701UL, 0x40000000UL,
+ 0x3fe3ef86UL, 0x0a4db32cUL, 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL,
+ 0x0c9c148bUL, 0xbe50c1f6UL, 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL,
+ 0x3e533fa0UL, 0x00000000UL, 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL,
+ 0x20000000UL, 0x3fe3be6fUL, 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL,
+ 0x3fe3b231UL, 0x7f908258UL, 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL,
+ 0x1a09af78UL, 0x3e08038bUL, 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL,
+ 0xbe5dbe42UL, 0xe0000000UL, 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL,
+ 0x20000000UL, 0x3fe3815bUL, 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL,
+ 0x3fe3752dUL, 0x6182e429UL, 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL,
+ 0xab6eb1aeUL, 0x3e5a2cc5UL, 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL,
+ 0xbe5c5878UL, 0x40000000UL, 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL,
+ 0x80000000UL, 0x3fe34497UL, 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL,
+ 0x3fe3387aUL, 0xf872d68cUL, 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL,
+ 0x087e97c2UL, 0x3e52842eUL, 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL,
+ 0xbe503edfUL, 0x80000000UL, 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL,
+ 0xa0000000UL, 0x3fe30823UL, 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL,
+ 0x3fe2fc15UL, 0x855a7390UL, 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL,
+ 0xa2898287UL, 0x3e3d22a2UL, 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL,
+ 0xbe5aa5fdUL, 0x80000000UL, 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL,
+ 0x60000000UL, 0x3fe2cbfeUL, 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL,
+ 0x3fe2c000UL, 0x6b01bf10UL, 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL,
+ 0xb07a1cdfUL, 0x3e5c5cdaUL, 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL,
+ 0xbe5668b3UL, 0xc0000000UL, 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL,
+ 0x00000000UL, 0x3fe29027UL, 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL,
+ 0x3fe28438UL, 0x6433c727UL, 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL,
+ 0x41782631UL, 0xbe30750cUL, 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL,
+ 0xbe58290eUL, 0x40000000UL, 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL,
+ 0x00000000UL, 0x3fe2549dUL, 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL,
+ 0x3fe248bdUL, 0x4248b9fbUL, 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL,
+ 0xf35cf82fUL, 0x3e561b71UL, 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL,
+ 0x3e518fb9UL, 0x60000000UL, 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL,
+ 0x40000000UL, 0x3fe2195fUL, 0x80943911UL, 0xbe07f819UL, 0x40000000UL,
+ 0x3fe20d8fUL, 0x386f2d6cUL, 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL,
+ 0xf29664acUL, 0xbe5eb815UL, 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL,
+ 0x3e5e320cUL, 0x20000000UL, 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL,
+ 0x40000000UL, 0x3fe1de6dUL, 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL,
+ 0x3fe1d2acUL, 0x4ae0b55eUL, 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL,
+ 0x28569a5eUL, 0x3e598a4fUL, 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL,
+ 0x3e46130aUL, 0x20000000UL, 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL,
+ 0x00000000UL, 0x3fe1a3c6UL, 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL,
+ 0x3fe19813UL, 0x2f02b836UL, 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL,
+ 0x28dec9d4UL, 0x3e09064fUL, 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL,
+ 0x3e5b1f46UL, 0x40000000UL, 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL,
+ 0x00000000UL, 0x3fe16969UL, 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL,
+ 0x3fe15dc5UL, 0x73bad6f8UL, 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL,
+ 0x5385769cUL, 0x3e5e8d76UL, 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL,
+ 0x3e571d08UL, 0x20000000UL, 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL,
+ 0x60000000UL, 0x3fe12f55UL, 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL,
+ 0x3fe123c0UL, 0x403638e1UL, 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL,
+ 0x557a092bUL, 0xbdd0116bUL, 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL,
+ 0x3e4a61baUL, 0xc0000000UL, 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL,
+ 0x20000000UL, 0x3fe0ea04UL, 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL,
+ 0x3fe0d300UL, 0x23190e54UL, 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL,
+ 0x1379a5a6UL, 0xbe51619dUL, 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL,
+ 0x3e5cf019UL, 0xa0000000UL, 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL,
+ 0x20000000UL, 0x3fe07762UL, 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL,
+ 0x3fe06097UL, 0xfd9cf274UL, 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL,
+ 0x3689b49dUL, 0xbe36d26dUL, 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL,
+ 0xbe54cd08UL, 0xa0000000UL, 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL,
+ 0x00000000UL, 0x3fe005daUL, 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL,
+ 0x3fdfde8dUL, 0xad67766dUL, 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL,
+ 0x644f4ae7UL, 0x3e1ee43bUL, 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL,
+ 0x3e501a86UL, 0x40000000UL, 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL,
+ 0x00000000UL, 0x3fdf2acdUL, 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL,
+ 0x3fdefe13UL, 0x3b94305eUL, 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL,
+ 0x5d95da61UL, 0xbe55c198UL, 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL,
+ 0xbdd99a19UL, 0x00000000UL, 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL,
+ 0x80000000UL, 0x3fde4c04UL, 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL,
+ 0x3fde1fb6UL, 0x3dfbffcbUL, 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL,
+ 0x7e1be4e0UL, 0xbe5b8f8fUL, 0x40000000UL, 0x3fddc759UL, 0x46dae887UL,
+ 0xbe350458UL, 0x80000000UL, 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL,
+ 0x80000000UL, 0x3fdd6f50UL, 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL,
+ 0x3fdd436bUL, 0xf0bccb32UL, 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL,
+ 0x9bbfc779UL, 0xbe54a26aUL, 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL,
+ 0x3e43c6b7UL, 0x40000000UL, 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL,
+ 0x40000000UL, 0x3fdc94a7UL, 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL,
+ 0x3fdc6929UL, 0xf0a8f95aUL, 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL,
+ 0x6ee2693bUL, 0x3e0992e6UL, 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL,
+ 0xbe2834b6UL, 0x40000000UL, 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL,
+ 0x00000000UL, 0x3fdbbbffUL, 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL,
+ 0x3fdb90e7UL, 0x479664c0UL, 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL,
+ 0x5004975bUL, 0xbe55258fUL, 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL,
+ 0xbe588407UL, 0xc0000000UL, 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL,
+ 0x80000000UL, 0x3fdae54eUL, 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL,
+ 0x3fdaba9aUL, 0xe19d0913UL, 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL,
+ 0x43cfd006UL, 0xbe4cfdebUL, 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL,
+ 0x3e5e47a8UL, 0xc0000000UL, 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL,
+ 0xc0000000UL, 0x3fda108cUL, 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL,
+ 0x3fd9e63aUL, 0x396f8f2cUL, 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL,
+ 0xe32b25ddUL, 0x3e5c3a54UL, 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL,
+ 0xbe457925UL, 0x80000000UL, 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL,
+ 0x00000000UL, 0x3fd93db1UL, 0xd7449365UL, 0x3e306419UL, 0x80000000UL,
+ 0x3fd913beUL, 0x1746e791UL, 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL,
+ 0xf3a9028bUL, 0xbe5041b9UL, 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL,
+ 0xbe26e20aUL, 0x40000000UL, 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL,
+ 0x80000000UL, 0x3fd86cb2UL, 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL,
+ 0x3fd8431eUL, 0xdeb39fabUL, 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL,
+ 0x5d01cbe0UL, 0xbe5425b3UL, 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL,
+ 0x3e146fa8UL, 0x80000000UL, 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL,
+ 0xc0000000UL, 0x3fd79d88UL, 0x8606c236UL, 0x3e423a08UL, 0x80000000UL,
+ 0x3fd77451UL, 0x8fd1e1b7UL, 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL,
+ 0xe491456aUL, 0x3e42c1caUL, 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL,
+ 0x3e36a69aUL, 0x00000000UL, 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL,
+ 0x00000000UL, 0x3fd6d02cUL, 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL,
+ 0x3fd6a750UL, 0x1919fd61UL, 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL,
+ 0xaa7a994dUL, 0xbe3f3fbdUL, 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL,
+ 0x3e33c550UL, 0x00000000UL, 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL,
+ 0xc0000000UL, 0x3fd60493UL, 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL,
+ 0x3fd5dc11UL, 0x1222bd5cUL, 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL,
+ 0x6e8dc2d3UL, 0x3e5d4d79UL, 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL,
+ 0xbe517303UL, 0x80000000UL, 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL,
+ 0xc0000000UL, 0x3fd53ab8UL, 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL,
+ 0x3fd5128eUL, 0xea902207UL, 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL,
+ 0x9f911d79UL, 0x3e511735UL, 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL,
+ 0xbe5b1643UL, 0x40000000UL, 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL,
+ 0x80000000UL, 0x3fd47293UL, 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL,
+ 0x3fd44abfUL, 0xe04042f5UL, 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL,
+ 0x1d8bf2c8UL, 0x3e5d8810UL, 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL,
+ 0xbe311454UL, 0xc0000000UL, 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL,
+ 0x40000000UL, 0x3fd3ac1cUL, 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL,
+ 0x3fd3849dUL, 0xd4e34b9eUL, 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL,
+ 0x177204fbUL, 0xbe2b8cd7UL, 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL,
+ 0xbe4356e1UL, 0x80000000UL, 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL,
+ 0x00000000UL, 0x3fd2e74cUL, 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL,
+ 0x3fd2c021UL, 0x516dab3fUL, 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL,
+ 0x2bfb7313UL, 0x3e5674a2UL, 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL,
+ 0x3e385d29UL, 0xc0000000UL, 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL,
+ 0x00000000UL, 0x3fd2241cUL, 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL,
+ 0x3fd1fd43UL, 0xa1543f71UL, 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL,
+ 0x4ec8867cUL, 0x3df6a2dcUL, 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL,
+ 0x3e41d9c0UL, 0x80000000UL, 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL,
+ 0x40000000UL, 0x3fd16285UL, 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL,
+ 0x3fd13bfeUL, 0xb9aec164UL, 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL,
+ 0xd91e1316UL, 0xbe350630UL, 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL,
+ 0x3e3f5219UL, 0x40000000UL, 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL,
+ 0x00000000UL, 0x3fd0a281UL, 0x2a63447dUL, 0xbe541377UL, 0x80000000UL,
+ 0x3fd07c49UL, 0xfac483b5UL, 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL,
+ 0x36b8a570UL, 0xbe4fd4bdUL, 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL,
+ 0xbe450388UL, 0x80000000UL, 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL,
+ 0x80000000UL, 0x3fcfc811UL, 0x707475acUL, 0x3e38806eUL, 0x80000000UL,
+ 0x3fcf7c3fUL, 0xc91817fcUL, 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL,
+ 0xae05d5e9UL, 0xbe4919b8UL, 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL,
+ 0xbe530b94UL, 0x00000000UL, 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL,
+ 0x00000000UL, 0x3fce4e2dUL, 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL,
+ 0x3fce02f5UL, 0x8abe2c2eUL, 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL,
+ 0x1495450dUL, 0xbe0872ccUL, 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL,
+ 0xbe4f59a0UL, 0x00000000UL, 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL,
+ 0x00000000UL, 0x3fccd747UL, 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL,
+ 0x3fcc8ca7UL, 0xd305b56cUL, 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL,
+ 0x399a6910UL, 0xbe482a1cUL, 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL,
+ 0xbe587372UL, 0x80000000UL, 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL,
+ 0x00000000UL, 0x3fcb6355UL, 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL,
+ 0x3fcb194aUL, 0x8416c0bcUL, 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL,
+ 0x49f7f08fUL, 0x3e56da76UL, 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL,
+ 0x3e5f390cUL, 0x00000000UL, 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL,
+ 0x80000000UL, 0x3fc9f249UL, 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL,
+ 0x3fc9a8d3UL, 0xde8795a6UL, 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL,
+ 0x076bf41eUL, 0x3e5122feUL, 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL,
+ 0x3e3dd064UL, 0x00000000UL, 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL,
+ 0x80000000UL, 0x3fc8841aUL, 0xb2a96650UL, 0xbe575444UL, 0x80000000UL,
+ 0x3fc83b34UL, 0x2376c0cbUL, 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL,
+ 0xd8a0b653UL, 0xbe5181b6UL, 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL,
+ 0xbe4a78b4UL, 0x00000000UL, 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL,
+ 0x80000000UL, 0x3fc718bbUL, 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL,
+ 0x3fc6d064UL, 0x3728b8cfUL, 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL,
+ 0xc79a4067UL, 0x3e5c380fUL, 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL,
+ 0x3e550a84UL, 0x80000000UL, 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL,
+ 0x80000000UL, 0x3fc5b022UL, 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL,
+ 0x3fc56858UL, 0x659b18beUL, 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL,
+ 0x66ee3631UL, 0xbe57d769UL, 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL,
+ 0x3e2427f7UL, 0x80000000UL, 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL,
+ 0x00000000UL, 0x3fc44a44UL, 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL,
+ 0x3fc40304UL, 0xcf1d3eabUL, 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL,
+ 0x79aba3eaUL, 0xbdf1b7c8UL, 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL,
+ 0xbe5130cfUL, 0x80000000UL, 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL,
+ 0x00000000UL, 0x3fc2e716UL, 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL,
+ 0x3fc2a05eUL, 0x6caed92eUL, 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL,
+ 0x9cb5034eUL, 0xbe510e31UL, 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL,
+ 0xbe540b43UL, 0x80000000UL, 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL,
+ 0x00000000UL, 0x3fc1868eUL, 0x921f4106UL, 0xbe528e67UL, 0x80000000UL,
+ 0x3fc1405cUL, 0x3969441eUL, 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL,
+ 0xd941ef5bUL, 0x3e5f9079UL, 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL,
+ 0xbe567691UL, 0x00000000UL, 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL,
+ 0x00000000UL, 0x3fc028a2UL, 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL,
+ 0x3fbfc5eaUL, 0x209897e5UL, 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL,
+ 0x8458bd7bUL, 0x3e582831UL, 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL,
+ 0xbe486b4aUL, 0x00000000UL, 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL,
+ 0x00000000UL, 0x3fbd9a90UL, 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL,
+ 0x3fbd103cUL, 0x73eb6ab7UL, 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL,
+ 0x32ceaff5UL, 0xbe32dc5aUL, 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL,
+ 0xbe4a71a4UL, 0x00000000UL, 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL,
+ 0x00000000UL, 0x3fbae8eeUL, 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL,
+ 0x3fba5f9aUL, 0x95ce1114UL, 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL,
+ 0x6d7c0f78UL, 0x3e3abc2dUL, 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL,
+ 0xbe566cbcUL, 0x00000000UL, 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL,
+ 0x00000000UL, 0x3fb83c4aUL, 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL,
+ 0x3fb7b3f4UL, 0x2193d81eUL, 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL,
+ 0xdd70c122UL, 0x3e527a8cUL, 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL,
+ 0xbe450393UL, 0x00000000UL, 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL,
+ 0x00000000UL, 0x3fb59492UL, 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL,
+ 0x3fb50d36UL, 0x950f9f45UL, 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL,
+ 0x582cdcb1UL, 0x3e506d39UL, 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL,
+ 0x3e4aa719UL, 0x00000000UL, 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL,
+ 0x00000000UL, 0x3fb2f1b4UL, 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL,
+ 0x3fb26b4eUL, 0x2fbfd7eaUL, 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL,
+ 0x18913ccbUL, 0x3e465fc1UL, 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL,
+ 0x3e042843UL, 0x00000000UL, 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL,
+ 0x00000000UL, 0x3fb0539eUL, 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL,
+ 0x3faf9c56UL, 0x1777f657UL, 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL,
+ 0xc317b86aUL, 0xbe5a61e0UL, 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL,
+ 0xbe41f64eUL, 0x00000000UL, 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL,
+ 0x00000000UL, 0x3fab7480UL, 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL,
+ 0x3faa6b78UL, 0x06a253f1UL, 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL,
+ 0xa35f541bUL, 0x3e5a187aUL, 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL,
+ 0xbe508150UL, 0x00000000UL, 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL,
+ 0x00000000UL, 0x3fa64b10UL, 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL,
+ 0x3fa543e2UL, 0x97506fefUL, 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL,
+ 0xe75f7dd9UL, 0xbe388dd3UL, 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL,
+ 0xbdea5177UL, 0x00000000UL, 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL,
+ 0x00000000UL, 0x3fa12accUL, 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL,
+ 0x3fa0256eUL, 0x7478da78UL, 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL,
+ 0xf59cef7fUL, 0xbe539d0aUL, 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL,
+ 0x3e53c2c8UL, 0x00000000UL, 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL,
+ 0x00000000UL, 0x3f982724UL, 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL,
+ 0x3f962000UL, 0x130d9356UL, 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL,
+ 0x8f86f883UL, 0xbe513d0bUL, 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL,
+ 0xbe534335UL, 0x00000000UL, 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL,
+ 0x00000000UL, 0x3f8c1510UL, 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL,
+ 0x3f880de0UL, 0x8a27857eUL, 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL,
+ 0xda767328UL, 0x3e531b3dUL, 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL,
+ 0xbe5f04e3UL, 0x00000000UL, 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL,
+ 0x00000000UL, 0x3f6ffc40UL, 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL,
+ 0x3f5ff6c0UL, 0x1ad218afUL, 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x80000000UL
+};
+
+ALIGNED_(8) juint _log2_pow[] =
+{
+ 0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
+};
+
+//registers,
+// input: xmm0, xmm1
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// rax, rdx, rcx, r8, r11
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
+ Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
+ Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
+ Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
+ Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
+ Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
+ Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
+ Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
+ Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
+ Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
+ Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
+ Label L_2TAG_PACKET_56_0_2;
+ Label B1_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp1, tmp2, eax, ecx, edx);
+ jmp(start);
+ address HIGHSIGMASK = (address)_HIGHSIGMASK;
+ address LOG2_E = (address)_LOG2_E;
+ address coeff = (address)_coeff_pow;
+ address L_tbl = (address)_L_tbl_pow;
+ address HIGHMASK_Y = (address)_HIGHMASK_Y;
+ address T_exp = (address)_T_exp;
+ address e_coeff = (address)_e_coeff;
+ address coeff_h = (address)_coeff_h;
+ address HIGHMASK_LOG_X = (address)_HIGHMASK_LOG_X;
+ address HALFMASK = (address)_HALFMASK;
+ address log2 = (address)_log2_pow;
+
+
+ bind(start);
+ subq(rsp, 40);
+ movsd(Address(rsp, 8), xmm0);
+ movsd(Address(rsp, 16), xmm1);
+
+ bind(B1_2);
+ pextrw(eax, xmm0, 3);
+ xorpd(xmm2, xmm2);
+ mov64(tmp2, 0x3ff0000000000000);
+ movdq(xmm2, tmp2);
+ movl(tmp1, 1069088768);
+ movdq(xmm7, tmp1);
+ xorpd(xmm1, xmm1);
+ mov64(tmp3, 0x77f0000000000000);
+ movdq(xmm1, tmp3);
+ movdqu(xmm3, xmm0);
+ movl(edx, 32752);
+ andl(edx, eax);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ por(xmm0, xmm2);
+ movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
+ psrlq(xmm0, 27);
+ movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+ psrld(xmm0, 2);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ rcpps(xmm0, xmm0);
+ psllq(xmm3, 12);
+ movl(tmp4, 8192);
+ movdq(xmm4, tmp4);
+ psrlq(xmm3, 12);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+ movl(tmp1, 0);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ mulss(xmm0, xmm7);
+ movl(edx, -1);
+ subl(ecx, 4);
+ shll(edx);
+ shlq(edx, 32);
+ movdq(xmm5, edx);
+ por(xmm3, xmm1);
+ subl(eax, 16351);
+ cmpl(eax, 1);
+ jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
+ paddd(xmm0, xmm4);
+ pand(xmm5, xmm3);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ subsd(xmm3, xmm5);
+ pand(xmm0, xmm6);
+ subl(eax, 1);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ mulsd(xmm3, xmm0);
+ movdqu(xmm1, ExternalAddress(coeff)); //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
+ lea(tmp4, ExternalAddress(L_tbl));
+ subsd(xmm5, xmm2);
+ movdqu(xmm4, ExternalAddress(16 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
+ movl(ecx, eax);
+ sarl(eax, 31);
+ addl(ecx, eax);
+ xorl(eax, ecx);
+ addl(eax, 1);
+ bsrl(eax, eax);
+ unpcklpd(xmm5, xmm3);
+ movdqu(xmm6, ExternalAddress(32 + coeff)); //0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL
+ addsd(xmm3, xmm5);
+ andl(edx, 16760832);
+ shrl(edx, 10);
+ addpd(xmm5, Address(tmp4, edx, Address::times_1, -3648));
+ movdqu(xmm0, ExternalAddress(48 + coeff)); //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
+ pshufd(xmm2, xmm3, 68);
+ mulsd(xmm3, xmm3);
+ mulpd(xmm1, xmm2);
+ mulpd(xmm4, xmm2);
+ addsd(xmm5, xmm7);
+ mulsd(xmm2, xmm3);
+ addpd(xmm6, xmm1);
+ mulsd(xmm3, xmm3);
+ addpd(xmm0, xmm4);
+ movq(xmm1, Address(rsp, 16));
+ movw(ecx, Address(rsp, 22));
+ pshufd(xmm7, xmm5, 238);
+ movq(xmm4, ExternalAddress(HIGHMASK_Y)); //0x00000000UL, 0xfffffff8UL, 0x00000000UL, 0xffffffffUL
+ mulpd(xmm6, xmm2);
+ pshufd(xmm3, xmm3, 68);
+ mulpd(xmm0, xmm2);
+ shll(eax, 4);
+ subl(eax, 15872);
+ andl(ecx, 32752);
+ addl(eax, ecx);
+ mulpd(xmm3, xmm6);
+ cmpl(eax, 624);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
+ xorpd(xmm6, xmm6);
+ movl(edx, 17080);
+ pinsrw(xmm6, edx, 3);
+ movdqu(xmm2, xmm1);
+ pand(xmm4, xmm1);
+ subsd(xmm1, xmm4);
+ mulsd(xmm4, xmm5);
+ addsd(xmm0, xmm7);
+ mulsd(xmm1, xmm5);
+ movdqu(xmm7, xmm6);
+ addsd(xmm6, xmm4);
+ lea(tmp4, ExternalAddress(T_exp));
+ addpd(xmm3, xmm0);
+ movdl(edx, xmm6);
+ subsd(xmm6, xmm7);
+ pshufd(xmm0, xmm3, 238);
+ subsd(xmm4, xmm6);
+ addsd(xmm0, xmm3);
+ movl(ecx, edx);
+ andl(edx, 255);
+ addl(edx, edx);
+ movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
+ addsd(xmm4, xmm1);
+ mulsd(xmm2, xmm0);
+ movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
+ movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
+ shll(ecx, 12);
+ xorl(ecx, tmp1);
+ andl(rcx, -1048576);
+ movdq(xmm6, rcx);
+ addsd(xmm2, xmm4);
+ mov64(tmp2, 0x3fe62e42fefa39ef);
+ movdq(xmm1, tmp2);
+ pshufd(xmm0, xmm2, 68);
+ pshufd(xmm4, xmm2, 68);
+ mulsd(xmm1, xmm2);
+ pshufd(xmm6, xmm6, 17);
+ mulpd(xmm0, xmm0);
+ mulpd(xmm7, xmm4);
+ paddd(xmm5, xmm6);
+ mulsd(xmm1, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulsd(xmm0, xmm0);
+ addpd(xmm3, xmm7);
+ addsd(xmm1, xmm6);
+ mulpd(xmm0, xmm3);
+ pshufd(xmm3, xmm0, 238);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm3);
+ addsd(xmm0, xmm5);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ addl(eax, 16);
+ movl(edx, 32752);
+ andl(edx, eax);
+ cmpl(edx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_6_0_2);
+ testl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_7_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ movq(xmm0, Address(rsp, 8));
+ movq(xmm3, Address(rsp, 8));
+ movdl(edx, xmm3);
+ psrlq(xmm3, 32);
+ movdl(ecx, xmm3);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
+ xorpd(xmm3, xmm3);
+ movl(eax, 18416);
+ pinsrw(xmm3, eax, 3);
+ mulsd(xmm0, xmm3);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm3, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psrlq(xmm0, 27);
+ movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm3, 12);
+ movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
+ psrlq(xmm3, 12);
+ mulss(xmm0, xmm7);
+ movl(edx, -1024);
+ movdl(xmm5, edx);
+ por(xmm3, xmm1);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm3);
+ movl(tmp1, 0);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ andl(eax, 32752);
+ subl(eax, 18416);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ jmp(L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movq(xmm0, Address(rsp, 8));
+ movq(xmm3, Address(rsp, 8));
+ movdl(edx, xmm3);
+ psrlq(xmm3, 32);
+ movdl(ecx, xmm3);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
+ xorpd(xmm3, xmm3);
+ movl(eax, 18416);
+ pinsrw(xmm3, eax, 3);
+ mulsd(xmm0, xmm3);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm3, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psrlq(xmm0, 27);
+ movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+ psrld(xmm0, 2);
+ rcpps(xmm0, xmm0);
+ psllq(xmm3, 12);
+ movdqu(xmm6, ExternalAddress(HIGHSIGMASK)); //0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL
+ psrlq(xmm3, 12);
+ mulss(xmm0, xmm7);
+ movl(edx, -1024);
+ movdl(xmm5, edx);
+ por(xmm3, xmm1);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm3);
+ movl(tmp1, INT_MIN);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ andl(eax, 32752);
+ subl(eax, 18416);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ jmp(L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ cmpl(eax, 0);
+ jcc(Assembler::less, L_2TAG_PACKET_11_0_2);
+ cmpl(eax, 752);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_12_0_2);
+ addsd(xmm0, xmm7);
+ movq(xmm2, ExternalAddress(HALFMASK)); //0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL
+ addpd(xmm3, xmm0);
+ xorpd(xmm6, xmm6);
+ movl(eax, 17080);
+ pinsrw(xmm6, eax, 3);
+ pshufd(xmm0, xmm3, 238);
+ addsd(xmm0, xmm3);
+ movdqu(xmm3, xmm5);
+ addsd(xmm5, xmm0);
+ movdqu(xmm4, xmm2);
+ subsd(xmm3, xmm5);
+ movdqu(xmm7, xmm5);
+ pand(xmm5, xmm2);
+ movdqu(xmm2, xmm1);
+ pand(xmm4, xmm1);
+ subsd(xmm7, xmm5);
+ addsd(xmm0, xmm3);
+ subsd(xmm1, xmm4);
+ mulsd(xmm4, xmm5);
+ addsd(xmm0, xmm7);
+ mulsd(xmm2, xmm0);
+ movdqu(xmm7, xmm6);
+ mulsd(xmm1, xmm5);
+ addsd(xmm6, xmm4);
+ movdl(eax, xmm6);
+ subsd(xmm6, xmm7);
+ lea(tmp4, ExternalAddress(T_exp));
+ addsd(xmm2, xmm1);
+ movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
+ movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
+ subsd(xmm4, xmm6);
+ pextrw(edx, xmm6, 3);
+ movl(ecx, eax);
+ andl(eax, 255);
+ addl(eax, eax);
+ movdqu(xmm5, Address(tmp4, rax, Address::times_8, 0));
+ addsd(xmm2, xmm4);
+ sarl(ecx, 8);
+ movl(eax, ecx);
+ sarl(ecx, 1);
+ subl(eax, ecx);
+ shll(ecx, 20);
+ xorl(ecx, tmp1);
+ movdl(xmm6, ecx);
+ movq(xmm1, ExternalAddress(32 + e_coeff)); //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
+ andl(edx, 32767);
+ cmpl(edx, 16529);
+ jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
+ pshufd(xmm0, xmm2, 68);
+ pshufd(xmm4, xmm2, 68);
+ mulpd(xmm0, xmm0);
+ mulpd(xmm7, xmm4);
+ pshufd(xmm6, xmm6, 17);
+ mulsd(xmm1, xmm2);
+ mulsd(xmm0, xmm0);
+ paddd(xmm5, xmm6);
+ addpd(xmm3, xmm7);
+ mulsd(xmm1, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulpd(xmm0, xmm3);
+ addsd(xmm1, xmm6);
+ pshufd(xmm3, xmm0, 238);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ shll(eax, 4);
+ xorpd(xmm4, xmm4);
+ addl(eax, 16368);
+ pinsrw(xmm4, eax, 3);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm3);
+ movdqu(xmm1, xmm0);
+ addsd(xmm0, xmm5);
+ mulsd(xmm0, xmm4);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movq(xmm0, Address(rsp, 8));
+ movdqu(xmm2, xmm0);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_15_0_2);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
+ addsd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_16_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ movl(Address(rsp, 0), 29);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_18_0_2);
+ movq(xmm0, Address(rsp, 16));
+ addpd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_15_0_2);
+ movdl(eax, xmm1);
+ movdqu(xmm2, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
+ pextrw(eax, xmm2, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_20_0_2);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_20_0_2);
+ pextrw(eax, xmm0, 3);
+ testl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_21_0_2);
+ testl(ecx, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_23_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
+ testl(eax, 2);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
+ jmp(L_2TAG_PACKET_24_0_2);
+
+ bind(L_2TAG_PACKET_21_0_2);
+ shrl(ecx, 20);
+ andl(ecx, 2047);
+ cmpl(ecx, 1075);
+ jcc(Assembler::above, L_2TAG_PACKET_24_0_2);
+ jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
+ cmpl(ecx, 1074);
+ jcc(Assembler::above, L_2TAG_PACKET_23_0_2);
+ cmpl(ecx, 1023);
+ jcc(Assembler::below, L_2TAG_PACKET_24_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movl(eax, 17208);
+ xorpd(xmm3, xmm3);
+ pinsrw(xmm3, eax, 3);
+ movdqu(xmm4, xmm3);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
+ movdl(eax, xmm3);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
+
+ bind(L_2TAG_PACKET_25_0_2);
+ movq(xmm1, Address(rsp, 16));
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_27_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_27_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32768);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_24_0_2);
+ movq(xmm1, Address(rsp, 16));
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_26_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_24_0_2);
+ jmp(L_2TAG_PACKET_25_0_2);
+
+ bind(L_2TAG_PACKET_28_0_2);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 20);
+ movdl(edx, xmm1);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_29_0_2);
+ movq(xmm0, Address(rsp, 16));
+ addsd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_29_0_2);
+ movq(xmm0, Address(rsp, 8));
+ pextrw(eax, xmm0, 3);
+ cmpl(eax, 49136);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
+ movdl(ecx, xmm0);
+ psrlq(xmm0, 20);
+ movdl(edx, xmm0);
+ orl(ecx, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_30_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32760);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_30_0_2);
+ movq(xmm1, Address(rsp, 16));
+ andl(eax, 32752);
+ subl(eax, 16368);
+ pextrw(edx, xmm1, 3);
+ xorpd(xmm0, xmm0);
+ xorl(eax, edx);
+ andl(eax, 32768);
+ jcc(Assembler::equal, L_2TAG_PACKET_31_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_31_0_2);
+ movl(ecx, 32752);
+ pinsrw(xmm0, ecx, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_32_0_2);
+ movdl(eax, xmm1);
+ cmpl(edx, 17184);
+ jcc(Assembler::above, L_2TAG_PACKET_33_0_2);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
+ testl(eax, 2);
+ jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
+ jmp(L_2TAG_PACKET_36_0_2);
+
+ bind(L_2TAG_PACKET_33_0_2);
+ testl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
+ jmp(L_2TAG_PACKET_36_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ movq(xmm2, Address(rsp, 8));
+ movdl(eax, xmm2);
+ psrlq(xmm2, 31);
+ movdl(ecx, xmm2);
+ orl(eax, ecx);
+ jcc(Assembler::equal, L_2TAG_PACKET_9_0_2);
+ movq(xmm1, Address(rsp, 16));
+ pextrw(edx, xmm1, 3);
+ movdl(eax, xmm1);
+ movdqu(xmm2, xmm1);
+ psrlq(xmm2, 32);
+ movdl(ecx, xmm2);
+ addl(ecx, ecx);
+ orl(ecx, eax);
+ jcc(Assembler::equal, L_2TAG_PACKET_37_0_2);
+ andl(edx, 32752);
+ cmpl(edx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
+ cmpl(edx, 17200);
+ jcc(Assembler::above, L_2TAG_PACKET_35_0_2);
+ cmpl(edx, 17184);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_32_0_2);
+ cmpl(edx, 16368);
+ jcc(Assembler::below, L_2TAG_PACKET_34_0_2);
+ movl(eax, 17208);
+ xorpd(xmm2, xmm2);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm4, xmm2);
+ addsd(xmm2, xmm1);
+ subsd(xmm4, xmm2);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32767);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
+ movdl(eax, xmm2);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_35_0_2);
+
+ bind(L_2TAG_PACKET_36_0_2);
+ xorpd(xmm1, xmm1);
+ movl(edx, 30704);
+ pinsrw(xmm1, edx, 3);
+ movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+ movq(xmm4, Address(rsp, 8));
+ pextrw(eax, xmm4, 3);
+ movl(edx, 8192);
+ movdl(xmm4, edx);
+ andl(eax, 32767);
+ subl(eax, 16);
+ jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
+ movl(edx, eax);
+ andl(edx, 32752);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ movl(tmp1, INT_MIN);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_34_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ xorpd(xmm0, xmm0);
+ mulsd(xmm0, xmm1);
+ movl(Address(rsp, 0), 28);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_35_0_2);
+ xorpd(xmm1, xmm1);
+ movl(edx, 30704);
+ pinsrw(xmm1, edx, 3);
+ movq(xmm2, ExternalAddress(LOG2_E)); //0x00000000UL, 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL
+ movq(xmm4, Address(rsp, 8));
+ pextrw(eax, xmm4, 3);
+ movl(edx, 8192);
+ movdl(xmm4, edx);
+ andl(eax, 32767);
+ subl(eax, 16);
+ jcc(Assembler::less, L_2TAG_PACKET_8_0_2);
+ movl(edx, eax);
+ andl(edx, 32752);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ movl(tmp1, 0);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_19_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_22_0_2);
+ xorpd(xmm0, xmm0);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_11_0_2);
+ addl(eax, 384);
+ cmpl(eax, 0);
+ jcc(Assembler::less, L_2TAG_PACKET_38_0_2);
+ mulsd(xmm5, xmm1);
+ addsd(xmm0, xmm7);
+ shrl(tmp1, 31);
+ addpd(xmm3, xmm0);
+ pshufd(xmm0, xmm3, 238);
+ addsd(xmm3, xmm0);
+ lea(tmp4, ExternalAddress(log2)); //0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL, 0xbfe62e42UL
+ movq(xmm4, Address(tmp4, tmp1, Address::times_8, 0));
+ mulsd(xmm1, xmm3);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ shll(tmp1, 15);
+ orl(eax, tmp1);
+ pinsrw(xmm0, eax, 3);
+ addsd(xmm5, xmm1);
+ mulsd(xmm5, xmm4);
+ addsd(xmm0, xmm5);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_38_0_2);
+
+ bind(L_2TAG_PACKET_37_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_39_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ movl(Address(rsp, 0), 26);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movdqu(xmm2, xmm1);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_40_0_2);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_40_0_2);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_39_0_2);
+ shrl(edx, 21);
+ cmpl(edx, 1075);
+ jcc(Assembler::above, L_2TAG_PACKET_41_0_2);
+ jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
+ cmpl(edx, 1023);
+ jcc(Assembler::below, L_2TAG_PACKET_41_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movl(eax, 17208);
+ xorpd(xmm3, xmm3);
+ pinsrw(xmm3, eax, 3);
+ movdqu(xmm4, xmm3);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_41_0_2);
+ movdl(eax, xmm3);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_41_0_2);
+
+ bind(L_2TAG_PACKET_43_0_2);
+ movq(xmm0, Address(rsp, 8));
+ testl(ecx, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_42_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
+
+ bind(L_2TAG_PACKET_41_0_2);
+ testl(ecx, INT_MIN);
+ jcc(Assembler::equal, L_2TAG_PACKET_22_0_2);
+ xorpd(xmm0, xmm0);
+
+ bind(L_2TAG_PACKET_44_0_2);
+ movl(eax, 16368);
+ xorpd(xmm1, xmm1);
+ pinsrw(xmm1, eax, 3);
+ divsd(xmm1, xmm0);
+ movdqu(xmm0, xmm1);
+ movl(Address(rsp, 0), 27);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_12_0_2);
+ movq(xmm2, Address(rsp, 8));
+ movq(xmm6, Address(rsp, 16));
+ pextrw(eax, xmm2, 3);
+ pextrw(edx, xmm6, 3);
+ movl(ecx, 32752);
+ andl(ecx, edx);
+ cmpl(ecx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
+ andl(eax, 32752);
+ subl(eax, 16368);
+ xorl(edx, eax);
+ testl(edx, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
+
+ bind(L_2TAG_PACKET_47_0_2);
+ movl(eax, 32736);
+ pinsrw(xmm0, eax, 3);
+ shrl(tmp1, 16);
+ orl(eax, tmp1);
+ pinsrw(xmm1, eax, 3);
+ mulsd(xmm0, xmm1);
+
+ bind(L_2TAG_PACKET_14_0_2);
+ movl(Address(rsp, 0), 24);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_46_0_2);
+ movl(eax, 16);
+ pinsrw(xmm0, eax, 3);
+ mulsd(xmm0, xmm0);
+ testl(tmp1, INT_MIN);
+ jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
+ mov64(tmp2, 0x8000000000000000);
+ movdq(xmm2, tmp2);
+ xorpd(xmm0, xmm2);
+
+ bind(L_2TAG_PACKET_48_0_2);
+ movl(Address(rsp, 0), 25);
+ jmp(L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_13_0_2);
+ pextrw(ecx, xmm5, 3);
+ pextrw(edx, xmm4, 3);
+ movl(eax, -1);
+ andl(ecx, 32752);
+ subl(ecx, 16368);
+ andl(edx, 32752);
+ addl(edx, ecx);
+ movl(ecx, -31);
+ sarl(edx, 4);
+ subl(ecx, edx);
+ jcc(Assembler::lessEqual, L_2TAG_PACKET_49_0_2);
+ cmpl(ecx, 20);
+ jcc(Assembler::above, L_2TAG_PACKET_50_0_2);
+ shll(eax);
+
+ bind(L_2TAG_PACKET_49_0_2);
+ movdl(xmm0, eax);
+ psllq(xmm0, 32);
+ pand(xmm0, xmm5);
+ subsd(xmm5, xmm0);
+ addsd(xmm5, xmm1);
+ mulsd(xmm0, xmm4);
+ mulsd(xmm5, xmm4);
+ addsd(xmm0, xmm5);
+
+ bind(L_2TAG_PACKET_50_0_2);
+ jmp(L_2TAG_PACKET_48_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movw(ecx, Address(rsp, 22));
+ movl(edx, INT_MIN);
+ movdl(xmm1, rdx);
+ xorpd(xmm7, xmm7);
+ paddd(xmm0, xmm4);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ paddq(xmm1, xmm3);
+ pand(xmm5, xmm1);
+ andl(ecx, 32752);
+ cmpl(ecx, 16560);
+ jcc(Assembler::less, L_2TAG_PACKET_3_0_2);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ addl(eax, 16351);
+ shrl(eax, 4);
+ subl(eax, 1022);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ lea(r11, ExternalAddress(L_tbl));
+ movq(xmm4, ExternalAddress(coeff_h)); //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
+ mulsd(xmm3, xmm0);
+ movq(xmm6, ExternalAddress(coeff_h)); //0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL
+ subsd(xmm5, xmm2);
+ movq(xmm1, ExternalAddress(8 + coeff_h)); //0x00000000UL, 0xbf5dabe1UL
+ pshufd(xmm2, xmm3, 68);
+ unpcklpd(xmm5, xmm3);
+ addsd(xmm3, xmm5);
+ movq(xmm0, ExternalAddress(8 + coeff_h)); //0x00000000UL, 0xbf5dabe1UL
+ andl(edx, 16760832);
+ shrl(edx, 10);
+ addpd(xmm7, Address(tmp4, edx, Address::times_1, -3648));
+ mulsd(xmm4, xmm5);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm6, xmm2);
+ mulsd(xmm1, xmm2);
+ movdqu(xmm2, xmm5);
+ mulsd(xmm4, xmm5);
+ addsd(xmm5, xmm0);
+ movdqu(xmm0, xmm7);
+ addsd(xmm2, xmm3);
+ addsd(xmm7, xmm5);
+ mulsd(xmm6, xmm2);
+ subsd(xmm0, xmm7);
+ movdqu(xmm2, xmm7);
+ addsd(xmm7, xmm4);
+ addsd(xmm0, xmm5);
+ subsd(xmm2, xmm7);
+ addsd(xmm4, xmm2);
+ pshufd(xmm2, xmm5, 238);
+ movdqu(xmm5, xmm7);
+ addsd(xmm7, xmm2);
+ addsd(xmm4, xmm0);
+ movdqu(xmm0, ExternalAddress(coeff)); //0x6dc96112UL, 0xbf836578UL, 0xee241472UL, 0xbf9b0301UL
+ subsd(xmm5, xmm7);
+ addsd(xmm6, xmm4);
+ movdqu(xmm4, xmm7);
+ addsd(xmm5, xmm2);
+ addsd(xmm7, xmm1);
+ movdqu(xmm2, ExternalAddress(64 + coeff)); //0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL
+ subsd(xmm4, xmm7);
+ addsd(xmm6, xmm5);
+ addsd(xmm4, xmm1);
+ pshufd(xmm5, xmm7, 238);
+ movapd(xmm1, xmm7);
+ addsd(xmm7, xmm5);
+ subsd(xmm1, xmm7);
+ addsd(xmm1, xmm5);
+ movdqu(xmm5, ExternalAddress(80 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL
+ pshufd(xmm3, xmm3, 68);
+ addsd(xmm6, xmm4);
+ addsd(xmm6, xmm1);
+ movdqu(xmm1, ExternalAddress(32 + coeff)); //0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL, 0xbfd619b6UL
+ mulpd(xmm0, xmm3);
+ mulpd(xmm2, xmm3);
+ pshufd(xmm4, xmm3, 68);
+ mulpd(xmm3, xmm3);
+ addpd(xmm0, xmm1);
+ addpd(xmm5, xmm2);
+ mulsd(xmm4, xmm3);
+ movq(xmm2, ExternalAddress(HIGHMASK_LOG_X)); //0xf8000000UL, 0xffffffffUL, 0x00000000UL, 0xfffff800UL
+ mulpd(xmm3, xmm3);
+ movq(xmm1, Address(rsp, 16));
+ movw(ecx, Address(rsp, 22));
+ mulpd(xmm0, xmm4);
+ pextrw(eax, xmm7, 3);
+ mulpd(xmm5, xmm4);
+ mulpd(xmm0, xmm3);
+ movq(xmm4, ExternalAddress(8 + HIGHMASK_Y)); //0x00000000UL, 0xffffffffUL
+ pand(xmm2, xmm7);
+ addsd(xmm5, xmm6);
+ subsd(xmm7, xmm2);
+ addpd(xmm5, xmm0);
+ andl(eax, 32752);
+ subl(eax, 16368);
+ andl(ecx, 32752);
+ cmpl(ecx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
+ addl(ecx, eax);
+ cmpl(ecx, 16576);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_51_0_2);
+ pshufd(xmm0, xmm5, 238);
+ pand(xmm4, xmm1);
+ movdqu(xmm3, xmm1);
+ addsd(xmm5, xmm0);
+ subsd(xmm1, xmm4);
+ xorpd(xmm6, xmm6);
+ movl(edx, 17080);
+ pinsrw(xmm6, edx, 3);
+ addsd(xmm7, xmm5);
+ mulsd(xmm4, xmm2);
+ mulsd(xmm1, xmm2);
+ movdqu(xmm5, xmm6);
+ mulsd(xmm3, xmm7);
+ addsd(xmm6, xmm4);
+ addsd(xmm1, xmm3);
+ movdqu(xmm7, ExternalAddress(e_coeff)); //0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL
+ movdl(edx, xmm6);
+ subsd(xmm6, xmm5);
+ lea(tmp4, ExternalAddress(T_exp));
+ movdqu(xmm3, ExternalAddress(16 + e_coeff)); //0x6fba4e77UL, 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL
+ movq(xmm2, ExternalAddress(32 + e_coeff)); //0xfefa39efUL, 0x3fe62e42UL, 0x00000000UL, 0x00000000UL
+ subsd(xmm4, xmm6);
+ movl(ecx, edx);
+ andl(edx, 255);
+ addl(edx, edx);
+ movdqu(xmm5, Address(tmp4, edx, Address::times_8, 0));
+ addsd(xmm4, xmm1);
+ pextrw(edx, xmm6, 3);
+ shrl(ecx, 8);
+ movl(eax, ecx);
+ shrl(ecx, 1);
+ subl(eax, ecx);
+ shll(ecx, 20);
+ movdl(xmm6, ecx);
+ pshufd(xmm0, xmm4, 68);
+ pshufd(xmm1, xmm4, 68);
+ mulpd(xmm0, xmm0);
+ mulpd(xmm7, xmm1);
+ pshufd(xmm6, xmm6, 17);
+ mulsd(xmm2, xmm4);
+ andl(edx, 32767);
+ cmpl(edx, 16529);
+ jcc(Assembler::above, L_2TAG_PACKET_12_0_2);
+ mulsd(xmm0, xmm0);
+ paddd(xmm5, xmm6);
+ addpd(xmm3, xmm7);
+ mulsd(xmm2, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulpd(xmm0, xmm3);
+ addsd(xmm2, xmm6);
+ pshufd(xmm3, xmm0, 238);
+ addl(eax, 1023);
+ shll(eax, 20);
+ orl(eax, tmp1);
+ movdl(xmm4, eax);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ addsd(xmm0, xmm2);
+ psllq(xmm4, 32);
+ addsd(xmm0, xmm3);
+ movdqu(xmm1, xmm0);
+ addsd(xmm0, xmm5);
+ mulsd(xmm0, xmm4);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_13_0_2);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_14_0_2);
+
+ bind(L_2TAG_PACKET_52_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_45_0_2);
+ movq(xmm0, Address(rsp, 8));
+ xorpd(xmm2, xmm2);
+ movl(eax, 49136);
+ pinsrw(xmm2, eax, 3);
+ addsd(xmm2, xmm0);
+ pextrw(eax, xmm2, 3);
+ cmpl(eax, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_53_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32760);
+ pinsrw(xmm0, eax, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_53_0_2);
+ movq(xmm1, Address(rsp, 16));
+ movdl(edx, xmm1);
+ movdqu(xmm3, xmm1);
+ psrlq(xmm3, 20);
+ movdl(ecx, xmm3);
+ orl(ecx, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_54_0_2);
+ addsd(xmm1, xmm1);
+ movdqu(xmm0, xmm1);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_51_0_2);
+ pextrw(eax, xmm1, 3);
+ pextrw(ecx, xmm2, 3);
+ xorl(eax, ecx);
+ testl(eax, 32768);
+ jcc(Assembler::equal, L_2TAG_PACKET_47_0_2);
+ jmp(L_2TAG_PACKET_46_0_2);
+
+ bind(L_2TAG_PACKET_54_0_2);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ pextrw(edx, xmm1, 3);
+ xorpd(xmm0, xmm0);
+ subl(eax, 16368);
+ xorl(eax, edx);
+ testl(eax, 32768);
+ jcc(Assembler::equal, L_2TAG_PACKET_55_0_2);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_55_0_2);
+ movl(edx, 32752);
+ pinsrw(xmm0, edx, 3);
+ jmp(B1_5);
+
+ bind(L_2TAG_PACKET_17_0_2);
+ movq(Address(rsp, 24), xmm0);
+
+ bind(B1_3);
+ movq(xmm0, Address(rsp, 24));
+
+ bind(L_2TAG_PACKET_56_0_2);
+
+ bind(B1_5);
+ addq(rsp, 40);
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _static_const_table_pow[] =
+{
+ 0x00000000UL, 0xbfd61a00UL, 0x00000000UL, 0xbf5dabe1UL, 0xf8000000UL,
+ 0xffffffffUL, 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0x00000000UL, 0x20000000UL, 0x3feff00aUL, 0x96621f95UL,
+ 0x3e5b1856UL, 0xe0000000UL, 0x3fefe019UL, 0xe5916f9eUL, 0xbe325278UL,
+ 0x00000000UL, 0x3fefd02fUL, 0x859a1062UL, 0x3e595fb7UL, 0xc0000000UL,
+ 0x3fefc049UL, 0xb245f18fUL, 0xbe529c38UL, 0xe0000000UL, 0x3fefb069UL,
+ 0xad2880a7UL, 0xbe501230UL, 0x60000000UL, 0x3fefa08fUL, 0xc8e72420UL,
+ 0x3e597bd1UL, 0x80000000UL, 0x3fef90baUL, 0xc30c4500UL, 0xbe5d6c75UL,
+ 0xe0000000UL, 0x3fef80eaUL, 0x02c63f43UL, 0x3e2e1318UL, 0xc0000000UL,
+ 0x3fef7120UL, 0xb3d4ccccUL, 0xbe44c52aUL, 0x00000000UL, 0x3fef615cUL,
+ 0xdbd91397UL, 0xbe4e7d6cUL, 0xa0000000UL, 0x3fef519cUL, 0x65c5cd68UL,
+ 0xbe522dc8UL, 0xa0000000UL, 0x3fef41e2UL, 0x46d1306cUL, 0xbe5a840eUL,
+ 0xe0000000UL, 0x3fef322dUL, 0xd2980e94UL, 0x3e5071afUL, 0xa0000000UL,
+ 0x3fef227eUL, 0x773abadeUL, 0xbe5891e5UL, 0xa0000000UL, 0x3fef12d4UL,
+ 0xdc6bf46bUL, 0xbe5cccbeUL, 0xe0000000UL, 0x3fef032fUL, 0xbc7247faUL,
+ 0xbe2bab83UL, 0x80000000UL, 0x3feef390UL, 0xbcaa1e46UL, 0xbe53bb3bUL,
+ 0x60000000UL, 0x3feee3f6UL, 0x5f6c682dUL, 0xbe54c619UL, 0x80000000UL,
+ 0x3feed461UL, 0x5141e368UL, 0xbe4b6d86UL, 0xe0000000UL, 0x3feec4d1UL,
+ 0xec678f76UL, 0xbe369af6UL, 0x80000000UL, 0x3feeb547UL, 0x41301f55UL,
+ 0xbe2d4312UL, 0x60000000UL, 0x3feea5c2UL, 0x676da6bdUL, 0xbe4d8dd0UL,
+ 0x60000000UL, 0x3fee9642UL, 0x57a891c4UL, 0x3e51f991UL, 0xa0000000UL,
+ 0x3fee86c7UL, 0xe4eb491eUL, 0x3e579bf9UL, 0x20000000UL, 0x3fee7752UL,
+ 0xfddc4a2cUL, 0xbe3356e6UL, 0xc0000000UL, 0x3fee67e1UL, 0xd75b5bf1UL,
+ 0xbe449531UL, 0x80000000UL, 0x3fee5876UL, 0xbd423b8eUL, 0x3df54fe4UL,
+ 0x60000000UL, 0x3fee4910UL, 0x330e51b9UL, 0x3e54289cUL, 0x80000000UL,
+ 0x3fee39afUL, 0x8651a95fUL, 0xbe55aad6UL, 0xa0000000UL, 0x3fee2a53UL,
+ 0x5e98c708UL, 0xbe2fc4a9UL, 0xe0000000UL, 0x3fee1afcUL, 0x0989328dUL,
+ 0x3e23958cUL, 0x40000000UL, 0x3fee0babUL, 0xee642abdUL, 0xbe425dd8UL,
+ 0xa0000000UL, 0x3fedfc5eUL, 0xc394d236UL, 0x3e526362UL, 0x20000000UL,
+ 0x3feded17UL, 0xe104aa8eUL, 0x3e4ce247UL, 0xc0000000UL, 0x3fedddd4UL,
+ 0x265a9be4UL, 0xbe5bb77aUL, 0x40000000UL, 0x3fedce97UL, 0x0ecac52fUL,
+ 0x3e4a7cb1UL, 0xe0000000UL, 0x3fedbf5eUL, 0x124cb3b8UL, 0x3e257024UL,
+ 0x80000000UL, 0x3fedb02bUL, 0xe6d4febeUL, 0xbe2033eeUL, 0x20000000UL,
+ 0x3feda0fdUL, 0x39cca00eUL, 0xbe3ddabcUL, 0xc0000000UL, 0x3fed91d3UL,
+ 0xef8a552aUL, 0xbe543390UL, 0x40000000UL, 0x3fed82afUL, 0xb8e85204UL,
+ 0x3e513850UL, 0xe0000000UL, 0x3fed738fUL, 0x3d59fe08UL, 0xbe5db728UL,
+ 0x40000000UL, 0x3fed6475UL, 0x3aa7ead1UL, 0x3e58804bUL, 0xc0000000UL,
+ 0x3fed555fUL, 0xf8a35ba9UL, 0xbe5298b0UL, 0x00000000UL, 0x3fed464fUL,
+ 0x9a88dd15UL, 0x3e5a8cdbUL, 0x40000000UL, 0x3fed3743UL, 0xb0b0a190UL,
+ 0x3e598635UL, 0x80000000UL, 0x3fed283cUL, 0xe2113295UL, 0xbe5c1119UL,
+ 0x80000000UL, 0x3fed193aUL, 0xafbf1728UL, 0xbe492e9cUL, 0x60000000UL,
+ 0x3fed0a3dUL, 0xe4a4ccf3UL, 0x3e19b90eUL, 0x20000000UL, 0x3fecfb45UL,
+ 0xba3cbeb8UL, 0x3e406b50UL, 0xc0000000UL, 0x3fecec51UL, 0x110f7dddUL,
+ 0x3e0d6806UL, 0x40000000UL, 0x3fecdd63UL, 0x7dd7d508UL, 0xbe5a8943UL,
+ 0x80000000UL, 0x3fecce79UL, 0x9b60f271UL, 0xbe50676aUL, 0x80000000UL,
+ 0x3fecbf94UL, 0x0b9ad660UL, 0x3e59174fUL, 0x60000000UL, 0x3fecb0b4UL,
+ 0x00823d9cUL, 0x3e5bbf72UL, 0x20000000UL, 0x3feca1d9UL, 0x38a6ec89UL,
+ 0xbe4d38f9UL, 0x80000000UL, 0x3fec9302UL, 0x3a0b7d8eUL, 0x3e53dbfdUL,
+ 0xc0000000UL, 0x3fec8430UL, 0xc6826b34UL, 0xbe27c5c9UL, 0xc0000000UL,
+ 0x3fec7563UL, 0x0c706381UL, 0xbe593653UL, 0x60000000UL, 0x3fec669bUL,
+ 0x7df34ec7UL, 0x3e461ab5UL, 0xe0000000UL, 0x3fec57d7UL, 0x40e5e7e8UL,
+ 0xbe5c3daeUL, 0x00000000UL, 0x3fec4919UL, 0x5602770fUL, 0xbe55219dUL,
+ 0xc0000000UL, 0x3fec3a5eUL, 0xec7911ebUL, 0x3e5a5d25UL, 0x60000000UL,
+ 0x3fec2ba9UL, 0xb39ea225UL, 0xbe53c00bUL, 0x80000000UL, 0x3fec1cf8UL,
+ 0x967a212eUL, 0x3e5a8ddfUL, 0x60000000UL, 0x3fec0e4cUL, 0x580798bdUL,
+ 0x3e5f53abUL, 0x00000000UL, 0x3febffa5UL, 0xb8282df6UL, 0xbe46b874UL,
+ 0x20000000UL, 0x3febf102UL, 0xe33a6729UL, 0x3e54963fUL, 0x00000000UL,
+ 0x3febe264UL, 0x3b53e88aUL, 0xbe3adce1UL, 0x60000000UL, 0x3febd3caUL,
+ 0xc2585084UL, 0x3e5cde9fUL, 0x80000000UL, 0x3febc535UL, 0xa335c5eeUL,
+ 0xbe39fd9cUL, 0x20000000UL, 0x3febb6a5UL, 0x7325b04dUL, 0x3e42ba15UL,
+ 0x60000000UL, 0x3feba819UL, 0x1564540fUL, 0x3e3a9f35UL, 0x40000000UL,
+ 0x3feb9992UL, 0x83fff592UL, 0xbe5465ceUL, 0xa0000000UL, 0x3feb8b0fUL,
+ 0xb9da63d3UL, 0xbe4b1a0aUL, 0x80000000UL, 0x3feb7c91UL, 0x6d6f1ea4UL,
+ 0x3e557657UL, 0x00000000UL, 0x3feb6e18UL, 0x5e80a1bfUL, 0x3e4ddbb6UL,
+ 0x00000000UL, 0x3feb5fa3UL, 0x1c9eacb5UL, 0x3e592877UL, 0xa0000000UL,
+ 0x3feb5132UL, 0x6d40beb3UL, 0xbe51858cUL, 0xa0000000UL, 0x3feb42c6UL,
+ 0xd740c67bUL, 0x3e427ad2UL, 0x40000000UL, 0x3feb345fUL, 0xa3e0cceeUL,
+ 0xbe5c2fc4UL, 0x40000000UL, 0x3feb25fcUL, 0x8e752b50UL, 0xbe3da3c2UL,
+ 0xc0000000UL, 0x3feb179dUL, 0xa892e7deUL, 0x3e1fb481UL, 0xc0000000UL,
+ 0x3feb0943UL, 0x21ed71e9UL, 0xbe365206UL, 0x20000000UL, 0x3feafaeeUL,
+ 0x0e1380a3UL, 0x3e5c5b7bUL, 0x20000000UL, 0x3feaec9dUL, 0x3c3d640eUL,
+ 0xbe5dbbd0UL, 0x60000000UL, 0x3feade50UL, 0x8f97a715UL, 0x3e3a8ec5UL,
+ 0x20000000UL, 0x3fead008UL, 0x23ab2839UL, 0x3e2fe98aUL, 0x40000000UL,
+ 0x3feac1c4UL, 0xf4bbd50fUL, 0x3e54d8f6UL, 0xe0000000UL, 0x3feab384UL,
+ 0x14757c4dUL, 0xbe48774cUL, 0xc0000000UL, 0x3feaa549UL, 0x7c7b0eeaUL,
+ 0x3e5b51bbUL, 0x20000000UL, 0x3fea9713UL, 0xf56f7013UL, 0x3e386200UL,
+ 0xe0000000UL, 0x3fea88e0UL, 0xbe428ebeUL, 0xbe514af5UL, 0xe0000000UL,
+ 0x3fea7ab2UL, 0x8d0e4496UL, 0x3e4f9165UL, 0x60000000UL, 0x3fea6c89UL,
+ 0xdbacc5d5UL, 0xbe5c063bUL, 0x20000000UL, 0x3fea5e64UL, 0x3f19d970UL,
+ 0xbe5a0c8cUL, 0x20000000UL, 0x3fea5043UL, 0x09ea3e6bUL, 0x3e5065dcUL,
+ 0x80000000UL, 0x3fea4226UL, 0x78df246cUL, 0x3e5e05f6UL, 0x40000000UL,
+ 0x3fea340eUL, 0x4057d4a0UL, 0x3e431b2bUL, 0x40000000UL, 0x3fea25faUL,
+ 0x82867bb5UL, 0x3e4b76beUL, 0xa0000000UL, 0x3fea17eaUL, 0x9436f40aUL,
+ 0xbe5aad39UL, 0x20000000UL, 0x3fea09dfUL, 0x4b5253b3UL, 0x3e46380bUL,
+ 0x00000000UL, 0x3fe9fbd8UL, 0x8fc52466UL, 0xbe386f9bUL, 0x20000000UL,
+ 0x3fe9edd5UL, 0x22d3f344UL, 0xbe538347UL, 0x60000000UL, 0x3fe9dfd6UL,
+ 0x1ac33522UL, 0x3e5dbc53UL, 0x00000000UL, 0x3fe9d1dcUL, 0xeabdff1dUL,
+ 0x3e40fc0cUL, 0xe0000000UL, 0x3fe9c3e5UL, 0xafd30e73UL, 0xbe585e63UL,
+ 0xe0000000UL, 0x3fe9b5f3UL, 0xa52f226aUL, 0xbe43e8f9UL, 0x20000000UL,
+ 0x3fe9a806UL, 0xecb8698dUL, 0xbe515b36UL, 0x80000000UL, 0x3fe99a1cUL,
+ 0xf2b4e89dUL, 0x3e48b62bUL, 0x20000000UL, 0x3fe98c37UL, 0x7c9a88fbUL,
+ 0x3e44414cUL, 0x00000000UL, 0x3fe97e56UL, 0xda015741UL, 0xbe5d13baUL,
+ 0xe0000000UL, 0x3fe97078UL, 0x5fdace06UL, 0x3e51b947UL, 0x00000000UL,
+ 0x3fe962a0UL, 0x956ca094UL, 0x3e518785UL, 0x40000000UL, 0x3fe954cbUL,
+ 0x01164c1dUL, 0x3e5d5b57UL, 0xc0000000UL, 0x3fe946faUL, 0xe63b3767UL,
+ 0xbe4f84e7UL, 0x40000000UL, 0x3fe9392eUL, 0xe57cc2a9UL, 0x3e34eda3UL,
+ 0xe0000000UL, 0x3fe92b65UL, 0x8c75b544UL, 0x3e5766a0UL, 0xc0000000UL,
+ 0x3fe91da1UL, 0x37d1d087UL, 0xbe5e2ab1UL, 0x80000000UL, 0x3fe90fe1UL,
+ 0xa953dc20UL, 0x3e5fa1f3UL, 0x80000000UL, 0x3fe90225UL, 0xdbd3f369UL,
+ 0x3e47d6dbUL, 0xa0000000UL, 0x3fe8f46dUL, 0x1c9be989UL, 0xbe5e2b0aUL,
+ 0xa0000000UL, 0x3fe8e6b9UL, 0x3c93d76aUL, 0x3e5c8618UL, 0xe0000000UL,
+ 0x3fe8d909UL, 0x2182fc9aUL, 0xbe41aa9eUL, 0x20000000UL, 0x3fe8cb5eUL,
+ 0xe6b3539dUL, 0xbe530d19UL, 0x60000000UL, 0x3fe8bdb6UL, 0x49e58cc3UL,
+ 0xbe3bb374UL, 0xa0000000UL, 0x3fe8b012UL, 0xa7cfeb8fUL, 0x3e56c412UL,
+ 0x00000000UL, 0x3fe8a273UL, 0x8d52bc19UL, 0x3e1429b8UL, 0x60000000UL,
+ 0x3fe894d7UL, 0x4dc32c6cUL, 0xbe48604cUL, 0xc0000000UL, 0x3fe8873fUL,
+ 0x0c868e56UL, 0xbe564ee5UL, 0x00000000UL, 0x3fe879acUL, 0x56aee828UL,
+ 0x3e5e2fd8UL, 0x60000000UL, 0x3fe86c1cUL, 0x7ceab8ecUL, 0x3e493365UL,
+ 0xc0000000UL, 0x3fe85e90UL, 0x78d4dadcUL, 0xbe4f7f25UL, 0x00000000UL,
+ 0x3fe85109UL, 0x0ccd8280UL, 0x3e31e7a2UL, 0x40000000UL, 0x3fe84385UL,
+ 0x34ba4e15UL, 0x3e328077UL, 0x80000000UL, 0x3fe83605UL, 0xa670975aUL,
+ 0xbe53eee5UL, 0xa0000000UL, 0x3fe82889UL, 0xf61b77b2UL, 0xbe43a20aUL,
+ 0xa0000000UL, 0x3fe81b11UL, 0x13e6643bUL, 0x3e5e5fe5UL, 0xc0000000UL,
+ 0x3fe80d9dUL, 0x82cc94e8UL, 0xbe5ff1f9UL, 0xa0000000UL, 0x3fe8002dUL,
+ 0x8a0c9c5dUL, 0xbe42b0e7UL, 0x60000000UL, 0x3fe7f2c1UL, 0x22a16f01UL,
+ 0x3e5d9ea0UL, 0x20000000UL, 0x3fe7e559UL, 0xc38cd451UL, 0x3e506963UL,
+ 0xc0000000UL, 0x3fe7d7f4UL, 0x9902bc71UL, 0x3e4503d7UL, 0x40000000UL,
+ 0x3fe7ca94UL, 0xdef2a3c0UL, 0x3e3d98edUL, 0xa0000000UL, 0x3fe7bd37UL,
+ 0xed49abb0UL, 0x3e24c1ffUL, 0xe0000000UL, 0x3fe7afdeUL, 0xe3b0be70UL,
+ 0xbe40c467UL, 0x00000000UL, 0x3fe7a28aUL, 0xaf9f193cUL, 0xbe5dff6cUL,
+ 0xe0000000UL, 0x3fe79538UL, 0xb74cf6b6UL, 0xbe258ed0UL, 0xa0000000UL,
+ 0x3fe787ebUL, 0x1d9127c7UL, 0x3e345fb0UL, 0x40000000UL, 0x3fe77aa2UL,
+ 0x1028c21dUL, 0xbe4619bdUL, 0xa0000000UL, 0x3fe76d5cUL, 0x7cb0b5e4UL,
+ 0x3e40f1a2UL, 0xe0000000UL, 0x3fe7601aUL, 0x2b1bc4adUL, 0xbe32e8bbUL,
+ 0xe0000000UL, 0x3fe752dcUL, 0x6839f64eUL, 0x3e41f57bUL, 0xc0000000UL,
+ 0x3fe745a2UL, 0xc4121f7eUL, 0xbe52c40aUL, 0x60000000UL, 0x3fe7386cUL,
+ 0xd6852d72UL, 0xbe5c4e6bUL, 0xc0000000UL, 0x3fe72b39UL, 0x91d690f7UL,
+ 0xbe57f88fUL, 0xe0000000UL, 0x3fe71e0aUL, 0x627a2159UL, 0xbe4425d5UL,
+ 0xc0000000UL, 0x3fe710dfUL, 0x50a54033UL, 0x3e422b7eUL, 0x60000000UL,
+ 0x3fe703b8UL, 0x3b0b5f91UL, 0x3e5d3857UL, 0xe0000000UL, 0x3fe6f694UL,
+ 0x84d628a2UL, 0xbe51f090UL, 0x00000000UL, 0x3fe6e975UL, 0x306d8894UL,
+ 0xbe414d83UL, 0xe0000000UL, 0x3fe6dc58UL, 0x30bf24aaUL, 0xbe4650caUL,
+ 0x80000000UL, 0x3fe6cf40UL, 0xd4628d69UL, 0xbe5db007UL, 0xc0000000UL,
+ 0x3fe6c22bUL, 0xa2aae57bUL, 0xbe31d279UL, 0xc0000000UL, 0x3fe6b51aUL,
+ 0x860edf7eUL, 0xbe2d4c4aUL, 0x80000000UL, 0x3fe6a80dUL, 0xf3559341UL,
+ 0xbe5f7e98UL, 0xe0000000UL, 0x3fe69b03UL, 0xa885899eUL, 0xbe5c2011UL,
+ 0xe0000000UL, 0x3fe68dfdUL, 0x2bdc6d37UL, 0x3e224a82UL, 0xa0000000UL,
+ 0x3fe680fbUL, 0xc12ad1b9UL, 0xbe40cf56UL, 0x00000000UL, 0x3fe673fdUL,
+ 0x1bcdf659UL, 0xbdf52f2dUL, 0x00000000UL, 0x3fe66702UL, 0x5df10408UL,
+ 0x3e5663e0UL, 0xc0000000UL, 0x3fe65a0aUL, 0xa4070568UL, 0xbe40b12fUL,
+ 0x00000000UL, 0x3fe64d17UL, 0x71c54c47UL, 0x3e5f5e8bUL, 0x00000000UL,
+ 0x3fe64027UL, 0xbd4b7e83UL, 0x3e42ead6UL, 0xa0000000UL, 0x3fe6333aUL,
+ 0x61598bd2UL, 0xbe4c48d4UL, 0xc0000000UL, 0x3fe62651UL, 0x6f538d61UL,
+ 0x3e548401UL, 0xa0000000UL, 0x3fe6196cUL, 0x14344120UL, 0xbe529af6UL,
+ 0x00000000UL, 0x3fe60c8bUL, 0x5982c587UL, 0xbe3e1e4fUL, 0x00000000UL,
+ 0x3fe5ffadUL, 0xfe51d4eaUL, 0xbe4c897aUL, 0x80000000UL, 0x3fe5f2d2UL,
+ 0xfd46ebe1UL, 0x3e552e00UL, 0xa0000000UL, 0x3fe5e5fbUL, 0xa4695699UL,
+ 0x3e5ed471UL, 0x60000000UL, 0x3fe5d928UL, 0x80d118aeUL, 0x3e456b61UL,
+ 0xa0000000UL, 0x3fe5cc58UL, 0x304c330bUL, 0x3e54dc29UL, 0x80000000UL,
+ 0x3fe5bf8cUL, 0x0af2dedfUL, 0xbe3aa9bdUL, 0xe0000000UL, 0x3fe5b2c3UL,
+ 0x15fc9258UL, 0xbe479a37UL, 0xc0000000UL, 0x3fe5a5feUL, 0x9292c7eaUL,
+ 0x3e188650UL, 0x20000000UL, 0x3fe5993dUL, 0x33b4d380UL, 0x3e5d6d93UL,
+ 0x20000000UL, 0x3fe58c7fUL, 0x02fd16c7UL, 0x3e2fe961UL, 0xa0000000UL,
+ 0x3fe57fc4UL, 0x4a05edb6UL, 0xbe4d55b4UL, 0xa0000000UL, 0x3fe5730dUL,
+ 0x3d443abbUL, 0xbe5e6954UL, 0x00000000UL, 0x3fe5665aUL, 0x024acfeaUL,
+ 0x3e50e61bUL, 0x00000000UL, 0x3fe559aaUL, 0xcc9edd09UL, 0xbe325403UL,
+ 0x60000000UL, 0x3fe54cfdUL, 0x1fe26950UL, 0x3e5d500eUL, 0x60000000UL,
+ 0x3fe54054UL, 0x6c5ae164UL, 0xbe4a79b4UL, 0xc0000000UL, 0x3fe533aeUL,
+ 0x154b0287UL, 0xbe401571UL, 0xa0000000UL, 0x3fe5270cUL, 0x0673f401UL,
+ 0xbe56e56bUL, 0xe0000000UL, 0x3fe51a6dUL, 0x751b639cUL, 0x3e235269UL,
+ 0xa0000000UL, 0x3fe50dd2UL, 0x7c7b2bedUL, 0x3ddec887UL, 0xc0000000UL,
+ 0x3fe5013aUL, 0xafab4e17UL, 0x3e5e7575UL, 0x60000000UL, 0x3fe4f4a6UL,
+ 0x2e308668UL, 0x3e59aed6UL, 0x80000000UL, 0x3fe4e815UL, 0xf33e2a76UL,
+ 0xbe51f184UL, 0xe0000000UL, 0x3fe4db87UL, 0x839f3e3eUL, 0x3e57db01UL,
+ 0xc0000000UL, 0x3fe4cefdUL, 0xa9eda7bbUL, 0x3e535e0fUL, 0x00000000UL,
+ 0x3fe4c277UL, 0x2a8f66a5UL, 0x3e5ce451UL, 0xc0000000UL, 0x3fe4b5f3UL,
+ 0x05192456UL, 0xbe4e8518UL, 0xc0000000UL, 0x3fe4a973UL, 0x4aa7cd1dUL,
+ 0x3e46784aUL, 0x40000000UL, 0x3fe49cf7UL, 0x8e23025eUL, 0xbe5749f2UL,
+ 0x00000000UL, 0x3fe4907eUL, 0x18d30215UL, 0x3e360f39UL, 0x20000000UL,
+ 0x3fe48408UL, 0x63dcf2f3UL, 0x3e5e00feUL, 0xc0000000UL, 0x3fe47795UL,
+ 0x46182d09UL, 0xbe5173d9UL, 0xa0000000UL, 0x3fe46b26UL, 0x8f0e62aaUL,
+ 0xbe48f281UL, 0xe0000000UL, 0x3fe45ebaUL, 0x5775c40cUL, 0xbe56aad4UL,
+ 0x60000000UL, 0x3fe45252UL, 0x0fe25f69UL, 0x3e48bd71UL, 0x40000000UL,
+ 0x3fe445edUL, 0xe9989ec5UL, 0x3e590d97UL, 0x80000000UL, 0x3fe4398bUL,
+ 0xb3d9ffe3UL, 0x3e479dbcUL, 0x20000000UL, 0x3fe42d2dUL, 0x388e4d2eUL,
+ 0xbe5eed80UL, 0xe0000000UL, 0x3fe420d1UL, 0x6f797c18UL, 0x3e554b4cUL,
+ 0x20000000UL, 0x3fe4147aUL, 0x31048bb4UL, 0xbe5b1112UL, 0x80000000UL,
+ 0x3fe40825UL, 0x2efba4f9UL, 0x3e48ebc7UL, 0x40000000UL, 0x3fe3fbd4UL,
+ 0x50201119UL, 0x3e40b701UL, 0x40000000UL, 0x3fe3ef86UL, 0x0a4db32cUL,
+ 0x3e551de8UL, 0xa0000000UL, 0x3fe3e33bUL, 0x0c9c148bUL, 0xbe50c1f6UL,
+ 0x20000000UL, 0x3fe3d6f4UL, 0xc9129447UL, 0x3e533fa0UL, 0x00000000UL,
+ 0x3fe3cab0UL, 0xaae5b5a0UL, 0xbe22b68eUL, 0x20000000UL, 0x3fe3be6fUL,
+ 0x02305e8aUL, 0xbe54fc08UL, 0x60000000UL, 0x3fe3b231UL, 0x7f908258UL,
+ 0x3e57dc05UL, 0x00000000UL, 0x3fe3a5f7UL, 0x1a09af78UL, 0x3e08038bUL,
+ 0xe0000000UL, 0x3fe399bfUL, 0x490643c1UL, 0xbe5dbe42UL, 0xe0000000UL,
+ 0x3fe38d8bUL, 0x5e8ad724UL, 0xbe3c2b72UL, 0x20000000UL, 0x3fe3815bUL,
+ 0xc67196b6UL, 0x3e1713cfUL, 0xa0000000UL, 0x3fe3752dUL, 0x6182e429UL,
+ 0xbe3ec14cUL, 0x40000000UL, 0x3fe36903UL, 0xab6eb1aeUL, 0x3e5a2cc5UL,
+ 0x40000000UL, 0x3fe35cdcUL, 0xfe5dc064UL, 0xbe5c5878UL, 0x40000000UL,
+ 0x3fe350b8UL, 0x0ba6b9e4UL, 0x3e51619bUL, 0x80000000UL, 0x3fe34497UL,
+ 0x857761aaUL, 0x3e5fff53UL, 0x00000000UL, 0x3fe3387aUL, 0xf872d68cUL,
+ 0x3e484f4dUL, 0xa0000000UL, 0x3fe32c5fUL, 0x087e97c2UL, 0x3e52842eUL,
+ 0x80000000UL, 0x3fe32048UL, 0x73d6d0c0UL, 0xbe503edfUL, 0x80000000UL,
+ 0x3fe31434UL, 0x0c1456a1UL, 0xbe5f72adUL, 0xa0000000UL, 0x3fe30823UL,
+ 0x83a1a4d5UL, 0xbe5e65ccUL, 0xe0000000UL, 0x3fe2fc15UL, 0x855a7390UL,
+ 0xbe506438UL, 0x40000000UL, 0x3fe2f00bUL, 0xa2898287UL, 0x3e3d22a2UL,
+ 0xe0000000UL, 0x3fe2e403UL, 0x8b56f66fUL, 0xbe5aa5fdUL, 0x80000000UL,
+ 0x3fe2d7ffUL, 0x52db119aUL, 0x3e3a2e3dUL, 0x60000000UL, 0x3fe2cbfeUL,
+ 0xe2ddd4c0UL, 0xbe586469UL, 0x40000000UL, 0x3fe2c000UL, 0x6b01bf10UL,
+ 0x3e352b9dUL, 0x40000000UL, 0x3fe2b405UL, 0xb07a1cdfUL, 0x3e5c5cdaUL,
+ 0x80000000UL, 0x3fe2a80dUL, 0xc7b5f868UL, 0xbe5668b3UL, 0xc0000000UL,
+ 0x3fe29c18UL, 0x185edf62UL, 0xbe563d66UL, 0x00000000UL, 0x3fe29027UL,
+ 0xf729e1ccUL, 0x3e59a9a0UL, 0x80000000UL, 0x3fe28438UL, 0x6433c727UL,
+ 0xbe43cc89UL, 0x00000000UL, 0x3fe2784dUL, 0x41782631UL, 0xbe30750cUL,
+ 0xa0000000UL, 0x3fe26c64UL, 0x914911b7UL, 0xbe58290eUL, 0x40000000UL,
+ 0x3fe2607fUL, 0x3dcc73e1UL, 0xbe4269cdUL, 0x00000000UL, 0x3fe2549dUL,
+ 0x2751bf70UL, 0xbe5a6998UL, 0xc0000000UL, 0x3fe248bdUL, 0x4248b9fbUL,
+ 0xbe4ddb00UL, 0x80000000UL, 0x3fe23ce1UL, 0xf35cf82fUL, 0x3e561b71UL,
+ 0x60000000UL, 0x3fe23108UL, 0x8e481a2dUL, 0x3e518fb9UL, 0x60000000UL,
+ 0x3fe22532UL, 0x5ab96edcUL, 0xbe5fafc5UL, 0x40000000UL, 0x3fe2195fUL,
+ 0x80943911UL, 0xbe07f819UL, 0x40000000UL, 0x3fe20d8fUL, 0x386f2d6cUL,
+ 0xbe54ba8bUL, 0x40000000UL, 0x3fe201c2UL, 0xf29664acUL, 0xbe5eb815UL,
+ 0x20000000UL, 0x3fe1f5f8UL, 0x64f03390UL, 0x3e5e320cUL, 0x20000000UL,
+ 0x3fe1ea31UL, 0x747ff696UL, 0x3e5ef0a5UL, 0x40000000UL, 0x3fe1de6dUL,
+ 0x3e9ceb51UL, 0xbe5f8d27UL, 0x20000000UL, 0x3fe1d2acUL, 0x4ae0b55eUL,
+ 0x3e5faa21UL, 0x20000000UL, 0x3fe1c6eeUL, 0x28569a5eUL, 0x3e598a4fUL,
+ 0x20000000UL, 0x3fe1bb33UL, 0x54b33e07UL, 0x3e46130aUL, 0x20000000UL,
+ 0x3fe1af7bUL, 0x024f1078UL, 0xbe4dbf93UL, 0x00000000UL, 0x3fe1a3c6UL,
+ 0xb0783bfaUL, 0x3e419248UL, 0xe0000000UL, 0x3fe19813UL, 0x2f02b836UL,
+ 0x3e4e02b7UL, 0xc0000000UL, 0x3fe18c64UL, 0x28dec9d4UL, 0x3e09064fUL,
+ 0x80000000UL, 0x3fe180b8UL, 0x45cbf406UL, 0x3e5b1f46UL, 0x40000000UL,
+ 0x3fe1750fUL, 0x03d9964cUL, 0x3e5b0a79UL, 0x00000000UL, 0x3fe16969UL,
+ 0x8b5b882bUL, 0xbe238086UL, 0xa0000000UL, 0x3fe15dc5UL, 0x73bad6f8UL,
+ 0xbdf1fca4UL, 0x20000000UL, 0x3fe15225UL, 0x5385769cUL, 0x3e5e8d76UL,
+ 0xa0000000UL, 0x3fe14687UL, 0x1676dc6bUL, 0x3e571d08UL, 0x20000000UL,
+ 0x3fe13aedUL, 0xa8c41c7fUL, 0xbe598a25UL, 0x60000000UL, 0x3fe12f55UL,
+ 0xc4e1aaf0UL, 0x3e435277UL, 0xa0000000UL, 0x3fe123c0UL, 0x403638e1UL,
+ 0xbe21aa7cUL, 0xc0000000UL, 0x3fe1182eUL, 0x557a092bUL, 0xbdd0116bUL,
+ 0xc0000000UL, 0x3fe10c9fUL, 0x7d779f66UL, 0x3e4a61baUL, 0xc0000000UL,
+ 0x3fe10113UL, 0x2b09c645UL, 0xbe5d586eUL, 0x20000000UL, 0x3fe0ea04UL,
+ 0xea2cad46UL, 0x3e5aa97cUL, 0x20000000UL, 0x3fe0d300UL, 0x23190e54UL,
+ 0x3e50f1a7UL, 0xa0000000UL, 0x3fe0bc07UL, 0x1379a5a6UL, 0xbe51619dUL,
+ 0x60000000UL, 0x3fe0a51aUL, 0x926a3d4aUL, 0x3e5cf019UL, 0xa0000000UL,
+ 0x3fe08e38UL, 0xa8c24358UL, 0x3e35241eUL, 0x20000000UL, 0x3fe07762UL,
+ 0x24317e7aUL, 0x3e512cfaUL, 0x00000000UL, 0x3fe06097UL, 0xfd9cf274UL,
+ 0xbe55bef3UL, 0x00000000UL, 0x3fe049d7UL, 0x3689b49dUL, 0xbe36d26dUL,
+ 0x40000000UL, 0x3fe03322UL, 0xf72ef6c4UL, 0xbe54cd08UL, 0xa0000000UL,
+ 0x3fe01c78UL, 0x23702d2dUL, 0xbe5900bfUL, 0x00000000UL, 0x3fe005daUL,
+ 0x3f59c14cUL, 0x3e57d80bUL, 0x40000000UL, 0x3fdfde8dUL, 0xad67766dUL,
+ 0xbe57fad4UL, 0x40000000UL, 0x3fdfb17cUL, 0x644f4ae7UL, 0x3e1ee43bUL,
+ 0x40000000UL, 0x3fdf8481UL, 0x903234d2UL, 0x3e501a86UL, 0x40000000UL,
+ 0x3fdf579cUL, 0xafe9e509UL, 0xbe267c3eUL, 0x00000000UL, 0x3fdf2acdUL,
+ 0xb7dfda0bUL, 0xbe48149bUL, 0x40000000UL, 0x3fdefe13UL, 0x3b94305eUL,
+ 0x3e5f4ea7UL, 0x80000000UL, 0x3fded16fUL, 0x5d95da61UL, 0xbe55c198UL,
+ 0x00000000UL, 0x3fdea4e1UL, 0x406960c9UL, 0xbdd99a19UL, 0x00000000UL,
+ 0x3fde7868UL, 0xd22f3539UL, 0x3e470c78UL, 0x80000000UL, 0x3fde4c04UL,
+ 0x83eec535UL, 0xbe3e1232UL, 0x40000000UL, 0x3fde1fb6UL, 0x3dfbffcbUL,
+ 0xbe4b7d71UL, 0x40000000UL, 0x3fddf37dUL, 0x7e1be4e0UL, 0xbe5b8f8fUL,
+ 0x40000000UL, 0x3fddc759UL, 0x46dae887UL, 0xbe350458UL, 0x80000000UL,
+ 0x3fdd9b4aUL, 0xed6ecc49UL, 0xbe5f0045UL, 0x80000000UL, 0x3fdd6f50UL,
+ 0x2e9e883cUL, 0x3e2915daUL, 0x80000000UL, 0x3fdd436bUL, 0xf0bccb32UL,
+ 0x3e4a68c9UL, 0x80000000UL, 0x3fdd179bUL, 0x9bbfc779UL, 0xbe54a26aUL,
+ 0x00000000UL, 0x3fdcebe0UL, 0x7cea33abUL, 0x3e43c6b7UL, 0x40000000UL,
+ 0x3fdcc039UL, 0xe740fd06UL, 0x3e5526c2UL, 0x40000000UL, 0x3fdc94a7UL,
+ 0x9eadeb1aUL, 0xbe396d8dUL, 0xc0000000UL, 0x3fdc6929UL, 0xf0a8f95aUL,
+ 0xbe5c0ab2UL, 0x80000000UL, 0x3fdc3dc0UL, 0x6ee2693bUL, 0x3e0992e6UL,
+ 0xc0000000UL, 0x3fdc126bUL, 0x5ac6b581UL, 0xbe2834b6UL, 0x40000000UL,
+ 0x3fdbe72bUL, 0x8cc226ffUL, 0x3e3596a6UL, 0x00000000UL, 0x3fdbbbffUL,
+ 0xf92a74bbUL, 0x3e3c5813UL, 0x00000000UL, 0x3fdb90e7UL, 0x479664c0UL,
+ 0xbe50d644UL, 0x00000000UL, 0x3fdb65e3UL, 0x5004975bUL, 0xbe55258fUL,
+ 0x00000000UL, 0x3fdb3af3UL, 0xe4b23194UL, 0xbe588407UL, 0xc0000000UL,
+ 0x3fdb1016UL, 0xe65d4d0aUL, 0x3e527c26UL, 0x80000000UL, 0x3fdae54eUL,
+ 0x814fddd6UL, 0x3e5962a2UL, 0x40000000UL, 0x3fdaba9aUL, 0xe19d0913UL,
+ 0xbe562f4eUL, 0x80000000UL, 0x3fda8ff9UL, 0x43cfd006UL, 0xbe4cfdebUL,
+ 0x40000000UL, 0x3fda656cUL, 0x686f0a4eUL, 0x3e5e47a8UL, 0xc0000000UL,
+ 0x3fda3af2UL, 0x7200d410UL, 0x3e5e1199UL, 0xc0000000UL, 0x3fda108cUL,
+ 0xabd2266eUL, 0x3e5ee4d1UL, 0x40000000UL, 0x3fd9e63aUL, 0x396f8f2cUL,
+ 0x3e4dbffbUL, 0x00000000UL, 0x3fd9bbfbUL, 0xe32b25ddUL, 0x3e5c3a54UL,
+ 0x40000000UL, 0x3fd991cfUL, 0x431e4035UL, 0xbe457925UL, 0x80000000UL,
+ 0x3fd967b6UL, 0x7bed3dd3UL, 0x3e40c61dUL, 0x00000000UL, 0x3fd93db1UL,
+ 0xd7449365UL, 0x3e306419UL, 0x80000000UL, 0x3fd913beUL, 0x1746e791UL,
+ 0x3e56fcfcUL, 0x40000000UL, 0x3fd8e9dfUL, 0xf3a9028bUL, 0xbe5041b9UL,
+ 0xc0000000UL, 0x3fd8c012UL, 0x56840c50UL, 0xbe26e20aUL, 0x40000000UL,
+ 0x3fd89659UL, 0x19763102UL, 0xbe51f466UL, 0x80000000UL, 0x3fd86cb2UL,
+ 0x7032de7cUL, 0xbe4d298aUL, 0x80000000UL, 0x3fd8431eUL, 0xdeb39fabUL,
+ 0xbe4361ebUL, 0x40000000UL, 0x3fd8199dUL, 0x5d01cbe0UL, 0xbe5425b3UL,
+ 0x80000000UL, 0x3fd7f02eUL, 0x3ce99aa9UL, 0x3e146fa8UL, 0x80000000UL,
+ 0x3fd7c6d2UL, 0xd1a262b9UL, 0xbe5a1a69UL, 0xc0000000UL, 0x3fd79d88UL,
+ 0x8606c236UL, 0x3e423a08UL, 0x80000000UL, 0x3fd77451UL, 0x8fd1e1b7UL,
+ 0x3e5a6a63UL, 0xc0000000UL, 0x3fd74b2cUL, 0xe491456aUL, 0x3e42c1caUL,
+ 0x40000000UL, 0x3fd7221aUL, 0x4499a6d7UL, 0x3e36a69aUL, 0x00000000UL,
+ 0x3fd6f91aUL, 0x5237df94UL, 0xbe0f8f02UL, 0x00000000UL, 0x3fd6d02cUL,
+ 0xb6482c6eUL, 0xbe5abcf7UL, 0x00000000UL, 0x3fd6a750UL, 0x1919fd61UL,
+ 0xbe57ade2UL, 0x00000000UL, 0x3fd67e86UL, 0xaa7a994dUL, 0xbe3f3fbdUL,
+ 0x00000000UL, 0x3fd655ceUL, 0x67db014cUL, 0x3e33c550UL, 0x00000000UL,
+ 0x3fd62d28UL, 0xa82856b7UL, 0xbe1409d1UL, 0xc0000000UL, 0x3fd60493UL,
+ 0x1e6a300dUL, 0x3e55d899UL, 0x80000000UL, 0x3fd5dc11UL, 0x1222bd5cUL,
+ 0xbe35bfc0UL, 0xc0000000UL, 0x3fd5b3a0UL, 0x6e8dc2d3UL, 0x3e5d4d79UL,
+ 0x00000000UL, 0x3fd58b42UL, 0xe0e4ace6UL, 0xbe517303UL, 0x80000000UL,
+ 0x3fd562f4UL, 0xb306e0a8UL, 0x3e5edf0fUL, 0xc0000000UL, 0x3fd53ab8UL,
+ 0x6574bc54UL, 0x3e5ee859UL, 0x80000000UL, 0x3fd5128eUL, 0xea902207UL,
+ 0x3e5f6188UL, 0xc0000000UL, 0x3fd4ea75UL, 0x9f911d79UL, 0x3e511735UL,
+ 0x80000000UL, 0x3fd4c26eUL, 0xf9c77397UL, 0xbe5b1643UL, 0x40000000UL,
+ 0x3fd49a78UL, 0x15fc9258UL, 0x3e479a37UL, 0x80000000UL, 0x3fd47293UL,
+ 0xd5a04dd9UL, 0xbe426e56UL, 0xc0000000UL, 0x3fd44abfUL, 0xe04042f5UL,
+ 0x3e56f7c6UL, 0x40000000UL, 0x3fd422fdUL, 0x1d8bf2c8UL, 0x3e5d8810UL,
+ 0x00000000UL, 0x3fd3fb4cUL, 0x88a8ddeeUL, 0xbe311454UL, 0xc0000000UL,
+ 0x3fd3d3abUL, 0x3e3b5e47UL, 0xbe5d1b72UL, 0x40000000UL, 0x3fd3ac1cUL,
+ 0xc2ab5d59UL, 0x3e31b02bUL, 0xc0000000UL, 0x3fd3849dUL, 0xd4e34b9eUL,
+ 0x3e51cb2fUL, 0x40000000UL, 0x3fd35d30UL, 0x177204fbUL, 0xbe2b8cd7UL,
+ 0x80000000UL, 0x3fd335d3UL, 0xfcd38c82UL, 0xbe4356e1UL, 0x80000000UL,
+ 0x3fd30e87UL, 0x64f54accUL, 0xbe4e6224UL, 0x00000000UL, 0x3fd2e74cUL,
+ 0xaa7975d9UL, 0x3e5dc0feUL, 0x80000000UL, 0x3fd2c021UL, 0x516dab3fUL,
+ 0xbe50ffa3UL, 0x40000000UL, 0x3fd29907UL, 0x2bfb7313UL, 0x3e5674a2UL,
+ 0xc0000000UL, 0x3fd271fdUL, 0x0549fc99UL, 0x3e385d29UL, 0xc0000000UL,
+ 0x3fd24b04UL, 0x55b63073UL, 0xbe500c6dUL, 0x00000000UL, 0x3fd2241cUL,
+ 0x3f91953aUL, 0x3e389977UL, 0xc0000000UL, 0x3fd1fd43UL, 0xa1543f71UL,
+ 0xbe3487abUL, 0xc0000000UL, 0x3fd1d67bUL, 0x4ec8867cUL, 0x3df6a2dcUL,
+ 0x00000000UL, 0x3fd1afc4UL, 0x4328e3bbUL, 0x3e41d9c0UL, 0x80000000UL,
+ 0x3fd1891cUL, 0x2e1cda84UL, 0x3e3bdd87UL, 0x40000000UL, 0x3fd16285UL,
+ 0x4b5331aeUL, 0xbe53128eUL, 0x00000000UL, 0x3fd13bfeUL, 0xb9aec164UL,
+ 0xbe52ac98UL, 0xc0000000UL, 0x3fd11586UL, 0xd91e1316UL, 0xbe350630UL,
+ 0x80000000UL, 0x3fd0ef1fUL, 0x7cacc12cUL, 0x3e3f5219UL, 0x40000000UL,
+ 0x3fd0c8c8UL, 0xbce277b7UL, 0x3e3d30c0UL, 0x00000000UL, 0x3fd0a281UL,
+ 0x2a63447dUL, 0xbe541377UL, 0x80000000UL, 0x3fd07c49UL, 0xfac483b5UL,
+ 0xbe5772ecUL, 0xc0000000UL, 0x3fd05621UL, 0x36b8a570UL, 0xbe4fd4bdUL,
+ 0xc0000000UL, 0x3fd03009UL, 0xbae505f7UL, 0xbe450388UL, 0x80000000UL,
+ 0x3fd00a01UL, 0x3e35aeadUL, 0xbe5430fcUL, 0x80000000UL, 0x3fcfc811UL,
+ 0x707475acUL, 0x3e38806eUL, 0x80000000UL, 0x3fcf7c3fUL, 0xc91817fcUL,
+ 0xbe40cceaUL, 0x80000000UL, 0x3fcf308cUL, 0xae05d5e9UL, 0xbe4919b8UL,
+ 0x80000000UL, 0x3fcee4f8UL, 0xae6cc9e6UL, 0xbe530b94UL, 0x00000000UL,
+ 0x3fce9983UL, 0x1efe3e8eUL, 0x3e57747eUL, 0x00000000UL, 0x3fce4e2dUL,
+ 0xda78d9bfUL, 0xbe59a608UL, 0x00000000UL, 0x3fce02f5UL, 0x8abe2c2eUL,
+ 0x3e4a35adUL, 0x00000000UL, 0x3fcdb7dcUL, 0x1495450dUL, 0xbe0872ccUL,
+ 0x80000000UL, 0x3fcd6ce1UL, 0x86ee0ba0UL, 0xbe4f59a0UL, 0x00000000UL,
+ 0x3fcd2205UL, 0xe81ca888UL, 0x3e5402c3UL, 0x00000000UL, 0x3fccd747UL,
+ 0x3b4424b9UL, 0x3e5dfdc3UL, 0x80000000UL, 0x3fcc8ca7UL, 0xd305b56cUL,
+ 0x3e202da6UL, 0x00000000UL, 0x3fcc4226UL, 0x399a6910UL, 0xbe482a1cUL,
+ 0x80000000UL, 0x3fcbf7c2UL, 0x747f7938UL, 0xbe587372UL, 0x80000000UL,
+ 0x3fcbad7cUL, 0x6fc246a0UL, 0x3e50d83dUL, 0x00000000UL, 0x3fcb6355UL,
+ 0xee9e9be5UL, 0xbe5c35bdUL, 0x80000000UL, 0x3fcb194aUL, 0x8416c0bcUL,
+ 0x3e546d4fUL, 0x00000000UL, 0x3fcacf5eUL, 0x49f7f08fUL, 0x3e56da76UL,
+ 0x00000000UL, 0x3fca858fUL, 0x5dc30de2UL, 0x3e5f390cUL, 0x00000000UL,
+ 0x3fca3bdeUL, 0x950583b6UL, 0xbe5e4169UL, 0x80000000UL, 0x3fc9f249UL,
+ 0x33631553UL, 0x3e52aeb1UL, 0x00000000UL, 0x3fc9a8d3UL, 0xde8795a6UL,
+ 0xbe59a504UL, 0x00000000UL, 0x3fc95f79UL, 0x076bf41eUL, 0x3e5122feUL,
+ 0x80000000UL, 0x3fc9163cUL, 0x2914c8e7UL, 0x3e3dd064UL, 0x00000000UL,
+ 0x3fc8cd1dUL, 0x3a30eca3UL, 0xbe21b4aaUL, 0x80000000UL, 0x3fc8841aUL,
+ 0xb2a96650UL, 0xbe575444UL, 0x80000000UL, 0x3fc83b34UL, 0x2376c0cbUL,
+ 0xbe2a74c7UL, 0x80000000UL, 0x3fc7f26bUL, 0xd8a0b653UL, 0xbe5181b6UL,
+ 0x00000000UL, 0x3fc7a9bfUL, 0x32257882UL, 0xbe4a78b4UL, 0x00000000UL,
+ 0x3fc7612fUL, 0x1eee8bd9UL, 0xbe1bfe9dUL, 0x80000000UL, 0x3fc718bbUL,
+ 0x0c603cc4UL, 0x3e36fdc9UL, 0x80000000UL, 0x3fc6d064UL, 0x3728b8cfUL,
+ 0xbe1e542eUL, 0x80000000UL, 0x3fc68829UL, 0xc79a4067UL, 0x3e5c380fUL,
+ 0x00000000UL, 0x3fc6400bUL, 0xf69eac69UL, 0x3e550a84UL, 0x80000000UL,
+ 0x3fc5f808UL, 0xb7a780a4UL, 0x3e5d9224UL, 0x80000000UL, 0x3fc5b022UL,
+ 0xad9dfb1eUL, 0xbe55242fUL, 0x00000000UL, 0x3fc56858UL, 0x659b18beUL,
+ 0xbe4bfda3UL, 0x80000000UL, 0x3fc520a9UL, 0x66ee3631UL, 0xbe57d769UL,
+ 0x80000000UL, 0x3fc4d916UL, 0x1ec62819UL, 0x3e2427f7UL, 0x80000000UL,
+ 0x3fc4919fUL, 0xdec25369UL, 0xbe435431UL, 0x00000000UL, 0x3fc44a44UL,
+ 0xa8acfc4bUL, 0xbe3c62e8UL, 0x00000000UL, 0x3fc40304UL, 0xcf1d3eabUL,
+ 0xbdfba29fUL, 0x80000000UL, 0x3fc3bbdfUL, 0x79aba3eaUL, 0xbdf1b7c8UL,
+ 0x80000000UL, 0x3fc374d6UL, 0xb8d186daUL, 0xbe5130cfUL, 0x80000000UL,
+ 0x3fc32de8UL, 0x9d74f152UL, 0x3e2285b6UL, 0x00000000UL, 0x3fc2e716UL,
+ 0x50ae7ca9UL, 0xbe503920UL, 0x80000000UL, 0x3fc2a05eUL, 0x6caed92eUL,
+ 0xbe533924UL, 0x00000000UL, 0x3fc259c2UL, 0x9cb5034eUL, 0xbe510e31UL,
+ 0x80000000UL, 0x3fc21340UL, 0x12c4d378UL, 0xbe540b43UL, 0x80000000UL,
+ 0x3fc1ccd9UL, 0xcc418706UL, 0x3e59887aUL, 0x00000000UL, 0x3fc1868eUL,
+ 0x921f4106UL, 0xbe528e67UL, 0x80000000UL, 0x3fc1405cUL, 0x3969441eUL,
+ 0x3e5d8051UL, 0x00000000UL, 0x3fc0fa46UL, 0xd941ef5bUL, 0x3e5f9079UL,
+ 0x80000000UL, 0x3fc0b44aUL, 0x5a3e81b2UL, 0xbe567691UL, 0x00000000UL,
+ 0x3fc06e69UL, 0x9d66afe7UL, 0xbe4d43fbUL, 0x00000000UL, 0x3fc028a2UL,
+ 0x0a92a162UL, 0xbe52f394UL, 0x00000000UL, 0x3fbfc5eaUL, 0x209897e5UL,
+ 0x3e529e37UL, 0x00000000UL, 0x3fbf3ac5UL, 0x8458bd7bUL, 0x3e582831UL,
+ 0x00000000UL, 0x3fbeafd5UL, 0xb8d8b4b8UL, 0xbe486b4aUL, 0x00000000UL,
+ 0x3fbe2518UL, 0xe0a3b7b6UL, 0x3e5bafd2UL, 0x00000000UL, 0x3fbd9a90UL,
+ 0x2bf2710eUL, 0x3e383b2bUL, 0x00000000UL, 0x3fbd103cUL, 0x73eb6ab7UL,
+ 0xbe56d78dUL, 0x00000000UL, 0x3fbc861bUL, 0x32ceaff5UL, 0xbe32dc5aUL,
+ 0x00000000UL, 0x3fbbfc2eUL, 0xbee04cb7UL, 0xbe4a71a4UL, 0x00000000UL,
+ 0x3fbb7274UL, 0x35ae9577UL, 0x3e38142fUL, 0x00000000UL, 0x3fbae8eeUL,
+ 0xcbaddab4UL, 0xbe5490f0UL, 0x00000000UL, 0x3fba5f9aUL, 0x95ce1114UL,
+ 0x3e597c71UL, 0x00000000UL, 0x3fb9d67aUL, 0x6d7c0f78UL, 0x3e3abc2dUL,
+ 0x00000000UL, 0x3fb94d8dUL, 0x2841a782UL, 0xbe566cbcUL, 0x00000000UL,
+ 0x3fb8c4d2UL, 0x6ed429c6UL, 0xbe3cfff9UL, 0x00000000UL, 0x3fb83c4aUL,
+ 0xe4a49fbbUL, 0xbe552964UL, 0x00000000UL, 0x3fb7b3f4UL, 0x2193d81eUL,
+ 0xbe42fa72UL, 0x00000000UL, 0x3fb72bd0UL, 0xdd70c122UL, 0x3e527a8cUL,
+ 0x00000000UL, 0x3fb6a3dfUL, 0x03108a54UL, 0xbe450393UL, 0x00000000UL,
+ 0x3fb61c1fUL, 0x30ff7954UL, 0x3e565840UL, 0x00000000UL, 0x3fb59492UL,
+ 0xdedd460cUL, 0xbe5422b5UL, 0x00000000UL, 0x3fb50d36UL, 0x950f9f45UL,
+ 0xbe5313f6UL, 0x00000000UL, 0x3fb4860bUL, 0x582cdcb1UL, 0x3e506d39UL,
+ 0x00000000UL, 0x3fb3ff12UL, 0x7216d3a6UL, 0x3e4aa719UL, 0x00000000UL,
+ 0x3fb3784aUL, 0x57a423fdUL, 0x3e5a9b9fUL, 0x00000000UL, 0x3fb2f1b4UL,
+ 0x7a138b41UL, 0xbe50b418UL, 0x00000000UL, 0x3fb26b4eUL, 0x2fbfd7eaUL,
+ 0x3e23a53eUL, 0x00000000UL, 0x3fb1e519UL, 0x18913ccbUL, 0x3e465fc1UL,
+ 0x00000000UL, 0x3fb15f15UL, 0x7ea24e21UL, 0x3e042843UL, 0x00000000UL,
+ 0x3fb0d941UL, 0x7c6d9c77UL, 0x3e59f61eUL, 0x00000000UL, 0x3fb0539eUL,
+ 0x114efd44UL, 0x3e4ccab7UL, 0x00000000UL, 0x3faf9c56UL, 0x1777f657UL,
+ 0x3e552f65UL, 0x00000000UL, 0x3fae91d2UL, 0xc317b86aUL, 0xbe5a61e0UL,
+ 0x00000000UL, 0x3fad87acUL, 0xb7664efbUL, 0xbe41f64eUL, 0x00000000UL,
+ 0x3fac7de6UL, 0x5d3d03a9UL, 0x3e0807a0UL, 0x00000000UL, 0x3fab7480UL,
+ 0x743c38ebUL, 0xbe3726e1UL, 0x00000000UL, 0x3faa6b78UL, 0x06a253f1UL,
+ 0x3e5ad636UL, 0x00000000UL, 0x3fa962d0UL, 0xa35f541bUL, 0x3e5a187aUL,
+ 0x00000000UL, 0x3fa85a88UL, 0x4b86e446UL, 0xbe508150UL, 0x00000000UL,
+ 0x3fa7529cUL, 0x2589cacfUL, 0x3e52938aUL, 0x00000000UL, 0x3fa64b10UL,
+ 0xaf6b11f2UL, 0xbe3454cdUL, 0x00000000UL, 0x3fa543e2UL, 0x97506fefUL,
+ 0xbe5fdec5UL, 0x00000000UL, 0x3fa43d10UL, 0xe75f7dd9UL, 0xbe388dd3UL,
+ 0x00000000UL, 0x3fa3369cUL, 0xa4139632UL, 0xbdea5177UL, 0x00000000UL,
+ 0x3fa23086UL, 0x352d6f1eUL, 0xbe565ad6UL, 0x00000000UL, 0x3fa12accUL,
+ 0x77449eb7UL, 0xbe50d5c7UL, 0x00000000UL, 0x3fa0256eUL, 0x7478da78UL,
+ 0x3e404724UL, 0x00000000UL, 0x3f9e40dcUL, 0xf59cef7fUL, 0xbe539d0aUL,
+ 0x00000000UL, 0x3f9c3790UL, 0x1511d43cUL, 0x3e53c2c8UL, 0x00000000UL,
+ 0x3f9a2f00UL, 0x9b8bff3cUL, 0xbe43b3e1UL, 0x00000000UL, 0x3f982724UL,
+ 0xad1e22a5UL, 0x3e46f0bdUL, 0x00000000UL, 0x3f962000UL, 0x130d9356UL,
+ 0x3e475ba0UL, 0x00000000UL, 0x3f941994UL, 0x8f86f883UL, 0xbe513d0bUL,
+ 0x00000000UL, 0x3f9213dcUL, 0x914d0dc8UL, 0xbe534335UL, 0x00000000UL,
+ 0x3f900ed8UL, 0x2d73e5e7UL, 0xbe22ba75UL, 0x00000000UL, 0x3f8c1510UL,
+ 0xc5b7d70eUL, 0x3e599c5dUL, 0x00000000UL, 0x3f880de0UL, 0x8a27857eUL,
+ 0xbe3d28c8UL, 0x00000000UL, 0x3f840810UL, 0xda767328UL, 0x3e531b3dUL,
+ 0x00000000UL, 0x3f8003b0UL, 0x77bacaf3UL, 0xbe5f04e3UL, 0x00000000UL,
+ 0x3f780150UL, 0xdf4b0720UL, 0x3e5a8bffUL, 0x00000000UL, 0x3f6ffc40UL,
+ 0x34c48e71UL, 0xbe3fcd99UL, 0x00000000UL, 0x3f5ff6c0UL, 0x1ad218afUL,
+ 0xbe4c78a7UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL,
+ 0x00000000UL, 0xfffff800UL, 0x00000000UL, 0xfffff800UL, 0x00000000UL,
+ 0x3ff72000UL, 0x161bb241UL, 0xbf5dabe1UL, 0x6dc96112UL, 0xbf836578UL,
+ 0xee241472UL, 0xbf9b0301UL, 0x9f95985aUL, 0xbfb528dbUL, 0xb3841d2aUL,
+ 0xbfd619b6UL, 0x518775e3UL, 0x3f9004f2UL, 0xac8349bbUL, 0x3fa76c9bUL,
+ 0x486ececcUL, 0x3fc4635eUL, 0x161bb241UL, 0xbf5dabe1UL, 0x9f95985aUL,
+ 0xbfb528dbUL, 0xf8b5787dUL, 0x3ef2531eUL, 0x486ececbUL, 0x3fc4635eUL,
+ 0x412055ccUL, 0xbdd61bb2UL, 0x00000000UL, 0xfffffff8UL, 0x00000000UL,
+ 0xffffffffUL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x3b700000UL,
+ 0xfa5abcbfUL, 0x3ff00b1aUL, 0xa7609f71UL, 0xbc84f6b2UL, 0xa9fb3335UL,
+ 0x3ff0163dUL, 0x9ab8cdb7UL, 0x3c9b6129UL, 0x143b0281UL, 0x3ff02168UL,
+ 0x0fc54eb6UL, 0xbc82bf31UL, 0x3e778061UL, 0x3ff02c9aUL, 0x535b085dUL,
+ 0xbc719083UL, 0x2e11bbccUL, 0x3ff037d4UL, 0xeeade11aUL, 0x3c656811UL,
+ 0xe86e7f85UL, 0x3ff04315UL, 0x1977c96eUL, 0xbc90a31cUL, 0x72f654b1UL,
+ 0x3ff04e5fUL, 0x3aa0d08cUL, 0x3c84c379UL, 0xd3158574UL, 0x3ff059b0UL,
+ 0xa475b465UL, 0x3c8d73e2UL, 0x0e3c1f89UL, 0x3ff0650aUL, 0x5799c397UL,
+ 0xbc95cb7bUL, 0x29ddf6deUL, 0x3ff0706bUL, 0xe2b13c27UL, 0xbc8c91dfUL,
+ 0x2b72a836UL, 0x3ff07bd4UL, 0x54458700UL, 0x3c832334UL, 0x18759bc8UL,
+ 0x3ff08745UL, 0x4bb284ffUL, 0x3c6186beUL, 0xf66607e0UL, 0x3ff092bdUL,
+ 0x800a3fd1UL, 0xbc968063UL, 0xcac6f383UL, 0x3ff09e3eUL, 0x18316136UL,
+ 0x3c914878UL, 0x9b1f3919UL, 0x3ff0a9c7UL, 0x873d1d38UL, 0x3c85d16cUL,
+ 0x6cf9890fUL, 0x3ff0b558UL, 0x4adc610bUL, 0x3c98a62eUL, 0x45e46c85UL,
+ 0x3ff0c0f1UL, 0x06d21cefUL, 0x3c94f989UL, 0x2b7247f7UL, 0x3ff0cc92UL,
+ 0x16e24f71UL, 0x3c901edcUL, 0x23395decUL, 0x3ff0d83bUL, 0xe43f316aUL,
+ 0xbc9bc14dUL, 0x32d3d1a2UL, 0x3ff0e3ecUL, 0x27c57b52UL, 0x3c403a17UL,
+ 0x5fdfa9c5UL, 0x3ff0efa5UL, 0xbc54021bUL, 0xbc949db9UL, 0xaffed31bUL,
+ 0x3ff0fb66UL, 0xc44ebd7bUL, 0xbc6b9bedUL, 0x28d7233eUL, 0x3ff10730UL,
+ 0x1692fdd5UL, 0x3c8d46ebUL, 0xd0125b51UL, 0x3ff11301UL, 0x39449b3aUL,
+ 0xbc96c510UL, 0xab5e2ab6UL, 0x3ff11edbUL, 0xf703fb72UL, 0xbc9ca454UL,
+ 0xc06c31ccUL, 0x3ff12abdUL, 0xb36ca5c7UL, 0xbc51b514UL, 0x14f204abUL,
+ 0x3ff136a8UL, 0xba48dcf0UL, 0xbc67108fUL, 0xaea92de0UL, 0x3ff1429aUL,
+ 0x9af1369eUL, 0xbc932fbfUL, 0x934f312eUL, 0x3ff14e95UL, 0x39bf44abUL,
+ 0xbc8b91e8UL, 0xc8a58e51UL, 0x3ff15a98UL, 0xb9eeab0aUL, 0x3c82406aUL,
+ 0x5471c3c2UL, 0x3ff166a4UL, 0x82ea1a32UL, 0x3c58f23bUL, 0x3c7d517bUL,
+ 0x3ff172b8UL, 0xb9d78a76UL, 0xbc819041UL, 0x8695bbc0UL, 0x3ff17ed4UL,
+ 0xe2ac5a64UL, 0x3c709e3fUL, 0x388c8deaUL, 0x3ff18af9UL, 0xd1970f6cUL,
+ 0xbc911023UL, 0x58375d2fUL, 0x3ff19726UL, 0x85f17e08UL, 0x3c94aaddUL,
+ 0xeb6fcb75UL, 0x3ff1a35bUL, 0x7b4968e4UL, 0x3c8e5b4cUL, 0xf8138a1cUL,
+ 0x3ff1af99UL, 0xa4b69280UL, 0x3c97bf85UL, 0x84045cd4UL, 0x3ff1bbe0UL,
+ 0x352ef607UL, 0xbc995386UL, 0x95281c6bUL, 0x3ff1c82fUL, 0x8010f8c9UL,
+ 0x3c900977UL, 0x3168b9aaUL, 0x3ff1d487UL, 0x00a2643cUL, 0x3c9e016eUL,
+ 0x5eb44027UL, 0x3ff1e0e7UL, 0x088cb6deUL, 0xbc96fdd8UL, 0x22fcd91dUL,
+ 0x3ff1ed50UL, 0x027bb78cUL, 0xbc91df98UL, 0x8438ce4dUL, 0x3ff1f9c1UL,
+ 0xa097af5cUL, 0xbc9bf524UL, 0x88628cd6UL, 0x3ff2063bUL, 0x814a8495UL,
+ 0x3c8dc775UL, 0x3578a819UL, 0x3ff212beUL, 0x2cfcaac9UL, 0x3c93592dUL,
+ 0x917ddc96UL, 0x3ff21f49UL, 0x9494a5eeUL, 0x3c82a97eUL, 0xa27912d1UL,
+ 0x3ff22bddUL, 0x5577d69fUL, 0x3c8d34fbUL, 0x6e756238UL, 0x3ff2387aUL,
+ 0xb6c70573UL, 0x3c99b07eUL, 0xfb82140aUL, 0x3ff2451fUL, 0x911ca996UL,
+ 0x3c8acfccUL, 0x4fb2a63fUL, 0x3ff251ceUL, 0xbef4f4a4UL, 0x3c8ac155UL,
+ 0x711ece75UL, 0x3ff25e85UL, 0x4ac31b2cUL, 0x3c93e1a2UL, 0x65e27cddUL,
+ 0x3ff26b45UL, 0x9940e9d9UL, 0x3c82bd33UL, 0x341ddf29UL, 0x3ff2780eUL,
+ 0x05f9e76cUL, 0x3c9e067cUL, 0xe1f56381UL, 0x3ff284dfUL, 0x8c3f0d7eUL,
+ 0xbc9a4c3aUL, 0x7591bb70UL, 0x3ff291baUL, 0x28401cbdUL, 0xbc82cc72UL,
+ 0xf51fdee1UL, 0x3ff29e9dUL, 0xafad1255UL, 0x3c8612e8UL, 0x66d10f13UL,
+ 0x3ff2ab8aUL, 0x191690a7UL, 0xbc995743UL, 0xd0dad990UL, 0x3ff2b87fUL,
+ 0xd6381aa4UL, 0xbc410adcUL, 0x39771b2fUL, 0x3ff2c57eUL, 0xa6eb5124UL,
+ 0xbc950145UL, 0xa6e4030bUL, 0x3ff2d285UL, 0x54db41d5UL, 0x3c900247UL,
+ 0x1f641589UL, 0x3ff2df96UL, 0xfbbce198UL, 0x3c9d16cfUL, 0xa93e2f56UL,
+ 0x3ff2ecafUL, 0x45d52383UL, 0x3c71ca0fUL, 0x4abd886bUL, 0x3ff2f9d2UL,
+ 0x532bda93UL, 0xbc653c55UL, 0x0a31b715UL, 0x3ff306feUL, 0xd23182e4UL,
+ 0x3c86f46aUL, 0xedeeb2fdUL, 0x3ff31432UL, 0xf3f3fcd1UL, 0x3c8959a3UL,
+ 0xfc4cd831UL, 0x3ff32170UL, 0x8e18047cUL, 0x3c8a9ce7UL, 0x3ba8ea32UL,
+ 0x3ff32eb8UL, 0x3cb4f318UL, 0xbc9c45e8UL, 0xb26416ffUL, 0x3ff33c08UL,
+ 0x843659a6UL, 0x3c932721UL, 0x66e3fa2dUL, 0x3ff34962UL, 0x930881a4UL,
+ 0xbc835a75UL, 0x5f929ff1UL, 0x3ff356c5UL, 0x5c4e4628UL, 0xbc8b5ceeUL,
+ 0xa2de883bUL, 0x3ff36431UL, 0xa06cb85eUL, 0xbc8c3144UL, 0x373aa9cbUL,
+ 0x3ff371a7UL, 0xbf42eae2UL, 0xbc963aeaUL, 0x231e754aUL, 0x3ff37f26UL,
+ 0x9eceb23cUL, 0xbc99f5caUL, 0x6d05d866UL, 0x3ff38caeUL, 0x3c9904bdUL,
+ 0xbc9e958dUL, 0x1b7140efUL, 0x3ff39a40UL, 0xfc8e2934UL, 0xbc99a9a5UL,
+ 0x34e59ff7UL, 0x3ff3a7dbUL, 0xd661f5e3UL, 0xbc75e436UL, 0xbfec6cf4UL,
+ 0x3ff3b57fUL, 0xe26fff18UL, 0x3c954c66UL, 0xc313a8e5UL, 0x3ff3c32dUL,
+ 0x375d29c3UL, 0xbc9efff8UL, 0x44ede173UL, 0x3ff3d0e5UL, 0x8c284c71UL,
+ 0x3c7fe8d0UL, 0x4c123422UL, 0x3ff3dea6UL, 0x11f09ebcUL, 0x3c8ada09UL,
+ 0xdf1c5175UL, 0x3ff3ec70UL, 0x7b8c9bcaUL, 0xbc8af663UL, 0x04ac801cUL,
+ 0x3ff3fa45UL, 0xf956f9f3UL, 0xbc97d023UL, 0xc367a024UL, 0x3ff40822UL,
+ 0xb6f4d048UL, 0x3c8bddf8UL, 0x21f72e2aUL, 0x3ff4160aUL, 0x1c309278UL,
+ 0xbc5ef369UL, 0x2709468aUL, 0x3ff423fbUL, 0xc0b314ddUL, 0xbc98462dUL,
+ 0xd950a897UL, 0x3ff431f5UL, 0xe35f7999UL, 0xbc81c7ddUL, 0x3f84b9d4UL,
+ 0x3ff43ffaUL, 0x9704c003UL, 0x3c8880beUL, 0x6061892dUL, 0x3ff44e08UL,
+ 0x04ef80d0UL, 0x3c489b7aUL, 0x42a7d232UL, 0x3ff45c20UL, 0x82fb1f8eUL,
+ 0xbc686419UL, 0xed1d0057UL, 0x3ff46a41UL, 0xd1648a76UL, 0x3c9c944bUL,
+ 0x668b3237UL, 0x3ff4786dUL, 0xed445733UL, 0xbc9c20f0UL, 0xb5c13cd0UL,
+ 0x3ff486a2UL, 0xb69062f0UL, 0x3c73c1a3UL, 0xe192aed2UL, 0x3ff494e1UL,
+ 0x5e499ea0UL, 0xbc83b289UL, 0xf0d7d3deUL, 0x3ff4a32aUL, 0xf3d1be56UL,
+ 0x3c99cb62UL, 0xea6db7d7UL, 0x3ff4b17dUL, 0x7f2897f0UL, 0xbc8125b8UL,
+ 0xd5362a27UL, 0x3ff4bfdaUL, 0xafec42e2UL, 0x3c7d4397UL, 0xb817c114UL,
+ 0x3ff4ce41UL, 0x690abd5dUL, 0x3c905e29UL, 0x99fddd0dUL, 0x3ff4dcb2UL,
+ 0xbc6a7833UL, 0x3c98ecdbUL, 0x81d8abffUL, 0x3ff4eb2dUL, 0x2e5d7a52UL,
+ 0xbc95257dUL, 0x769d2ca7UL, 0x3ff4f9b2UL, 0xd25957e3UL, 0xbc94b309UL,
+ 0x7f4531eeUL, 0x3ff50841UL, 0x49b7465fUL, 0x3c7a249bUL, 0xa2cf6642UL,
+ 0x3ff516daUL, 0x69bd93efUL, 0xbc8f7685UL, 0xe83f4eefUL, 0x3ff5257dUL,
+ 0x43efef71UL, 0xbc7c998dUL, 0x569d4f82UL, 0x3ff5342bUL, 0x1db13cadUL,
+ 0xbc807abeUL, 0xf4f6ad27UL, 0x3ff542e2UL, 0x192d5f7eUL, 0x3c87926dUL,
+ 0xca5d920fUL, 0x3ff551a4UL, 0xefede59bUL, 0xbc8d689cUL, 0xdde910d2UL,
+ 0x3ff56070UL, 0x168eebf0UL, 0xbc90fb6eUL, 0x36b527daUL, 0x3ff56f47UL,
+ 0x011d93adUL, 0x3c99bb2cUL, 0xdbe2c4cfUL, 0x3ff57e27UL, 0x8a57b9c4UL,
+ 0xbc90b98cUL, 0xd497c7fdUL, 0x3ff58d12UL, 0x5b9a1de8UL, 0x3c8295e1UL,
+ 0x27ff07ccUL, 0x3ff59c08UL, 0xe467e60fUL, 0xbc97e2ceUL, 0xdd485429UL,
+ 0x3ff5ab07UL, 0x054647adUL, 0x3c96324cUL, 0xfba87a03UL, 0x3ff5ba11UL,
+ 0x4c233e1aUL, 0xbc9b77a1UL, 0x8a5946b7UL, 0x3ff5c926UL, 0x816986a2UL,
+ 0x3c3c4b1bUL, 0x90998b93UL, 0x3ff5d845UL, 0xa8b45643UL, 0xbc9cd6a7UL,
+ 0x15ad2148UL, 0x3ff5e76fUL, 0x3080e65eUL, 0x3c9ba6f9UL, 0x20dceb71UL,
+ 0x3ff5f6a3UL, 0xe3cdcf92UL, 0xbc89eaddUL, 0xb976dc09UL, 0x3ff605e1UL,
+ 0x9b56de47UL, 0xbc93e242UL, 0xe6cdf6f4UL, 0x3ff6152aUL, 0x4ab84c27UL,
+ 0x3c9e4b3eUL, 0xb03a5585UL, 0x3ff6247eUL, 0x7e40b497UL, 0xbc9383c1UL,
+ 0x1d1929fdUL, 0x3ff633ddUL, 0xbeb964e5UL, 0x3c984710UL, 0x34ccc320UL,
+ 0x3ff64346UL, 0x759d8933UL, 0xbc8c483cUL, 0xfebc8fb7UL, 0x3ff652b9UL,
+ 0xc9a73e09UL, 0xbc9ae3d5UL, 0x82552225UL, 0x3ff66238UL, 0x87591c34UL,
+ 0xbc9bb609UL, 0xc70833f6UL, 0x3ff671c1UL, 0x586c6134UL, 0xbc8e8732UL,
+ 0xd44ca973UL, 0x3ff68155UL, 0x44f73e65UL, 0x3c6038aeUL, 0xb19e9538UL,
+ 0x3ff690f4UL, 0x9aeb445dUL, 0x3c8804bdUL, 0x667f3bcdUL, 0x3ff6a09eUL,
+ 0x13b26456UL, 0xbc9bdd34UL, 0xfa75173eUL, 0x3ff6b052UL, 0x2c9a9d0eUL,
+ 0x3c7a38f5UL, 0x750bdabfUL, 0x3ff6c012UL, 0x67ff0b0dUL, 0xbc728956UL,
+ 0xddd47645UL, 0x3ff6cfdcUL, 0xb6f17309UL, 0x3c9c7aa9UL, 0x3c651a2fUL,
+ 0x3ff6dfb2UL, 0x683c88abUL, 0xbc6bbe3aUL, 0x98593ae5UL, 0x3ff6ef92UL,
+ 0x9e1ac8b2UL, 0xbc90b974UL, 0xf9519484UL, 0x3ff6ff7dUL, 0x25860ef6UL,
+ 0xbc883c0fUL, 0x66f42e87UL, 0x3ff70f74UL, 0xd45aa65fUL, 0x3c59d644UL,
+ 0xe8ec5f74UL, 0x3ff71f75UL, 0x86887a99UL, 0xbc816e47UL, 0x86ead08aUL,
+ 0x3ff72f82UL, 0x2cd62c72UL, 0xbc920aa0UL, 0x48a58174UL, 0x3ff73f9aUL,
+ 0x6c65d53cUL, 0xbc90a8d9UL, 0x35d7cbfdUL, 0x3ff74fbdUL, 0x618a6e1cUL,
+ 0x3c9047fdUL, 0x564267c9UL, 0x3ff75febUL, 0x57316dd3UL, 0xbc902459UL,
+ 0xb1ab6e09UL, 0x3ff77024UL, 0x169147f8UL, 0x3c9b7877UL, 0x4fde5d3fUL,
+ 0x3ff78069UL, 0x0a02162dUL, 0x3c9866b8UL, 0x38ac1cf6UL, 0x3ff790b9UL,
+ 0x62aadd3eUL, 0x3c9349a8UL, 0x73eb0187UL, 0x3ff7a114UL, 0xee04992fUL,
+ 0xbc841577UL, 0x0976cfdbUL, 0x3ff7b17bUL, 0x8468dc88UL, 0xbc9bebb5UL,
+ 0x0130c132UL, 0x3ff7c1edUL, 0xd1164dd6UL, 0x3c9f124cUL, 0x62ff86f0UL,
+ 0x3ff7d26aUL, 0xfb72b8b4UL, 0x3c91bddbUL, 0x36cf4e62UL, 0x3ff7e2f3UL,
+ 0xba15797eUL, 0x3c705d02UL, 0x8491c491UL, 0x3ff7f387UL, 0xcf9311aeUL,
+ 0xbc807f11UL, 0x543e1a12UL, 0x3ff80427UL, 0x626d972bUL, 0xbc927c86UL,
+ 0xadd106d9UL, 0x3ff814d2UL, 0x0d151d4dUL, 0x3c946437UL, 0x994cce13UL,
+ 0x3ff82589UL, 0xd41532d8UL, 0xbc9d4c1dUL, 0x1eb941f7UL, 0x3ff8364cUL,
+ 0x31df2bd5UL, 0x3c999b9aUL, 0x4623c7adUL, 0x3ff8471aUL, 0xa341cdfbUL,
+ 0xbc88d684UL, 0x179f5b21UL, 0x3ff857f4UL, 0xf8b216d0UL, 0xbc5ba748UL,
+ 0x9b4492edUL, 0x3ff868d9UL, 0x9bd4f6baUL, 0xbc9fc6f8UL, 0xd931a436UL,
+ 0x3ff879caUL, 0xd2db47bdUL, 0x3c85d2d7UL, 0xd98a6699UL, 0x3ff88ac7UL,
+ 0xf37cb53aUL, 0x3c9994c2UL, 0xa478580fUL, 0x3ff89bd0UL, 0x4475202aUL,
+ 0x3c9d5395UL, 0x422aa0dbUL, 0x3ff8ace5UL, 0x56864b27UL, 0x3c96e9f1UL,
+ 0xbad61778UL, 0x3ff8be05UL, 0xfc43446eUL, 0x3c9ecb5eUL, 0x16b5448cUL,
+ 0x3ff8cf32UL, 0x32e9e3aaUL, 0xbc70d55eUL, 0x5e0866d9UL, 0x3ff8e06aUL,
+ 0x6fc9b2e6UL, 0xbc97114aUL, 0x99157736UL, 0x3ff8f1aeUL, 0xa2e3976cUL,
+ 0x3c85cc13UL, 0xd0282c8aUL, 0x3ff902feUL, 0x85fe3fd2UL, 0x3c9592caUL,
+ 0x0b91ffc6UL, 0x3ff9145bUL, 0x2e582524UL, 0xbc9dd679UL, 0x53aa2fe2UL,
+ 0x3ff925c3UL, 0xa639db7fUL, 0xbc83455fUL, 0xb0cdc5e5UL, 0x3ff93737UL,
+ 0x81b57ebcUL, 0xbc675fc7UL, 0x2b5f98e5UL, 0x3ff948b8UL, 0x797d2d99UL,
+ 0xbc8dc3d6UL, 0xcbc8520fUL, 0x3ff95a44UL, 0x96a5f039UL, 0xbc764b7cUL,
+ 0x9a7670b3UL, 0x3ff96bddUL, 0x7f19c896UL, 0xbc5ba596UL, 0x9fde4e50UL,
+ 0x3ff97d82UL, 0x7c1b85d1UL, 0xbc9d185bUL, 0xe47a22a2UL, 0x3ff98f33UL,
+ 0xa24c78ecUL, 0x3c7cabdaUL, 0x70ca07baUL, 0x3ff9a0f1UL, 0x91cee632UL,
+ 0xbc9173bdUL, 0x4d53fe0dUL, 0x3ff9b2bbUL, 0x4df6d518UL, 0xbc9dd84eUL,
+ 0x82a3f090UL, 0x3ff9c491UL, 0xb071f2beUL, 0x3c7c7c46UL, 0x194bb8d5UL,
+ 0x3ff9d674UL, 0xa3dd8233UL, 0xbc9516beUL, 0x19e32323UL, 0x3ff9e863UL,
+ 0x78e64c6eUL, 0x3c7824caUL, 0x8d07f29eUL, 0x3ff9fa5eUL, 0xaaf1faceUL,
+ 0xbc84a9ceUL, 0x7b5de565UL, 0x3ffa0c66UL, 0x5d1cd533UL, 0xbc935949UL,
+ 0xed8eb8bbUL, 0x3ffa1e7aUL, 0xee8be70eUL, 0x3c9c6618UL, 0xec4a2d33UL,
+ 0x3ffa309bUL, 0x7ddc36abUL, 0x3c96305cUL, 0x80460ad8UL, 0x3ffa42c9UL,
+ 0x589fb120UL, 0xbc9aa780UL, 0xb23e255dUL, 0x3ffa5503UL, 0xdb8d41e1UL,
+ 0xbc9d2f6eUL, 0x8af46052UL, 0x3ffa674aUL, 0x30670366UL, 0x3c650f56UL,
+ 0x1330b358UL, 0x3ffa799eUL, 0xcac563c7UL, 0x3c9bcb7eUL, 0x53c12e59UL,
+ 0x3ffa8bfeUL, 0xb2ba15a9UL, 0xbc94f867UL, 0x5579fdbfUL, 0x3ffa9e6bUL,
+ 0x0ef7fd31UL, 0x3c90fac9UL, 0x21356ebaUL, 0x3ffab0e5UL, 0xdae94545UL,
+ 0x3c889c31UL, 0xbfd3f37aUL, 0x3ffac36bUL, 0xcae76cd0UL, 0xbc8f9234UL,
+ 0x3a3c2774UL, 0x3ffad5ffUL, 0xb6b1b8e5UL, 0x3c97ef3bUL, 0x995ad3adUL,
+ 0x3ffae89fUL, 0x345dcc81UL, 0x3c97a1cdUL, 0xe622f2ffUL, 0x3ffafb4cUL,
+ 0x0f315ecdUL, 0xbc94b2fcUL, 0x298db666UL, 0x3ffb0e07UL, 0x4c80e425UL,
+ 0xbc9bdef5UL, 0x6c9a8952UL, 0x3ffb20ceUL, 0x4a0756ccUL, 0x3c94dd02UL,
+ 0xb84f15fbUL, 0x3ffb33a2UL, 0x3084d708UL, 0xbc62805eUL, 0x15b749b1UL,
+ 0x3ffb4684UL, 0xe9df7c90UL, 0xbc7f763dUL, 0x8de5593aUL, 0x3ffb5972UL,
+ 0xbbba6de3UL, 0xbc9c71dfUL, 0x29f1c52aUL, 0x3ffb6c6eUL, 0x52883f6eUL,
+ 0x3c92a8f3UL, 0xf2fb5e47UL, 0x3ffb7f76UL, 0x7e54ac3bUL, 0xbc75584fUL,
+ 0xf22749e4UL, 0x3ffb928cUL, 0x54cb65c6UL, 0xbc9b7216UL, 0x30a1064aUL,
+ 0x3ffba5b0UL, 0x0e54292eUL, 0xbc9efcd3UL, 0xb79a6f1fUL, 0x3ffbb8e0UL,
+ 0xc9696205UL, 0xbc3f52d1UL, 0x904bc1d2UL, 0x3ffbcc1eUL, 0x7a2d9e84UL,
+ 0x3c823dd0UL, 0xc3f3a207UL, 0x3ffbdf69UL, 0x60ea5b53UL, 0xbc3c2623UL,
+ 0x5bd71e09UL, 0x3ffbf2c2UL, 0x3f6b9c73UL, 0xbc9efdcaUL, 0x6141b33dUL,
+ 0x3ffc0628UL, 0xa1fbca34UL, 0xbc8d8a5aUL, 0xdd85529cUL, 0x3ffc199bUL,
+ 0x895048ddUL, 0x3c811065UL, 0xd9fa652cUL, 0x3ffc2d1cUL, 0x17c8a5d7UL,
+ 0xbc96e516UL, 0x5fffd07aUL, 0x3ffc40abUL, 0xe083c60aUL, 0x3c9b4537UL,
+ 0x78fafb22UL, 0x3ffc5447UL, 0x2493b5afUL, 0x3c912f07UL, 0x2e57d14bUL,
+ 0x3ffc67f1UL, 0xff483cadUL, 0x3c92884dUL, 0x8988c933UL, 0x3ffc7ba8UL,
+ 0xbe255559UL, 0xbc8e76bbUL, 0x9406e7b5UL, 0x3ffc8f6dUL, 0x48805c44UL,
+ 0x3c71acbcUL, 0x5751c4dbUL, 0x3ffca340UL, 0xd10d08f5UL, 0xbc87f2beUL,
+ 0xdcef9069UL, 0x3ffcb720UL, 0xd1e949dbUL, 0x3c7503cbUL, 0x2e6d1675UL,
+ 0x3ffccb0fUL, 0x86009092UL, 0xbc7d220fUL, 0x555dc3faUL, 0x3ffcdf0bUL,
+ 0x53829d72UL, 0xbc8dd83bUL, 0x5b5bab74UL, 0x3ffcf315UL, 0xb86dff57UL,
+ 0xbc9a08e9UL, 0x4a07897cUL, 0x3ffd072dUL, 0x43797a9cUL, 0xbc9cbc37UL,
+ 0x2b08c968UL, 0x3ffd1b53UL, 0x219a36eeUL, 0x3c955636UL, 0x080d89f2UL,
+ 0x3ffd2f87UL, 0x719d8578UL, 0xbc9d487bUL, 0xeacaa1d6UL, 0x3ffd43c8UL,
+ 0xbf5a1614UL, 0x3c93db53UL, 0xdcfba487UL, 0x3ffd5818UL, 0xd75b3707UL,
+ 0x3c82ed02UL, 0xe862e6d3UL, 0x3ffd6c76UL, 0x4a8165a0UL, 0x3c5fe87aUL,
+ 0x16c98398UL, 0x3ffd80e3UL, 0x8beddfe8UL, 0xbc911ec1UL, 0x71ff6075UL,
+ 0x3ffd955dUL, 0xbb9af6beUL, 0x3c9a052dUL, 0x03db3285UL, 0x3ffda9e6UL,
+ 0x696db532UL, 0x3c9c2300UL, 0xd63a8315UL, 0x3ffdbe7cUL, 0x926b8be4UL,
+ 0xbc9b76f1UL, 0xf301b460UL, 0x3ffdd321UL, 0x78f018c3UL, 0x3c92da57UL,
+ 0x641c0658UL, 0x3ffde7d5UL, 0x8e79ba8fUL, 0xbc9ca552UL, 0x337b9b5fUL,
+ 0x3ffdfc97UL, 0x4f184b5cUL, 0xbc91a5cdUL, 0x6b197d17UL, 0x3ffe1167UL,
+ 0xbd5c7f44UL, 0xbc72b529UL, 0x14f5a129UL, 0x3ffe2646UL, 0x817a1496UL,
+ 0xbc97b627UL, 0x3b16ee12UL, 0x3ffe3b33UL, 0x31fdc68bUL, 0xbc99f4a4UL,
+ 0xe78b3ff6UL, 0x3ffe502eUL, 0x80a9cc8fUL, 0x3c839e89UL, 0x24676d76UL,
+ 0x3ffe6539UL, 0x7522b735UL, 0xbc863ff8UL, 0xfbc74c83UL, 0x3ffe7a51UL,
+ 0xca0c8de2UL, 0x3c92d522UL, 0x77cdb740UL, 0x3ffe8f79UL, 0x80b054b1UL,
+ 0xbc910894UL, 0xa2a490daUL, 0x3ffea4afUL, 0x179c2893UL, 0xbc9e9c23UL,
+ 0x867cca6eUL, 0x3ffeb9f4UL, 0x2293e4f2UL, 0x3c94832fUL, 0x2d8e67f1UL,
+ 0x3ffecf48UL, 0xb411ad8cUL, 0xbc9c93f3UL, 0xa2188510UL, 0x3ffee4aaUL,
+ 0xa487568dUL, 0x3c91c68dUL, 0xee615a27UL, 0x3ffefa1bUL, 0x86a4b6b0UL,
+ 0x3c9dc7f4UL, 0x1cb6412aUL, 0x3fff0f9cUL, 0x65181d45UL, 0xbc932200UL,
+ 0x376bba97UL, 0x3fff252bUL, 0xbf0d8e43UL, 0x3c93a1a5UL, 0x48dd7274UL,
+ 0x3fff3ac9UL, 0x3ed837deUL, 0xbc795a5aUL, 0x5b6e4540UL, 0x3fff5076UL,
+ 0x2dd8a18bUL, 0x3c99d3e1UL, 0x798844f8UL, 0x3fff6632UL, 0x3539343eUL,
+ 0x3c9fa37bUL, 0xad9cbe14UL, 0x3fff7bfdUL, 0xd006350aUL, 0xbc9dbb12UL,
+ 0x02243c89UL, 0x3fff91d8UL, 0xa779f689UL, 0xbc612ea8UL, 0x819e90d8UL,
+ 0x3fffa7c1UL, 0xf3a5931eUL, 0x3c874853UL, 0x3692d514UL, 0x3fffbdbaUL,
+ 0x15098eb6UL, 0xbc796773UL, 0x2b8f71f1UL, 0x3fffd3c2UL, 0x966579e7UL,
+ 0x3c62eb74UL, 0x6b2a23d9UL, 0x3fffe9d9UL, 0x7442fde3UL, 0x3c74a603UL,
+ 0xe78a6731UL, 0x3f55d87fUL, 0xd704a0c0UL, 0x3fac6b08UL, 0x6fba4e77UL,
+ 0x3f83b2abUL, 0xff82c58fUL, 0x3fcebfbdUL, 0xfefa39efUL, 0x3fe62e42UL,
+ 0x00000000UL, 0x00000000UL, 0xfefa39efUL, 0x3fe62e42UL, 0xfefa39efUL,
+ 0xbfe62e42UL, 0xf8000000UL, 0xffffffffUL, 0xf8000000UL, 0xffffffffUL,
+ 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL
+
+};
+
+//registers,
+// input: xmm0, xmm1
+// scratch: xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
+// eax, edx, ecx, ebx
+
+// Code generated by Intel C compiler for LIBM library
+
+void MacroAssembler::fast_pow(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, L_2TAG_PACKET_14_0_2, L_2TAG_PACKET_15_0_2;
+ Label L_2TAG_PACKET_16_0_2, L_2TAG_PACKET_17_0_2, L_2TAG_PACKET_18_0_2, L_2TAG_PACKET_19_0_2;
+ Label L_2TAG_PACKET_20_0_2, L_2TAG_PACKET_21_0_2, L_2TAG_PACKET_22_0_2, L_2TAG_PACKET_23_0_2;
+ Label L_2TAG_PACKET_24_0_2, L_2TAG_PACKET_25_0_2, L_2TAG_PACKET_26_0_2, L_2TAG_PACKET_27_0_2;
+ Label L_2TAG_PACKET_28_0_2, L_2TAG_PACKET_29_0_2, L_2TAG_PACKET_30_0_2, L_2TAG_PACKET_31_0_2;
+ Label L_2TAG_PACKET_32_0_2, L_2TAG_PACKET_33_0_2, L_2TAG_PACKET_34_0_2, L_2TAG_PACKET_35_0_2;
+ Label L_2TAG_PACKET_36_0_2, L_2TAG_PACKET_37_0_2, L_2TAG_PACKET_38_0_2, L_2TAG_PACKET_39_0_2;
+ Label L_2TAG_PACKET_40_0_2, L_2TAG_PACKET_41_0_2, L_2TAG_PACKET_42_0_2, L_2TAG_PACKET_43_0_2;
+ Label L_2TAG_PACKET_44_0_2, L_2TAG_PACKET_45_0_2, L_2TAG_PACKET_46_0_2, L_2TAG_PACKET_47_0_2;
+ Label L_2TAG_PACKET_48_0_2, L_2TAG_PACKET_49_0_2, L_2TAG_PACKET_50_0_2, L_2TAG_PACKET_51_0_2;
+ Label L_2TAG_PACKET_52_0_2, L_2TAG_PACKET_53_0_2, L_2TAG_PACKET_54_0_2, L_2TAG_PACKET_55_0_2;
+ Label L_2TAG_PACKET_56_0_2, L_2TAG_PACKET_57_0_2, L_2TAG_PACKET_58_0_2, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+
+ address static_const_table_pow = (address)_static_const_table_pow;
+
+ bind(start);
+ subl(rsp, 120);
+ movl(Address(rsp, 64), tmp);
+ lea(tmp, ExternalAddress(static_const_table_pow));
+ movsd(xmm0, Address(rsp, 128));
+ movsd(xmm1, Address(rsp, 136));
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movl(ecx, 1069088768);
+ movdl(xmm7, ecx);
+ movsd(Address(rsp, 16), xmm1);
+ xorpd(xmm1, xmm1);
+ movl(edx, 30704);
+ pinsrw(xmm1, edx, 3);
+ movsd(Address(rsp, 8), xmm0);
+ movdqu(xmm3, xmm0);
+ movl(edx, 8192);
+ movdl(xmm4, edx);
+ movdqu(xmm6, Address(tmp, 8240));
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ psllq(xmm0, 5);
+ movsd(xmm2, Address(tmp, 8256));
+ psrlq(xmm0, 34);
+ movl(edx, eax);
+ andl(edx, 32752);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ rcpss(xmm0, xmm0);
+ psllq(xmm3, 12);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ psrlq(xmm3, 12);
+ movl(Address(rsp, 24), rsi);
+ subl(eax, 16);
+ cmpl(eax, 32736);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_0_0_2);
+ movl(rsi, 0);
+
+ bind(L_2TAG_PACKET_1_0_2);
+ mulss(xmm0, xmm7);
+ movl(edx, -1);
+ subl(ecx, 4);
+ shll(edx);
+ movdl(xmm5, edx);
+ por(xmm3, xmm1);
+ subl(eax, 16351);
+ cmpl(eax, 1);
+ jcc(Assembler::belowEqual, L_2TAG_PACKET_2_0_2);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm3);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ subl(eax, 1);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ mulsd(xmm3, xmm0);
+ movdqu(xmm1, Address(tmp, 8272));
+ subsd(xmm5, xmm2);
+ movdqu(xmm4, Address(tmp, 8288));
+ movl(ecx, eax);
+ sarl(eax, 31);
+ addl(ecx, eax);
+ xorl(eax, ecx);
+ addl(eax, 1);
+ bsrl(eax, eax);
+ unpcklpd(xmm5, xmm3);
+ movdqu(xmm6, Address(tmp, 8304));
+ addsd(xmm3, xmm5);
+ andl(edx, 16760832);
+ shrl(edx, 10);
+ addpd(xmm5, Address(tmp, edx, Address::times_1, -3616));
+ movdqu(xmm0, Address(tmp, 8320));
+ pshufd(xmm2, xmm3, 68);
+ mulsd(xmm3, xmm3);
+ mulpd(xmm1, xmm2);
+ mulpd(xmm4, xmm2);
+ addsd(xmm5, xmm7);
+ mulsd(xmm2, xmm3);
+ addpd(xmm6, xmm1);
+ mulsd(xmm3, xmm3);
+ addpd(xmm0, xmm4);
+ movsd(xmm1, Address(rsp, 16));
+ movzwl(ecx, Address(rsp, 22));
+ pshufd(xmm7, xmm5, 238);
+ movsd(xmm4, Address(tmp, 8368));
+ mulpd(xmm6, xmm2);
+ pshufd(xmm3, xmm3, 68);
+ mulpd(xmm0, xmm2);
+ shll(eax, 4);
+ subl(eax, 15872);
+ andl(ecx, 32752);
+ addl(eax, ecx);
+ mulpd(xmm3, xmm6);
+ cmpl(eax, 624);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_5_0_2);
+ xorpd(xmm6, xmm6);
+ movl(edx, 17080);
+ pinsrw(xmm6, edx, 3);
+ movdqu(xmm2, xmm1);
+ pand(xmm4, xmm1);
+ subsd(xmm1, xmm4);
+ mulsd(xmm4, xmm5);
+ addsd(xmm0, xmm7);
+ mulsd(xmm1, xmm5);
+ movdqu(xmm7, xmm6);
+ addsd(xmm6, xmm4);
+ addpd(xmm3, xmm0);
+ movdl(edx, xmm6);
+ subsd(xmm6, xmm7);
+ pshufd(xmm0, xmm3, 238);
+ subsd(xmm4, xmm6);
+ addsd(xmm0, xmm3);
+ movl(ecx, edx);
+ andl(edx, 255);
+ addl(edx, edx);
+ movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
+ addsd(xmm4, xmm1);
+ mulsd(xmm2, xmm0);
+ movdqu(xmm7, Address(tmp, 12480));
+ movdqu(xmm3, Address(tmp, 12496));
+ shll(ecx, 12);
+ xorl(ecx, rsi);
+ andl(ecx, -1048576);
+ movdl(xmm6, ecx);
+ addsd(xmm2, xmm4);
+ movsd(xmm1, Address(tmp, 12512));
+ pshufd(xmm0, xmm2, 68);
+ pshufd(xmm4, xmm2, 68);
+ mulpd(xmm0, xmm0);
+ movl(rsi, Address(rsp, 24));
+ mulpd(xmm7, xmm4);
+ pshufd(xmm6, xmm6, 17);
+ mulsd(xmm1, xmm2);
+ mulsd(xmm0, xmm0);
+ paddd(xmm5, xmm6);
+ addpd(xmm3, xmm7);
+ mulsd(xmm1, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulpd(xmm0, xmm3);
+ addsd(xmm1, xmm6);
+ pshufd(xmm3, xmm0, 238);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ addsd(xmm0, xmm1);
+ addsd(xmm0, xmm3);
+ addsd(xmm0, xmm5);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_7_0_2);
+ movsd(xmm0, Address(rsp, 128));
+ movsd(xmm1, Address(rsp, 136));
+ mulsd(xmm0, xmm1);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ addl(eax, 16);
+ movl(edx, 32752);
+ andl(edx, eax);
+ cmpl(edx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_2);
+ testl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_2);
+
+ bind(L_2TAG_PACKET_10_0_2);
+ movl(ecx, Address(rsp, 16));
+ xorl(edx, edx);
+ testl(ecx, ecx);
+ movl(ecx, 1);
+ cmovl(Assembler::notEqual, edx, ecx);
+ orl(edx, Address(rsp, 20));
+ cmpl(edx, 1072693248);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ movsd(xmm3, Address(rsp, 8));
+ movdl(edx, xmm3);
+ psrlq(xmm3, 32);
+ movdl(ecx, xmm3);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
+ xorpd(xmm3, xmm3);
+ movl(eax, 18416);
+ pinsrw(xmm3, eax, 3);
+ mulsd(xmm0, xmm3);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm3, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psllq(xmm0, 5);
+ movsd(xmm2, Address(tmp, 8256));
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm3, 12);
+ movdqu(xmm6, Address(tmp, 8240));
+ psrlq(xmm3, 12);
+ mulss(xmm0, xmm7);
+ movl(edx, -1024);
+ movdl(xmm5, edx);
+ por(xmm3, xmm1);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm3);
+ movl(rsi, 0);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ andl(eax, 32752);
+ subl(eax, 18416);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ jmp(L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_12_0_2);
+ movl(ecx, Address(rsp, 16));
+ xorl(edx, edx);
+ testl(ecx, ecx);
+ movl(ecx, 1);
+ cmovl(Assembler::notEqual, edx, ecx);
+ orl(edx, Address(rsp, 20));
+ cmpl(edx, 1072693248);
+ jcc(Assembler::equal, L_2TAG_PACKET_7_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ movsd(xmm3, Address(rsp, 8));
+ movdl(edx, xmm3);
+ psrlq(xmm3, 32);
+ movdl(ecx, xmm3);
+ orl(edx, ecx);
+ cmpl(edx, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
+ xorpd(xmm3, xmm3);
+ movl(eax, 18416);
+ pinsrw(xmm3, eax, 3);
+ mulsd(xmm0, xmm3);
+ xorpd(xmm2, xmm2);
+ movl(eax, 16368);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm3, xmm0);
+ pextrw(eax, xmm0, 3);
+ por(xmm0, xmm2);
+ movl(ecx, 18416);
+ psllq(xmm0, 5);
+ movsd(xmm2, Address(tmp, 8256));
+ psrlq(xmm0, 34);
+ rcpss(xmm0, xmm0);
+ psllq(xmm3, 12);
+ movdqu(xmm6, Address(tmp, 8240));
+ psrlq(xmm3, 12);
+ mulss(xmm0, xmm7);
+ movl(edx, -1024);
+ movdl(xmm5, edx);
+ por(xmm3, xmm1);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ pand(xmm5, xmm3);
+ movl(rsi, INT_MIN);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ andl(eax, 32752);
+ subl(eax, 18416);
+ sarl(eax, 4);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ jmp(L_2TAG_PACKET_4_0_2);
+
+ bind(L_2TAG_PACKET_5_0_2);
+ cmpl(eax, 0);
+ jcc(Assembler::less, L_2TAG_PACKET_13_0_2);
+ cmpl(eax, 752);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_14_0_2);
+
+ bind(L_2TAG_PACKET_15_0_2);
+ addsd(xmm0, xmm7);
+ movsd(xmm2, Address(tmp, 12544));
+ addpd(xmm3, xmm0);
+ xorpd(xmm6, xmm6);
+ movl(eax, 17080);
+ pinsrw(xmm6, eax, 3);
+ pshufd(xmm0, xmm3, 238);
+ addsd(xmm0, xmm3);
+ movdqu(xmm3, xmm5);
+ addsd(xmm5, xmm0);
+ movdqu(xmm4, xmm2);
+ subsd(xmm3, xmm5);
+ movdqu(xmm7, xmm5);
+ pand(xmm5, xmm2);
+ movdqu(xmm2, xmm1);
+ pand(xmm4, xmm1);
+ subsd(xmm7, xmm5);
+ addsd(xmm0, xmm3);
+ subsd(xmm1, xmm4);
+ mulsd(xmm4, xmm5);
+ addsd(xmm0, xmm7);
+ mulsd(xmm2, xmm0);
+ movdqu(xmm7, xmm6);
+ mulsd(xmm1, xmm5);
+ addsd(xmm6, xmm4);
+ movdl(eax, xmm6);
+ subsd(xmm6, xmm7);
+ addsd(xmm2, xmm1);
+ movdqu(xmm7, Address(tmp, 12480));
+ movdqu(xmm3, Address(tmp, 12496));
+ subsd(xmm4, xmm6);
+ pextrw(edx, xmm6, 3);
+ movl(ecx, eax);
+ andl(eax, 255);
+ addl(eax, eax);
+ movdqu(xmm5, Address(tmp, eax, Address::times_8, 8384));
+ addsd(xmm2, xmm4);
+ sarl(ecx, 8);
+ movl(eax, ecx);
+ sarl(ecx, 1);
+ subl(eax, ecx);
+ shll(ecx, 20);
+ xorl(ecx, rsi);
+ movdl(xmm6, ecx);
+ movsd(xmm1, Address(tmp, 12512));
+ andl(edx, 32767);
+ cmpl(edx, 16529);
+ jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
+ pshufd(xmm0, xmm2, 68);
+ pshufd(xmm4, xmm2, 68);
+ mulpd(xmm0, xmm0);
+ mulpd(xmm7, xmm4);
+ pshufd(xmm6, xmm6, 17);
+ mulsd(xmm1, xmm2);
+ mulsd(xmm0, xmm0);
+ paddd(xmm5, xmm6);
+ addpd(xmm3, xmm7);
+ mulsd(xmm1, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulpd(xmm0, xmm3);
+ addsd(xmm1, xmm6);
+ pshufd(xmm3, xmm0, 238);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ shll(eax, 4);
+ xorpd(xmm4, xmm4);
+ addl(eax, 16368);
+ pinsrw(xmm4, eax, 3);
+ addsd(xmm0, xmm1);
+ movl(rsi, Address(rsp, 24));
+ addsd(xmm0, xmm3);
+ movdqu(xmm1, xmm0);
+ addsd(xmm0, xmm5);
+ mulsd(xmm0, xmm4);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_18_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_8_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movsd(xmm0, Address(rsp, 8));
+ movdqu(xmm2, xmm0);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_19_0_2);
+ addsd(xmm0, xmm0);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_20_0_2);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_20_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ movl(edx, 29);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_22_0_2);
+ movsd(xmm0, Address(rsp, 16));
+ addpd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_19_0_2);
+ movdl(eax, xmm1);
+ movdqu(xmm2, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_23_0_2);
+ pextrw(eax, xmm2, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_24_0_2);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
+
+ bind(L_2TAG_PACKET_24_0_2);
+ pextrw(eax, xmm0, 3);
+ testl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_25_0_2);
+ testl(ecx, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_27_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
+ testl(eax, 2);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_29_0_2);
+ jmp(L_2TAG_PACKET_28_0_2);
+
+ bind(L_2TAG_PACKET_25_0_2);
+ shrl(ecx, 20);
+ andl(ecx, 2047);
+ cmpl(ecx, 1075);
+ jcc(Assembler::above, L_2TAG_PACKET_28_0_2);
+ jcc(Assembler::equal, L_2TAG_PACKET_30_0_2);
+ cmpl(ecx, 1074);
+ jcc(Assembler::above, L_2TAG_PACKET_27_0_2);
+ cmpl(ecx, 1023);
+ jcc(Assembler::below, L_2TAG_PACKET_28_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movl(eax, 17208);
+ xorpd(xmm3, xmm3);
+ pinsrw(xmm3, eax, 3);
+ movdqu(xmm4, xmm3);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_28_0_2);
+ movdl(eax, xmm3);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
+
+ bind(L_2TAG_PACKET_29_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32768);
+ jcc(Assembler::equal, L_2TAG_PACKET_18_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32768);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_28_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_26_0_2);
+
+ bind(L_2TAG_PACKET_31_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32752);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_30_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_28_0_2);
+ jmp(L_2TAG_PACKET_29_0_2);
+
+ bind(L_2TAG_PACKET_32_0_2);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 20);
+ movdl(edx, xmm1);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_33_0_2);
+ movsd(xmm0, Address(rsp, 16));
+ addsd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_33_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ pextrw(eax, xmm0, 3);
+ cmpl(eax, 49136);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
+ movdl(ecx, xmm0);
+ psrlq(xmm0, 20);
+ movdl(edx, xmm0);
+ orl(ecx, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_34_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32760);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_34_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ andl(eax, 32752);
+ subl(eax, 16368);
+ pextrw(edx, xmm1, 3);
+ xorpd(xmm0, xmm0);
+ xorl(eax, edx);
+ andl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
+ movl(ecx, 32752);
+ pinsrw(xmm0, ecx, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_35_0_2);
+ movdl(eax, xmm1);
+ cmpl(edx, 17184);
+ jcc(Assembler::above, L_2TAG_PACKET_36_0_2);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
+ testl(eax, 2);
+ jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
+ jmp(L_2TAG_PACKET_39_0_2);
+
+ bind(L_2TAG_PACKET_36_0_2);
+ testl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
+ jmp(L_2TAG_PACKET_39_0_2);
+
+ bind(L_2TAG_PACKET_9_0_2);
+ movsd(xmm2, Address(rsp, 8));
+ movdl(eax, xmm2);
+ psrlq(xmm2, 31);
+ movdl(ecx, xmm2);
+ orl(eax, ecx);
+ jcc(Assembler::equal, L_2TAG_PACKET_11_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ pextrw(edx, xmm1, 3);
+ movdl(eax, xmm1);
+ movdqu(xmm2, xmm1);
+ psrlq(xmm2, 32);
+ movdl(ecx, xmm2);
+ addl(ecx, ecx);
+ orl(ecx, eax);
+ jcc(Assembler::equal, L_2TAG_PACKET_40_0_2);
+ andl(edx, 32752);
+ cmpl(edx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_32_0_2);
+ cmpl(edx, 17200);
+ jcc(Assembler::above, L_2TAG_PACKET_38_0_2);
+ cmpl(edx, 17184);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_35_0_2);
+ cmpl(edx, 16368);
+ jcc(Assembler::below, L_2TAG_PACKET_37_0_2);
+ movl(eax, 17208);
+ xorpd(xmm2, xmm2);
+ pinsrw(xmm2, eax, 3);
+ movdqu(xmm4, xmm2);
+ addsd(xmm2, xmm1);
+ subsd(xmm4, xmm2);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32767);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_37_0_2);
+ movdl(eax, xmm2);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_38_0_2);
+
+ bind(L_2TAG_PACKET_39_0_2);
+ xorpd(xmm1, xmm1);
+ movl(edx, 30704);
+ pinsrw(xmm1, edx, 3);
+ movsd(xmm2, Address(tmp, 8256));
+ movsd(xmm4, Address(rsp, 8));
+ pextrw(eax, xmm4, 3);
+ movl(edx, 8192);
+ movdl(xmm4, edx);
+ andl(eax, 32767);
+ subl(eax, 16);
+ jcc(Assembler::less, L_2TAG_PACKET_12_0_2);
+ movl(edx, eax);
+ andl(edx, 32752);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ movl(rsi, INT_MIN);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_37_0_2);
+ xorpd(xmm1, xmm1);
+ movl(eax, 32752);
+ pinsrw(xmm1, eax, 3);
+ xorpd(xmm0, xmm0);
+ mulsd(xmm0, xmm1);
+ movl(edx, 28);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_38_0_2);
+ xorpd(xmm1, xmm1);
+ movl(edx, 30704);
+ pinsrw(xmm1, edx, 3);
+ movsd(xmm2, Address(tmp, 8256));
+ movsd(xmm4, Address(rsp, 8));
+ pextrw(eax, xmm4, 3);
+ movl(edx, 8192);
+ movdl(xmm4, edx);
+ andl(eax, 32767);
+ subl(eax, 16);
+ jcc(Assembler::less, L_2TAG_PACKET_10_0_2);
+ movl(edx, eax);
+ andl(edx, 32752);
+ subl(edx, 16368);
+ movl(ecx, edx);
+ sarl(edx, 31);
+ addl(ecx, edx);
+ xorl(ecx, edx);
+ addl(ecx, 16);
+ bsrl(ecx, ecx);
+ movl(rsi, 0);
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_23_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_26_0_2);
+ xorpd(xmm0, xmm0);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_13_0_2);
+ addl(eax, 384);
+ cmpl(eax, 0);
+ jcc(Assembler::less, L_2TAG_PACKET_41_0_2);
+ mulsd(xmm5, xmm1);
+ addsd(xmm0, xmm7);
+ shrl(rsi, 31);
+ addpd(xmm3, xmm0);
+ pshufd(xmm0, xmm3, 238);
+ addsd(xmm3, xmm0);
+ movsd(xmm4, Address(tmp, rsi, Address::times_8, 12528));
+ mulsd(xmm1, xmm3);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ shll(rsi, 15);
+ orl(eax, rsi);
+ pinsrw(xmm0, eax, 3);
+ addsd(xmm5, xmm1);
+ movl(rsi, Address(rsp, 24));
+ mulsd(xmm5, xmm4);
+ addsd(xmm0, xmm5);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_41_0_2);
+ movl(rsi, Address(rsp, 24));
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_40_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_42_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 16368);
+ pinsrw(xmm0, eax, 3);
+ movl(edx, 26);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_11_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movdqu(xmm2, xmm1);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_43_0_2);
+ movdl(eax, xmm2);
+ psrlq(xmm2, 20);
+ movdl(edx, xmm2);
+ orl(eax, edx);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_22_0_2);
+
+ bind(L_2TAG_PACKET_43_0_2);
+ movdl(eax, xmm1);
+ psrlq(xmm1, 32);
+ movdl(edx, xmm1);
+ movl(ecx, edx);
+ addl(edx, edx);
+ orl(eax, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_42_0_2);
+ shrl(edx, 21);
+ cmpl(edx, 1075);
+ jcc(Assembler::above, L_2TAG_PACKET_44_0_2);
+ jcc(Assembler::equal, L_2TAG_PACKET_45_0_2);
+ cmpl(edx, 1023);
+ jcc(Assembler::below, L_2TAG_PACKET_44_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movl(eax, 17208);
+ xorpd(xmm3, xmm3);
+ pinsrw(xmm3, eax, 3);
+ movdqu(xmm4, xmm3);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ pextrw(eax, xmm1, 3);
+ andl(eax, 32752);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_44_0_2);
+ movdl(eax, xmm3);
+ andl(eax, 1);
+ jcc(Assembler::equal, L_2TAG_PACKET_44_0_2);
+
+ bind(L_2TAG_PACKET_46_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ testl(ecx, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_47_0_2);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_45_0_2);
+ movsd(xmm1, Address(rsp, 16));
+ movdl(eax, xmm1);
+ testl(eax, 1);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_46_0_2);
+
+ bind(L_2TAG_PACKET_44_0_2);
+ testl(ecx, INT_MIN);
+ jcc(Assembler::equal, L_2TAG_PACKET_26_0_2);
+ xorpd(xmm0, xmm0);
+
+ bind(L_2TAG_PACKET_47_0_2);
+ movl(eax, 16368);
+ xorpd(xmm1, xmm1);
+ pinsrw(xmm1, eax, 3);
+ divsd(xmm1, xmm0);
+ movdqu(xmm0, xmm1);
+ movl(edx, 27);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_14_0_2);
+ movsd(xmm2, Address(rsp, 8));
+ movsd(xmm6, Address(rsp, 16));
+ pextrw(eax, xmm2, 3);
+ pextrw(edx, xmm6, 3);
+ movl(ecx, 32752);
+ andl(ecx, edx);
+ cmpl(ecx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
+ andl(eax, 32752);
+ subl(eax, 16368);
+ xorl(edx, eax);
+ testl(edx, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_49_0_2);
+
+ bind(L_2TAG_PACKET_50_0_2);
+ movl(eax, 32736);
+ pinsrw(xmm0, eax, 3);
+ shrl(rsi, 16);
+ orl(eax, rsi);
+ pinsrw(xmm1, eax, 3);
+ movl(rsi, Address(rsp, 24));
+ mulsd(xmm0, xmm1);
+
+ bind(L_2TAG_PACKET_17_0_2);
+ movl(edx, 24);
+
+ bind(L_2TAG_PACKET_21_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_49_0_2);
+ movl(eax, 16);
+ pinsrw(xmm0, eax, 3);
+ mulsd(xmm0, xmm0);
+ testl(rsi, INT_MIN);
+ jcc(Assembler::equal, L_2TAG_PACKET_51_0_2);
+ movsd(xmm2, Address(tmp, 12560));
+ xorpd(xmm0, xmm2);
+
+ bind(L_2TAG_PACKET_51_0_2);
+ movl(rsi, Address(rsp, 24));
+ movl(edx, 25);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_16_0_2);
+ pextrw(ecx, xmm5, 3);
+ pextrw(edx, xmm4, 3);
+ movl(eax, -1);
+ andl(ecx, 32752);
+ subl(ecx, 16368);
+ andl(edx, 32752);
+ addl(edx, ecx);
+ movl(ecx, -31);
+ sarl(edx, 4);
+ subl(ecx, edx);
+ jcc(Assembler::lessEqual, L_2TAG_PACKET_52_0_2);
+ cmpl(ecx, 20);
+ jcc(Assembler::above, L_2TAG_PACKET_53_0_2);
+ shll(eax);
+
+ bind(L_2TAG_PACKET_52_0_2);
+ movdl(xmm0, eax);
+ psllq(xmm0, 32);
+ pand(xmm0, xmm5);
+ subsd(xmm5, xmm0);
+ addsd(xmm5, xmm1);
+ mulsd(xmm0, xmm4);
+ mulsd(xmm5, xmm4);
+ addsd(xmm0, xmm5);
+
+ bind(L_2TAG_PACKET_53_0_2);
+ movl(edx, 25);
+ jmp(L_2TAG_PACKET_21_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movzwl(ecx, Address(rsp, 22));
+ movl(edx, INT_MIN);
+ movdl(xmm1, edx);
+ xorpd(xmm7, xmm7);
+ paddd(xmm0, xmm4);
+ psllq(xmm5, 32);
+ movdl(edx, xmm0);
+ psllq(xmm0, 29);
+ paddq(xmm1, xmm3);
+ pand(xmm5, xmm1);
+ andl(ecx, 32752);
+ cmpl(ecx, 16560);
+ jcc(Assembler::below, L_2TAG_PACKET_3_0_2);
+ pand(xmm0, xmm6);
+ subsd(xmm3, xmm5);
+ addl(eax, 16351);
+ shrl(eax, 4);
+ subl(eax, 1022);
+ cvtsi2sdl(xmm7, eax);
+ mulpd(xmm5, xmm0);
+ movsd(xmm4, Address(tmp, 0));
+ mulsd(xmm3, xmm0);
+ movsd(xmm6, Address(tmp, 0));
+ subsd(xmm5, xmm2);
+ movsd(xmm1, Address(tmp, 8));
+ pshufd(xmm2, xmm3, 68);
+ unpcklpd(xmm5, xmm3);
+ addsd(xmm3, xmm5);
+ movsd(xmm0, Address(tmp, 8));
+ andl(edx, 16760832);
+ shrl(edx, 10);
+ addpd(xmm7, Address(tmp, edx, Address::times_1, -3616));
+ mulsd(xmm4, xmm5);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm6, xmm2);
+ mulsd(xmm1, xmm2);
+ movdqu(xmm2, xmm5);
+ mulsd(xmm4, xmm5);
+ addsd(xmm5, xmm0);
+ movdqu(xmm0, xmm7);
+ addsd(xmm2, xmm3);
+ addsd(xmm7, xmm5);
+ mulsd(xmm6, xmm2);
+ subsd(xmm0, xmm7);
+ movdqu(xmm2, xmm7);
+ addsd(xmm7, xmm4);
+ addsd(xmm0, xmm5);
+ subsd(xmm2, xmm7);
+ addsd(xmm4, xmm2);
+ pshufd(xmm2, xmm5, 238);
+ movdqu(xmm5, xmm7);
+ addsd(xmm7, xmm2);
+ addsd(xmm4, xmm0);
+ movdqu(xmm0, Address(tmp, 8272));
+ subsd(xmm5, xmm7);
+ addsd(xmm6, xmm4);
+ movdqu(xmm4, xmm7);
+ addsd(xmm5, xmm2);
+ addsd(xmm7, xmm1);
+ movdqu(xmm2, Address(tmp, 8336));
+ subsd(xmm4, xmm7);
+ addsd(xmm6, xmm5);
+ addsd(xmm4, xmm1);
+ pshufd(xmm5, xmm7, 238);
+ movdqu(xmm1, xmm7);
+ addsd(xmm7, xmm5);
+ subsd(xmm1, xmm7);
+ addsd(xmm1, xmm5);
+ movdqu(xmm5, Address(tmp, 8352));
+ pshufd(xmm3, xmm3, 68);
+ addsd(xmm6, xmm4);
+ addsd(xmm6, xmm1);
+ movdqu(xmm1, Address(tmp, 8304));
+ mulpd(xmm0, xmm3);
+ mulpd(xmm2, xmm3);
+ pshufd(xmm4, xmm3, 68);
+ mulpd(xmm3, xmm3);
+ addpd(xmm0, xmm1);
+ addpd(xmm5, xmm2);
+ mulsd(xmm4, xmm3);
+ movsd(xmm2, Address(tmp, 16));
+ mulpd(xmm3, xmm3);
+ movsd(xmm1, Address(rsp, 16));
+ movzwl(ecx, Address(rsp, 22));
+ mulpd(xmm0, xmm4);
+ pextrw(eax, xmm7, 3);
+ mulpd(xmm5, xmm4);
+ mulpd(xmm0, xmm3);
+ movsd(xmm4, Address(tmp, 8376));
+ pand(xmm2, xmm7);
+ addsd(xmm5, xmm6);
+ subsd(xmm7, xmm2);
+ addpd(xmm5, xmm0);
+ andl(eax, 32752);
+ subl(eax, 16368);
+ andl(ecx, 32752);
+ cmpl(ecx, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_48_0_2);
+ addl(ecx, eax);
+ cmpl(ecx, 16576);
+ jcc(Assembler::aboveEqual, L_2TAG_PACKET_54_0_2);
+ pshufd(xmm0, xmm5, 238);
+ pand(xmm4, xmm1);
+ movdqu(xmm3, xmm1);
+ addsd(xmm5, xmm0);
+ subsd(xmm1, xmm4);
+ xorpd(xmm6, xmm6);
+ movl(edx, 17080);
+ pinsrw(xmm6, edx, 3);
+ addsd(xmm7, xmm5);
+ mulsd(xmm4, xmm2);
+ mulsd(xmm1, xmm2);
+ movdqu(xmm5, xmm6);
+ mulsd(xmm3, xmm7);
+ addsd(xmm6, xmm4);
+ addsd(xmm1, xmm3);
+ movdqu(xmm7, Address(tmp, 12480));
+ movdl(edx, xmm6);
+ subsd(xmm6, xmm5);
+ movdqu(xmm3, Address(tmp, 12496));
+ movsd(xmm2, Address(tmp, 12512));
+ subsd(xmm4, xmm6);
+ movl(ecx, edx);
+ andl(edx, 255);
+ addl(edx, edx);
+ movdqu(xmm5, Address(tmp, edx, Address::times_8, 8384));
+ addsd(xmm4, xmm1);
+ pextrw(edx, xmm6, 3);
+ shrl(ecx, 8);
+ movl(eax, ecx);
+ shrl(ecx, 1);
+ subl(eax, ecx);
+ shll(ecx, 20);
+ movdl(xmm6, ecx);
+ pshufd(xmm0, xmm4, 68);
+ pshufd(xmm1, xmm4, 68);
+ mulpd(xmm0, xmm0);
+ mulpd(xmm7, xmm1);
+ pshufd(xmm6, xmm6, 17);
+ mulsd(xmm2, xmm4);
+ andl(edx, 32767);
+ cmpl(edx, 16529);
+ jcc(Assembler::above, L_2TAG_PACKET_14_0_2);
+ mulsd(xmm0, xmm0);
+ paddd(xmm5, xmm6);
+ addpd(xmm3, xmm7);
+ mulsd(xmm2, xmm5);
+ pshufd(xmm6, xmm5, 238);
+ mulpd(xmm0, xmm3);
+ addsd(xmm2, xmm6);
+ pshufd(xmm3, xmm0, 238);
+ addl(eax, 1023);
+ shll(eax, 20);
+ orl(eax, rsi);
+ movdl(xmm4, eax);
+ mulsd(xmm0, xmm5);
+ mulsd(xmm3, xmm5);
+ addsd(xmm0, xmm2);
+ psllq(xmm4, 32);
+ addsd(xmm0, xmm3);
+ movdqu(xmm1, xmm0);
+ addsd(xmm0, xmm5);
+ movl(rsi, Address(rsp, 24));
+ mulsd(xmm0, xmm4);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_16_0_2);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_17_0_2);
+
+ bind(L_2TAG_PACKET_55_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_6_0_2);
+
+ bind(L_2TAG_PACKET_48_0_2);
+ movl(rsi, Address(rsp, 24));
+
+ bind(L_2TAG_PACKET_56_0_2);
+ movsd(xmm0, Address(rsp, 8));
+ movsd(xmm1, Address(rsp, 16));
+ addsd(xmm1, xmm1);
+ xorpd(xmm2, xmm2);
+ movl(eax, 49136);
+ pinsrw(xmm2, eax, 3);
+ addsd(xmm2, xmm0);
+ pextrw(eax, xmm2, 3);
+ cmpl(eax, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_57_0_2);
+ xorpd(xmm0, xmm0);
+ movl(eax, 32760);
+ pinsrw(xmm0, eax, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_57_0_2);
+ movdl(edx, xmm1);
+ movdqu(xmm3, xmm1);
+ psrlq(xmm3, 20);
+ movdl(ecx, xmm3);
+ orl(ecx, edx);
+ jcc(Assembler::equal, L_2TAG_PACKET_58_0_2);
+ addsd(xmm1, xmm1);
+ movdqu(xmm0, xmm1);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_58_0_2);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ pextrw(edx, xmm1, 3);
+ xorpd(xmm0, xmm0);
+ subl(eax, 16368);
+ xorl(eax, edx);
+ testl(eax, 32768);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_18_0_2);
+ movl(edx, 32752);
+ pinsrw(xmm0, edx, 3);
+ jmp(L_2TAG_PACKET_18_0_2);
+
+ bind(L_2TAG_PACKET_54_0_2);
+ pextrw(eax, xmm1, 3);
+ pextrw(ecx, xmm2, 3);
+ xorl(eax, ecx);
+ testl(eax, 32768);
+ jcc(Assembler::equal, L_2TAG_PACKET_50_0_2);
+ jmp(L_2TAG_PACKET_49_0_2);
+
+ bind(L_2TAG_PACKET_6_0_2);
+ movl(tmp, Address(rsp, 64));
+
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp
index bbc96156fe5..a0910f395bb 100644
--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp
@@ -493,3 +493,543 @@ void MacroAssembler::fast_sha256(XMMRegister msg, XMMRegister state0, XMMRegiste
bind(done_hash);
}
+
+#ifdef _LP64
+/*
+ The algorithm below is based on Intel publication:
+ "Fast SHA-256 Implementations on Intelë Architecture Processors" by Jim Guilford, Kirk Yap and Vinodh Gopal.
+ The assembly code was originally provided by Sean Gulley and in many places preserves
+ the original assembly NAMES and comments to simplify matching Java assembly with its original.
+ The Java version was substantially redesigned to replace 1200 assembly instruction with
+ much shorter run-time generator of the same code in memory.
+*/
+
+void MacroAssembler::sha256_AVX2_one_round_compute(
+ Register reg_old_h,
+ Register reg_a,
+ Register reg_b,
+ Register reg_c,
+ Register reg_d,
+ Register reg_e,
+ Register reg_f,
+ Register reg_g,
+ Register reg_h,
+ int iter) {
+ const Register& reg_y0 = r13;
+ const Register& reg_y1 = r14;
+ const Register& reg_y2 = r15;
+ const Register& reg_y3 = rcx;
+ const Register& reg_T1 = r12;
+ //;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RND iter ;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ if (iter%4 > 0) {
+ addl(reg_old_h, reg_y2); // reg_h = k + w + reg_h + S0 + S1 + CH = t1 + S0; --
+ }
+ movl(reg_y2, reg_f); // reg_y2 = reg_f ; CH
+ rorxd(reg_y0, reg_e, 25); // reg_y0 = reg_e >> 25 ; S1A
+ rorxd(reg_y1, reg_e, 11); // reg_y1 = reg_e >> 11 ; S1B
+ xorl(reg_y2, reg_g); // reg_y2 = reg_f^reg_g ; CH
+
+ xorl(reg_y0, reg_y1); // reg_y0 = (reg_e>>25) ^ (reg_h>>11) ; S1
+ rorxd(reg_y1, reg_e, 6); // reg_y1 = (reg_e >> 6) ; S1
+ andl(reg_y2, reg_e); // reg_y2 = (reg_f^reg_g)®_e ; CH
+
+ if (iter%4 > 0) {
+ addl(reg_old_h, reg_y3); // reg_h = t1 + S0 + MAJ ; --
+ }
+
+ xorl(reg_y0, reg_y1); // reg_y0 = (reg_e>>25) ^ (reg_e>>11) ^ (reg_e>>6) ; S1
+ rorxd(reg_T1, reg_a, 13); // reg_T1 = reg_a >> 13 ; S0B
+ xorl(reg_y2, reg_g); // reg_y2 = CH = ((reg_f^reg_g)®_e)^reg_g ; CH
+ rorxd(reg_y1, reg_a, 22); // reg_y1 = reg_a >> 22 ; S0A
+ movl(reg_y3, reg_a); // reg_y3 = reg_a ; MAJA
+
+ xorl(reg_y1, reg_T1); // reg_y1 = (reg_a>>22) ^ (reg_a>>13) ; S0
+ rorxd(reg_T1, reg_a, 2); // reg_T1 = (reg_a >> 2) ; S0
+ addl(reg_h, Address(rsp, rdx, Address::times_1, 4*iter)); // reg_h = k + w + reg_h ; --
+ orl(reg_y3, reg_c); // reg_y3 = reg_a|reg_c ; MAJA
+
+ xorl(reg_y1, reg_T1); // reg_y1 = (reg_a>>22) ^ (reg_a>>13) ^ (reg_a>>2) ; S0
+ movl(reg_T1, reg_a); // reg_T1 = reg_a ; MAJB
+ andl(reg_y3, reg_b); // reg_y3 = (reg_a|reg_c)®_b ; MAJA
+ andl(reg_T1, reg_c); // reg_T1 = reg_a®_c ; MAJB
+ addl(reg_y2, reg_y0); // reg_y2 = S1 + CH ; --
+
+
+ addl(reg_d, reg_h); // reg_d = k + w + reg_h + reg_d ; --
+ orl(reg_y3, reg_T1); // reg_y3 = MAJ = (reg_a|reg_c)®_b)|(reg_a®_c) ; MAJ
+ addl(reg_h, reg_y1); // reg_h = k + w + reg_h + S0 ; --
+
+ addl(reg_d, reg_y2); // reg_d = k + w + reg_h + reg_d + S1 + CH = reg_d + t1 ; --
+
+
+ if (iter%4 == 3) {
+ addl(reg_h, reg_y2); // reg_h = k + w + reg_h + S0 + S1 + CH = t1 + S0; --
+ addl(reg_h, reg_y3); // reg_h = t1 + S0 + MAJ ; --
+ }
+}
+
+void MacroAssembler::sha256_AVX2_four_rounds_compute_first(int start) {
+ sha256_AVX2_one_round_compute(rax, rax, rbx, rdi, rsi, r8, r9, r10, r11, start + 0);
+ sha256_AVX2_one_round_compute(r11, r11, rax, rbx, rdi, rsi, r8, r9, r10, start + 1);
+ sha256_AVX2_one_round_compute(r10, r10, r11, rax, rbx, rdi, rsi, r8, r9, start + 2);
+ sha256_AVX2_one_round_compute(r9, r9, r10, r11, rax, rbx, rdi, rsi, r8, start + 3);
+}
+
+void MacroAssembler::sha256_AVX2_four_rounds_compute_last(int start) {
+ sha256_AVX2_one_round_compute(r8, r8, r9, r10, r11, rax, rbx, rdi, rsi, start + 0);
+ sha256_AVX2_one_round_compute(rsi, rsi, r8, r9, r10, r11, rax, rbx, rdi, start + 1);
+ sha256_AVX2_one_round_compute(rdi, rdi, rsi, r8, r9, r10, r11, rax, rbx, start + 2);
+ sha256_AVX2_one_round_compute(rbx, rbx, rdi, rsi, r8, r9, r10, r11, rax, start + 3);
+}
+
+void MacroAssembler::sha256_AVX2_one_round_and_sched(
+ XMMRegister xmm_0, /* == ymm4 on 0, 1, 2, 3 iterations, then rotate 4 registers left on 4, 8, 12 iterations */
+ XMMRegister xmm_1, /* ymm5 */ /* full cycle is 16 iterations */
+ XMMRegister xmm_2, /* ymm6 */
+ XMMRegister xmm_3, /* ymm7 */
+ Register reg_a, /* == rax on 0 iteration, then rotate 8 register right on each next iteration */
+ Register reg_b, /* rbx */ /* full cycle is 8 iterations */
+ Register reg_c, /* rdi */
+ Register reg_d, /* rsi */
+ Register reg_e, /* r8 */
+ Register reg_f, /* r9d */
+ Register reg_g, /* r10d */
+ Register reg_h, /* r11d */
+ int iter)
+{
+ movl(rcx, reg_a); // rcx = reg_a ; MAJA
+ rorxd(r13, reg_e, 25); // r13 = reg_e >> 25 ; S1A
+ rorxd(r14, reg_e, 11); // r14 = reg_e >> 11 ; S1B
+ addl(reg_h, Address(rsp, rdx, Address::times_1, 4*iter));
+ orl(rcx, reg_c); // rcx = reg_a|reg_c ; MAJA
+
+ movl(r15, reg_f); // r15 = reg_f ; CH
+ rorxd(r12, reg_a, 13); // r12 = reg_a >> 13 ; S0B
+ xorl(r13, r14); // r13 = (reg_e>>25) ^ (reg_e>>11) ; S1
+ xorl(r15, reg_g); // r15 = reg_f^reg_g ; CH
+
+ rorxd(r14, reg_e, 6); // r14 = (reg_e >> 6) ; S1
+ andl(r15, reg_e); // r15 = (reg_f^reg_g)®_e ; CH
+
+ xorl(r13, r14); // r13 = (reg_e>>25) ^ (reg_e>>11) ^ (reg_e>>6) ; S1
+ rorxd(r14, reg_a, 22); // r14 = reg_a >> 22 ; S0A
+ addl(reg_d, reg_h); // reg_d = k + w + reg_h + reg_d ; --
+
+ andl(rcx, reg_b); // rcx = (reg_a|reg_c)®_b ; MAJA
+ xorl(r14, r12); // r14 = (reg_a>>22) ^ (reg_a>>13) ; S0
+
+ rorxd(r12, reg_a, 2); // r12 = (reg_a >> 2) ; S0
+ xorl(r15, reg_g); // r15 = CH = ((reg_f^reg_g)®_e)^reg_g ; CH
+
+ xorl(r14, r12); // r14 = (reg_a>>22) ^ (reg_a>>13) ^ (reg_a>>2) ; S0
+ movl(r12, reg_a); // r12 = reg_a ; MAJB
+ andl(r12, reg_c); // r12 = reg_a®_c ; MAJB
+ addl(r15, r13); // r15 = S1 + CH ; --
+
+ orl(rcx, r12); // rcx = MAJ = (reg_a|reg_c)®_b)|(reg_a®_c) ; MAJ
+ addl(reg_h, r14); // reg_h = k + w + reg_h + S0 ; --
+ addl(reg_d, r15); // reg_d = k + w + reg_h + reg_d + S1 + CH = reg_d + t1 ; --
+
+ addl(reg_h, r15); // reg_h = k + w + reg_h + S0 + S1 + CH = t1 + S0; --
+ addl(reg_h, rcx); // reg_h = t1 + S0 + MAJ ; --
+
+ if (iter%4 == 0) {
+ vpalignr(xmm0, xmm_3, xmm_2, 4, AVX_256bit); // ymm0 = W[-7]
+ vpaddd(xmm0, xmm0, xmm_0, AVX_256bit); // ymm0 = W[-7] + W[-16]; y1 = (e >> 6) ; S1
+ vpalignr(xmm1, xmm_1, xmm_0, 4, AVX_256bit); // ymm1 = W[-15]
+ vpsrld(xmm2, xmm1, 7, AVX_256bit);
+ vpslld(xmm3, xmm1, 32-7, AVX_256bit);
+ vpor(xmm3, xmm3, xmm2, AVX_256bit); // ymm3 = W[-15] ror 7
+ vpsrld(xmm2, xmm1,18, AVX_256bit);
+ } else if (iter%4 == 1 ) {
+ vpsrld(xmm8, xmm1, 3, AVX_256bit); // ymm8 = W[-15] >> 3
+ vpslld(xmm1, xmm1, 32-18, AVX_256bit);
+ vpxor(xmm3, xmm3, xmm1, AVX_256bit);
+ vpxor(xmm3, xmm3, xmm2, AVX_256bit); // ymm3 = W[-15] ror 7 ^ W[-15] ror 18
+ vpxor(xmm1, xmm3, xmm8, AVX_256bit); // ymm1 = s0
+ vpshufd(xmm2, xmm_3, 0xFA, AVX_256bit); // 11111010b ; ymm2 = W[-2] {BBAA}
+ vpaddd(xmm0, xmm0, xmm1, AVX_256bit); // ymm0 = W[-16] + W[-7] + s0
+ vpsrld(xmm8, xmm2, 10, AVX_256bit); // ymm8 = W[-2] >> 10 {BBAA}
+ } else if (iter%4 == 2) {
+ vpsrlq(xmm3, xmm2, 19, AVX_256bit); // ymm3 = W[-2] ror 19 {xBxA}
+ vpsrlq(xmm2, xmm2, 17, AVX_256bit); // ymm2 = W[-2] ror 17 {xBxA}
+ vpxor(xmm2, xmm2, xmm3, AVX_256bit);
+ vpxor(xmm8, xmm8, xmm2, AVX_256bit); // ymm8 = s1 {xBxA}
+ vpshufb(xmm8, xmm8, xmm10, AVX_256bit); // ymm8 = s1 {00BA}
+ vpaddd(xmm0, xmm0, xmm8, AVX_256bit); // ymm0 = {..., ..., W[1], W[0]}
+ vpshufd(xmm2, xmm0, 0x50, AVX_256bit); // 01010000b ; ymm2 = W[-2] {DDCC}
+ } else if (iter%4 == 3) {
+ vpsrld(xmm11, xmm2, 10, AVX_256bit); // ymm11 = W[-2] >> 10 {DDCC}
+ vpsrlq(xmm3, xmm2, 19, AVX_256bit); // ymm3 = W[-2] ror 19 {xDxC}
+ vpsrlq(xmm2, xmm2, 17, AVX_256bit); // ymm2 = W[-2] ror 17 {xDxC}
+ vpxor(xmm2, xmm2, xmm3, AVX_256bit);
+ vpxor(xmm11, xmm11, xmm2, AVX_256bit); // ymm11 = s1 {xDxC}
+ vpshufb(xmm11, xmm11, xmm12, AVX_256bit); // ymm11 = s1 {DC00}
+ vpaddd(xmm_0, xmm11, xmm0, AVX_256bit); // xmm_0 = {W[3], W[2], W[1], W[0]}
+ }
+}
+
+void MacroAssembler::addm(int disp, Register r1, Register r2) {
+ addl(r2, Address(r1, disp));
+ movl(Address(r1, disp), r2);
+}
+
+void MacroAssembler::sha256_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
+ XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
+ Register buf, Register state, Register ofs, Register limit, Register rsp,
+ bool multi_block, XMMRegister shuf_mask) {
+
+ Label loop0, loop1, loop2, loop3,
+ last_block_enter, do_last_block, only_one_block, done_hash,
+ compute_size, compute_size_end,
+ compute_size1, compute_size_end1;
+
+ address K256_W = StubRoutines::x86::k256_W_addr();
+ address pshuffle_byte_flip_mask = StubRoutines::x86::pshuffle_byte_flip_mask_addr();
+ address pshuffle_byte_flip_mask_addr = 0;
+
+const XMMRegister& SHUF_00BA = xmm10; // ymm10: shuffle xBxA -> 00BA
+const XMMRegister& SHUF_DC00 = xmm12; // ymm12: shuffle xDxC -> DC00
+const XMMRegister& BYTE_FLIP_MASK = xmm13; // ymm13
+
+const XMMRegister& X_BYTE_FLIP_MASK = xmm13; //XMM version of BYTE_FLIP_MASK
+
+const Register& NUM_BLKS = r8; // 3rd arg
+const Register& CTX = rdx; // 2nd arg
+const Register& INP = rcx; // 1st arg
+
+const Register& c = rdi;
+const Register& d = rsi;
+const Register& e = r8; // clobbers NUM_BLKS
+const Register& y3 = rcx; // clobbers INP
+
+const Register& TBL = rbp;
+const Register& SRND = CTX; // SRND is same register as CTX
+
+const Register& a = rax;
+const Register& b = rbx;
+const Register& f = r9;
+const Register& g = r10;
+const Register& h = r11;
+
+const Register& T1 = r12;
+const Register& y0 = r13;
+const Register& y1 = r14;
+const Register& y2 = r15;
+
+
+enum {
+ _XFER_SIZE = 2*64*4, // 2 blocks, 64 rounds, 4 bytes/round
+#ifndef _WIN64
+ _XMM_SAVE_SIZE = 0,
+#else
+ _XMM_SAVE_SIZE = 8*16,
+#endif
+ _INP_END_SIZE = 8,
+ _INP_SIZE = 8,
+ _CTX_SIZE = 8,
+ _RSP_SIZE = 8,
+
+ _XFER = 0,
+ _XMM_SAVE = _XFER + _XFER_SIZE,
+ _INP_END = _XMM_SAVE + _XMM_SAVE_SIZE,
+ _INP = _INP_END + _INP_END_SIZE,
+ _CTX = _INP + _INP_SIZE,
+ _RSP = _CTX + _CTX_SIZE,
+ STACK_SIZE = _RSP + _RSP_SIZE
+};
+
+#ifndef _WIN64
+ push(rcx); // linux: this is limit, need at the end
+ push(rdx); // linux: this is ofs
+#else
+ push(r8); // win64: this is ofs
+ push(r9); // win64: this is limit, we need them again at the very and
+#endif
+
+
+ push(rbx);
+#ifdef _WIN64
+ push(rsi);
+ push(rdi);
+#endif
+ push(rbp);
+ push(r12);
+ push(r13);
+ push(r14);
+ push(r15);
+
+ movq(rax, rsp);
+ subq(rsp, STACK_SIZE);
+ andq(rsp, -32);
+ movq(Address(rsp, _RSP), rax);
+
+#ifndef _WIN64
+ // copy linux params to win64 params, therefore the rest of code will be the same for both
+ movq(r9, rcx);
+ movq(r8, rdx);
+ movq(rdx, rsi);
+ movq(rcx, rdi);
+#endif
+
+ // setting original assembly ABI
+ /** message to encrypt in INP */
+ lea(INP, Address(rcx, 0)); // rcx == message (buf) ;; linux: INP = buf = rdi
+ /** digest in CTX */
+ movq(CTX, rdx); // rdx = digest (state) ;; linux: CTX = state = rsi
+
+ /** NUM_BLK is the length of message, need to set it from ofs and limit */
+ if (multi_block) {
+
+ // Win64: cannot directly update NUM_BLKS, since NUM_BLKS = ofs = r8
+ // on entry r8 = ofs
+ // on exit r8 = NUM_BLKS
+
+ xorq(rax, rax);
+
+ bind(compute_size);
+ cmpptr(r8, r9); // assume the original ofs <= limit ;; linux: cmp rcx, rdx
+ jccb(Assembler::aboveEqual, compute_size_end);
+ addq(r8, 64); //;; linux: ofs = rdx
+ addq(rax, 64);
+ jmpb(compute_size);
+
+ bind(compute_size_end);
+ movq(NUM_BLKS, rax); // NUM_BLK (r8) ;; linux: NUM_BLK = rdx
+
+ cmpq(NUM_BLKS, 0);
+ jcc(Assembler::equal, done_hash);
+
+ } else {
+ xorq(NUM_BLKS, NUM_BLKS);
+ addq(NUM_BLKS, 64);
+ }//if (!multi_block)
+
+ lea(NUM_BLKS, Address(INP, NUM_BLKS, Address::times_1, -64)); // pointer to the last block
+ movq(Address(rsp, _INP_END), NUM_BLKS); //
+
+ cmpptr(INP, NUM_BLKS); //cmp INP, NUM_BLKS
+ jcc(Assembler::equal, only_one_block); //je only_one_block
+
+ // load initial digest
+ movl(a, Address(CTX, 4*0));
+ movl(b, Address(CTX, 4*1));
+ movl(c, Address(CTX, 4*2));
+ movl(d, Address(CTX, 4*3));
+ movl(e, Address(CTX, 4*4));
+ movl(f, Address(CTX, 4*5));
+ movl(g, Address(CTX, 4*6));
+ movl(h, Address(CTX, 4*7));
+
+ pshuffle_byte_flip_mask_addr = pshuffle_byte_flip_mask;
+ vmovdqu(BYTE_FLIP_MASK, ExternalAddress(pshuffle_byte_flip_mask_addr +0)); //[PSHUFFLE_BYTE_FLIP_MASK wrt rip]
+ vmovdqu(SHUF_00BA, ExternalAddress(pshuffle_byte_flip_mask_addr + 32)); //[_SHUF_00BA wrt rip]
+ vmovdqu(SHUF_DC00, ExternalAddress(pshuffle_byte_flip_mask_addr + 64)); //[_SHUF_DC00 wrt rip]
+
+ movq(Address(rsp, _CTX), CTX); // store
+
+bind(loop0);
+ lea(TBL, ExternalAddress(K256_W));
+
+ // assume buffers not aligned
+
+ // Load first 16 dwords from two blocks
+ vmovdqu(xmm0, Address(INP, 0*32));
+ vmovdqu(xmm1, Address(INP, 1*32));
+ vmovdqu(xmm2, Address(INP, 2*32));
+ vmovdqu(xmm3, Address(INP, 3*32));
+
+ // byte swap data
+ vpshufb(xmm0, xmm0, BYTE_FLIP_MASK, AVX_256bit);
+ vpshufb(xmm1, xmm1, BYTE_FLIP_MASK, AVX_256bit);
+ vpshufb(xmm2, xmm2, BYTE_FLIP_MASK, AVX_256bit);
+ vpshufb(xmm3, xmm3, BYTE_FLIP_MASK, AVX_256bit);
+
+ // transpose data into high/low halves
+ vperm2i128(xmm4, xmm0, xmm2, 0x20);
+ vperm2i128(xmm5, xmm0, xmm2, 0x31);
+ vperm2i128(xmm6, xmm1, xmm3, 0x20);
+ vperm2i128(xmm7, xmm1, xmm3, 0x31);
+
+bind(last_block_enter);
+ addq(INP, 64);
+ movq(Address(rsp, _INP), INP);
+
+ //;; schedule 48 input dwords, by doing 3 rounds of 12 each
+ xorq(SRND, SRND);
+
+align(16);
+bind(loop1);
+ vpaddd(xmm9, xmm4, Address(TBL, SRND, Address::times_1, 0*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 0*32), xmm9);
+ sha256_AVX2_one_round_and_sched(xmm4, xmm5, xmm6, xmm7, rax, rbx, rdi, rsi, r8, r9, r10, r11, 0);
+ sha256_AVX2_one_round_and_sched(xmm4, xmm5, xmm6, xmm7, r11, rax, rbx, rdi, rsi, r8, r9, r10, 1);
+ sha256_AVX2_one_round_and_sched(xmm4, xmm5, xmm6, xmm7, r10, r11, rax, rbx, rdi, rsi, r8, r9, 2);
+ sha256_AVX2_one_round_and_sched(xmm4, xmm5, xmm6, xmm7, r9, r10, r11, rax, rbx, rdi, rsi, r8, 3);
+
+ vpaddd(xmm9, xmm5, Address(TBL, SRND, Address::times_1, 1*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 1*32), xmm9);
+ sha256_AVX2_one_round_and_sched(xmm5, xmm6, xmm7, xmm4, r8, r9, r10, r11, rax, rbx, rdi, rsi, 8+0);
+ sha256_AVX2_one_round_and_sched(xmm5, xmm6, xmm7, xmm4, rsi, r8, r9, r10, r11, rax, rbx, rdi, 8+1);
+ sha256_AVX2_one_round_and_sched(xmm5, xmm6, xmm7, xmm4, rdi, rsi, r8, r9, r10, r11, rax, rbx, 8+2);
+ sha256_AVX2_one_round_and_sched(xmm5, xmm6, xmm7, xmm4, rbx, rdi, rsi, r8, r9, r10, r11, rax, 8+3);
+
+ vpaddd(xmm9, xmm6, Address(TBL, SRND, Address::times_1, 2*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 2*32), xmm9);
+ sha256_AVX2_one_round_and_sched(xmm6, xmm7, xmm4, xmm5, rax, rbx, rdi, rsi, r8, r9, r10, r11, 16+0);
+ sha256_AVX2_one_round_and_sched(xmm6, xmm7, xmm4, xmm5, r11, rax, rbx, rdi, rsi, r8, r9, r10, 16+1);
+ sha256_AVX2_one_round_and_sched(xmm6, xmm7, xmm4, xmm5, r10, r11, rax, rbx, rdi, rsi, r8, r9, 16+2);
+ sha256_AVX2_one_round_and_sched(xmm6, xmm7, xmm4, xmm5, r9, r10, r11, rax, rbx, rdi, rsi, r8, 16+3);
+
+ vpaddd(xmm9, xmm7, Address(TBL, SRND, Address::times_1, 3*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 3*32), xmm9);
+
+ sha256_AVX2_one_round_and_sched(xmm7, xmm4, xmm5, xmm6, r8, r9, r10, r11, rax, rbx, rdi, rsi, 24+0);
+ sha256_AVX2_one_round_and_sched(xmm7, xmm4, xmm5, xmm6, rsi, r8, r9, r10, r11, rax, rbx, rdi, 24+1);
+ sha256_AVX2_one_round_and_sched(xmm7, xmm4, xmm5, xmm6, rdi, rsi, r8, r9, r10, r11, rax, rbx, 24+2);
+ sha256_AVX2_one_round_and_sched(xmm7, xmm4, xmm5, xmm6, rbx, rdi, rsi, r8, r9, r10, r11, rax, 24+3);
+
+ addq(SRND, 4*32);
+ cmpq(SRND, 3 * 4*32);
+ jcc(Assembler::below, loop1);
+
+bind(loop2);
+ // Do last 16 rounds with no scheduling
+ vpaddd(xmm9, xmm4, Address(TBL, SRND, Address::times_1, 0*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 0*32), xmm9);
+ sha256_AVX2_four_rounds_compute_first(0);
+
+ vpaddd(xmm9, xmm5, Address(TBL, SRND, Address::times_1, 1*32), AVX_256bit);
+ vmovdqu(Address(rsp, SRND, Address::times_1, _XFER + 1*32), xmm9);
+ sha256_AVX2_four_rounds_compute_last(0 + 8);
+
+ addq(SRND, 2*32);
+
+ vmovdqu(xmm4, xmm6);
+ vmovdqu(xmm5, xmm7);
+
+ cmpq(SRND, 4 * 4*32);
+ jcc(Assembler::below, loop2);
+
+ movq(CTX, Address(rsp, _CTX));
+ movq(INP, Address(rsp, _INP));
+
+ addm(4*0, CTX, a);
+ addm(4*1, CTX, b);
+ addm(4*2, CTX, c);
+ addm(4*3, CTX, d);
+ addm(4*4, CTX, e);
+ addm(4*5, CTX, f);
+ addm(4*6, CTX, g);
+ addm(4*7, CTX, h);
+
+ cmpq(INP, Address(rsp, _INP_END));
+ jcc(Assembler::above, done_hash);
+
+ //Do second block using previously scheduled results
+ xorq(SRND, SRND);
+align(16);
+bind(loop3);
+ sha256_AVX2_four_rounds_compute_first(4);
+ sha256_AVX2_four_rounds_compute_last(4+8);
+
+ addq(SRND, 2*32);
+ cmpq(SRND, 4 * 4*32);
+ jcc(Assembler::below, loop3);
+
+ movq(CTX, Address(rsp, _CTX));
+ movq(INP, Address(rsp, _INP));
+ addq(INP, 64);
+
+ addm(4*0, CTX, a);
+ addm(4*1, CTX, b);
+ addm(4*2, CTX, c);
+ addm(4*3, CTX, d);
+ addm(4*4, CTX, e);
+ addm(4*5, CTX, f);
+ addm(4*6, CTX, g);
+ addm(4*7, CTX, h);
+
+ cmpq(INP, Address(rsp, _INP_END));
+ jcc(Assembler::below, loop0);
+ jccb(Assembler::above, done_hash);
+
+bind(do_last_block);
+ lea(TBL, ExternalAddress(K256_W));
+
+ movdqu(xmm4, Address(INP, 0*16));
+ movdqu(xmm5, Address(INP, 1*16));
+ movdqu(xmm6, Address(INP, 2*16));
+ movdqu(xmm7, Address(INP, 3*16));
+
+ vpshufb(xmm4, xmm4, xmm13, AVX_128bit);
+ vpshufb(xmm5, xmm5, xmm13, AVX_128bit);
+ vpshufb(xmm6, xmm6, xmm13, AVX_128bit);
+ vpshufb(xmm7, xmm7, xmm13, AVX_128bit);
+
+ jmp(last_block_enter);
+
+bind(only_one_block);
+
+ // load initial digest ;; table should be preloaded with following values
+ movl(a, Address(CTX, 4*0)); // 0x6a09e667
+ movl(b, Address(CTX, 4*1)); // 0xbb67ae85
+ movl(c, Address(CTX, 4*2)); // 0x3c6ef372
+ movl(d, Address(CTX, 4*3)); // 0xa54ff53a
+ movl(e, Address(CTX, 4*4)); // 0x510e527f
+ movl(f, Address(CTX, 4*5)); // 0x9b05688c
+ movl(g, Address(CTX, 4*6)); // 0x1f83d9ab
+ movl(h, Address(CTX, 4*7)); // 0x5be0cd19
+
+
+ pshuffle_byte_flip_mask_addr = pshuffle_byte_flip_mask;
+ vmovdqu(BYTE_FLIP_MASK, ExternalAddress(pshuffle_byte_flip_mask_addr + 0)); //[PSHUFFLE_BYTE_FLIP_MASK wrt rip]
+ vmovdqu(SHUF_00BA, ExternalAddress(pshuffle_byte_flip_mask_addr + 32)); //[_SHUF_00BA wrt rip]
+ vmovdqu(SHUF_DC00, ExternalAddress(pshuffle_byte_flip_mask_addr + 64)); //[_SHUF_DC00 wrt rip]
+
+ movq(Address(rsp, _CTX), CTX);
+ jmpb(do_last_block);
+
+bind(done_hash);
+
+ movq(rsp, Address(rsp, _RSP));
+
+ pop(r15);
+ pop(r14);
+ pop(r13);
+ pop(r12);
+ pop(rbp);
+#ifdef _WIN64
+ pop(rdi);
+ pop(rsi);
+#endif
+ pop(rbx);
+
+#ifdef _WIN64
+ pop(r9);
+ pop(r8);
+#else
+ pop(rdx);
+ pop(rcx);
+#endif
+
+ if (multi_block) {
+#ifdef _WIN64
+const Register& limit_end = r9;
+const Register& ofs_end = r8;
+#else
+const Register& limit_end = rcx;
+const Register& ofs_end = rdx;
+#endif
+ movq(rax, ofs_end);
+
+bind(compute_size1);
+ cmpptr(rax, limit_end); // assume the original ofs <= limit
+ jccb(Assembler::aboveEqual, compute_size_end1);
+ addq(rax, 64);
+ jmpb(compute_size1);
+
+bind(compute_size_end1);
+ }
+}
+#endif //#ifdef _LP64
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_sin.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_sin.cpp
new file mode 100644
index 00000000000..68547eebfdd
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_sin.cpp
@@ -0,0 +1,2448 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "stubRoutines_x86.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - SIN()
+// ---------------------
+//
+// 1. RANGE REDUCTION
+//
+// We perform an initial range reduction from X to r with
+//
+// X =~= N * pi/32 + r
+//
+// so that |r| <= pi/64 + epsilon. We restrict inputs to those
+// where |N| <= 932560. Beyond this, the range reduction is
+// insufficiently accurate. For extremely small inputs,
+// denormalization can occur internally, impacting performance.
+// This means that the main path is actually only taken for
+// 2^-252 <= |X| < 90112.
+//
+// To avoid branches, we perform the range reduction to full
+// accuracy each time.
+//
+// X - N * (P_1 + P_2 + P_3)
+//
+// where P_1 and P_2 are 32-bit numbers (so multiplication by N
+// is exact) and P_3 is a 53-bit number. Together, these
+// approximate pi well enough for all cases in the restricted
+// range.
+//
+// The main reduction sequence is:
+//
+// y = 32/pi * x
+// N = integer(y)
+// (computed by adding and subtracting off SHIFTER)
+//
+// m_1 = N * P_1
+// m_2 = N * P_2
+// r_1 = x - m_1
+// r = r_1 - m_2
+// (this r can be used for most of the calculation)
+//
+// c_1 = r_1 - r
+// m_3 = N * P_3
+// c_2 = c_1 - m_2
+// c = c_2 - m_3
+//
+// 2. MAIN ALGORITHM
+//
+// The algorithm uses a table lookup based on B = M * pi / 32
+// where M = N mod 64. The stored values are:
+// sigma closest power of 2 to cos(B)
+// C_hl 53-bit cos(B) - sigma
+// S_hi + S_lo 2 * 53-bit sin(B)
+//
+// The computation is organized as follows:
+//
+// sin(B + r + c) = [sin(B) + sigma * r] +
+// r * (cos(B) - sigma) +
+// sin(B) * [cos(r + c) - 1] +
+// cos(B) * [sin(r + c) - r]
+//
+// which is approximately:
+//
+// [S_hi + sigma * r] +
+// C_hl * r +
+// S_lo + S_hi * [(cos(r) - 1) - r * c] +
+// (C_hl + sigma) * [(sin(r) - r) + c]
+//
+// and this is what is actually computed. We separate this sum
+// into four parts:
+//
+// hi + med + pols + corr
+//
+// where
+//
+// hi = S_hi + sigma r
+// med = C_hl * r
+// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
+// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
+//
+// 3. POLYNOMIAL
+//
+// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
+// (sin(r) - r) can be rearranged freely, since it is quite
+// small, so we exploit parallelism to the fullest.
+//
+// psc4 = SC_4 * r_1
+// msc4 = psc4 * r
+// r2 = r * r
+// msc2 = SC_2 * r2
+// r4 = r2 * r2
+// psc3 = SC_3 + msc4
+// psc1 = SC_1 + msc2
+// msc3 = r4 * psc3
+// sincospols = psc1 + msc3
+// pols = sincospols *
+//
+//
+// 4. CORRECTION TERM
+//
+// This is where the "c" component of the range reduction is
+// taken into account; recall that just "r" is used for most of
+// the calculation.
+//
+// -c = m_3 - c_2
+// -d = S_hi * r - (C_hl + sigma)
+// corr = -c * -d + S_lo
+//
+// 5. COMPENSATED SUMMATIONS
+//
+// The two successive compensated summations add up the high
+// and medium parts, leaving just the low parts to add up at
+// the end.
+//
+// rs = sigma * r
+// res_int = S_hi + rs
+// k_0 = S_hi - res_int
+// k_2 = k_0 + rs
+// med = C_hl * r
+// res_hi = res_int + med
+// k_1 = res_int - res_hi
+// k_3 = k_1 + med
+//
+// 6. FINAL SUMMATION
+//
+// We now add up all the small parts:
+//
+// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
+//
+// Now the overall result is just:
+//
+// res_hi + res_lo
+//
+// 7. SMALL ARGUMENTS
+//
+// If |x| < SNN (SNN meaning the smallest normal number), we
+// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
+// do 2^-55 * (2^55 * x - x).
+//
+// Special cases:
+// sin(NaN) = quiet NaN, and raise invalid exception
+// sin(INF) = NaN and raise invalid exception
+// sin(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint StubRoutines::x86::_ONEHALF[] =
+{
+ 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_P_2[] =
+{
+ 0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_SC_4[] =
+{
+ 0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_Ctable[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
+ 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
+ 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
+ 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
+ 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
+ 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
+ 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
+ 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
+ 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
+ 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
+ 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
+ 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
+ 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
+ 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
+ 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
+ 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
+ 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
+ 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
+ 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
+ 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
+ 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
+ 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
+ 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
+ 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
+ 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
+ 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
+ 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
+ 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
+ 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
+ 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
+ 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
+ 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
+ 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
+ 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
+ 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
+ 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
+ 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
+ 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
+ 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
+ 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
+ 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
+ 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
+ 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
+ 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
+ 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
+ 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
+ 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
+ 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
+ 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
+ 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
+ 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
+ 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
+ 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
+ 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
+ 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
+ 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
+ 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
+ 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
+ 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
+ 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
+ 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
+ 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
+ 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
+ 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
+ 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
+ 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
+ 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
+ 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
+ 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
+ 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
+ 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
+ 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
+ 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
+ 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
+ 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0x3ff00000UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_SC_2[] =
+{
+ 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_SC_3[] =
+{
+ 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_SC_1[] =
+{
+ 0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_PI_INV_TABLE[] =
+{
+ 0x00000000UL, 0x00000000UL, 0xa2f9836eUL, 0x4e441529UL, 0xfc2757d1UL,
+ 0xf534ddc0UL, 0xdb629599UL, 0x3c439041UL, 0xfe5163abUL, 0xdebbc561UL,
+ 0xb7246e3aUL, 0x424dd2e0UL, 0x06492eeaUL, 0x09d1921cUL, 0xfe1deb1cUL,
+ 0xb129a73eUL, 0xe88235f5UL, 0x2ebb4484UL, 0xe99c7026UL, 0xb45f7e41UL,
+ 0x3991d639UL, 0x835339f4UL, 0x9c845f8bUL, 0xbdf9283bUL, 0x1ff897ffUL,
+ 0xde05980fUL, 0xef2f118bUL, 0x5a0a6d1fUL, 0x6d367ecfUL, 0x27cb09b7UL,
+ 0x4f463f66UL, 0x9e5fea2dUL, 0x7527bac7UL, 0xebe5f17bUL, 0x3d0739f7UL,
+ 0x8a5292eaUL, 0x6bfb5fb1UL, 0x1f8d5d08UL, 0x56033046UL, 0xfc7b6babUL,
+ 0xf0cfbc21UL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_PI_4[] =
+{
+ 0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_PI32INV[] =
+{
+ 0x6dc9c883UL, 0x40245f30UL
+};
+
+ALIGNED_(8) juint _SHIFTER[] =
+{
+ 0x00000000UL, 0x43380000UL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_SIGN_MASK[] =
+{
+ 0x00000000UL, 0x80000000UL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_P_3[] =
+{
+ 0x2e037073UL, 0x3b63198aUL
+};
+
+ALIGNED_(8) juint _ALL_ONES[] =
+{
+ 0xffffffffUL, 0x3fefffffUL
+};
+
+ALIGNED_(8) juint _TWO_POW_55[] =
+{
+ 0x00000000UL, 0x43600000UL
+};
+
+ALIGNED_(8) juint _TWO_POW_M55[] =
+{
+ 0x00000000UL, 0x3c800000UL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_P_1[] =
+{
+ 0x54400000UL, 0x3fb921fbUL
+};
+
+ALIGNED_(8) juint StubRoutines::x86::_NEG_ZERO[] =
+{
+ 0x00000000UL, 0x80000000UL
+};
+
+void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register ecx, Register edx, Register tmp1, Register tmp2, Register tmp3, Register tmp4) {
+ Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
+ Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
+ Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
+ Label L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1;
+ Label L_2TAG_PACKET_12_0_1, B1_1, B1_2, B1_4, start;
+
+ assert_different_registers(tmp1, tmp2, tmp3, tmp4, eax, ebx, ecx, edx);
+ address ONEHALF = StubRoutines::x86::_ONEHALF_addr();
+ address P_2 = StubRoutines::x86::_P_2_addr();
+ address SC_4 = StubRoutines::x86::_SC_4_addr();
+ address Ctable = StubRoutines::x86::_Ctable_addr();
+ address SC_2 = StubRoutines::x86::_SC_2_addr();
+ address SC_3 = StubRoutines::x86::_SC_3_addr();
+ address SC_1 = StubRoutines::x86::_SC_1_addr();
+ address PI_INV_TABLE = StubRoutines::x86::_PI_INV_TABLE_addr();
+ address PI_4 = (address)StubRoutines::x86::_PI_4_addr();
+ address PI32INV = (address)StubRoutines::x86::_PI32INV_addr();
+ address SHIFTER = (address)_SHIFTER;
+ address SIGN_MASK = (address)StubRoutines::x86::_SIGN_MASK_addr();
+ address P_3 = (address)StubRoutines::x86::_P_3_addr();
+ address ALL_ONES = (address)_ALL_ONES;
+ address TWO_POW_55 = (address)_TWO_POW_55;
+ address TWO_POW_M55 = (address)_TWO_POW_M55;
+ address P_1 = (address)StubRoutines::x86::_P_1_addr();
+ address NEG_ZERO = (address)StubRoutines::x86::_NEG_ZERO_addr();
+
+ bind(start);
+ push(rbx);
+ subq(rsp, 16);
+ movsd(Address(rsp, 8), xmm0);
+ movl(eax, Address(rsp, 12));
+ movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
+ movq(xmm2, ExternalAddress(SHIFTER)); //0x00000000UL, 0x43380000UL
+ andl(eax, 2147418112);
+ subl(eax, 808452096);
+ cmpl(eax, 281346048);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
+ mulsd(xmm1, xmm0);
+ movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ cvttsd2sil(edx, xmm1);
+ cvtsi2sdl(xmm1, edx);
+ movdqu(xmm6, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
+ mov64(r8, 0x3fb921fb54400000);
+ movdq(xmm3, r8);
+ movdqu(xmm5, ExternalAddress(SC_4)); //0xa556c734UL, 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL
+ pshufd(xmm4, xmm0, 68);
+ mulsd(xmm3, xmm1);
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm1, xmm1);
+ }
+ else {
+ movlhps(xmm1, xmm1);
+ }
+ andl(edx, 63);
+ shll(edx, 5);
+ lea(rax, ExternalAddress(Ctable));
+ addq(rax, rdx);
+ mulpd(xmm6, xmm1);
+ mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
+ subsd(xmm4, xmm3);
+ movq(xmm7, Address(rax, 8));
+ subsd(xmm0, xmm3);
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm3, xmm4);
+ }
+ else {
+ movdqu(xmm3, xmm4);
+ movlhps(xmm3, xmm3);
+ }
+ subsd(xmm4, xmm6);
+ pshufd(xmm0, xmm0, 68);
+ movdqu(xmm2, Address(rax, 0));
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm6);
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm6);
+ movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
+ subsd(xmm1, xmm3);
+ movq(xmm3, Address(rax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
+ mulsd(xmm4, Address(rax, 0));
+ addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
+ mulpd(xmm5, xmm0);
+ movdqu(xmm0, xmm3);
+ addsd(xmm3, Address(rax, 8));
+ mulpd(xmm1, xmm7);
+ movdqu(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movq(xmm5, Address(rax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(rax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm5, xmm0);
+ addsd(xmm3, xmm7);
+ addsd(xmm1, xmm5);
+ addsd(xmm1, xmm3);
+ addsd(xmm1, xmm6);
+ unpckhpd(xmm6, xmm6);
+ movdqu(xmm0, xmm4);
+ addsd(xmm1, xmm6);
+ addsd(xmm0, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_0_0_1);
+ jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
+ shrl(eax, 20);
+ cmpl(eax, 3325);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_2_0_1);
+ mulsd(xmm0, ExternalAddress(ALL_ONES)); //0xffffffffUL, 0x3fefffffUL
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_2_0_1);
+ movq(xmm3, ExternalAddress(TWO_POW_55)); //0x00000000UL, 0x43600000UL
+ mulsd(xmm3, xmm0);
+ subsd(xmm3, xmm0);
+ mulsd(xmm3, ExternalAddress(TWO_POW_M55)); //0x00000000UL, 0x3c800000UL
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_1_0_1);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_3_0_1);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ subl(ecx, 16224);
+ shrl(ecx, 7);
+ andl(ecx, 65532);
+ lea(r11, ExternalAddress(PI_INV_TABLE));
+ addq(rcx, r11);
+ movdq(rax, xmm0);
+ movl(r10, Address(rcx, 20));
+ movl(r8, Address(rcx, 24));
+ movl(edx, eax);
+ shrq(rax, 21);
+ orl(eax, INT_MIN);
+ shrl(eax, 11);
+ movl(r9, r10);
+ imulq(r10, rdx);
+ imulq(r9, rax);
+ imulq(r8, rax);
+ movl(rsi, Address(rcx, 16));
+ movl(rdi, Address(rcx, 12));
+ movl(r11, r10);
+ shrq(r10, 32);
+ addq(r9, r10);
+ addq(r11, r8);
+ movl(r8, r11);
+ shrq(r11, 32);
+ addq(r9, r11);
+ movl(r10, rsi);
+ imulq(rsi, rdx);
+ imulq(r10, rax);
+ movl(r11, rdi);
+ imulq(rdi, rdx);
+ movl(ebx, rsi);
+ shrq(rsi, 32);
+ addq(r9, rbx);
+ movl(ebx, r9);
+ shrq(r9, 32);
+ addq(r10, rsi);
+ addq(r10, r9);
+ shlq(rbx, 32);
+ orq(r8, rbx);
+ imulq(r11, rax);
+ movl(r9, Address(rcx, 8));
+ movl(rsi, Address(rcx, 4));
+ movl(ebx, rdi);
+ shrq(rdi, 32);
+ addq(r10, rbx);
+ movl(ebx, r10);
+ shrq(r10, 32);
+ addq(r11, rdi);
+ addq(r11, r10);
+ movq(rdi, r9);
+ imulq(r9, rdx);
+ imulq(rdi, rax);
+ movl(r10, r9);
+ shrq(r9, 32);
+ addq(r11, r10);
+ movl(r10, r11);
+ shrq(r11, 32);
+ addq(rdi, r9);
+ addq(rdi, r11);
+ movq(r9, rsi);
+ imulq(rsi, rdx);
+ imulq(r9, rax);
+ shlq(r10, 32);
+ orq(r10, rbx);
+ movl(eax, Address(rcx, 0));
+ movl(r11, rsi);
+ shrq(rsi, 32);
+ addq(rdi, r11);
+ movl(r11, rdi);
+ shrq(rdi, 32);
+ addq(r9, rsi);
+ addq(r9, rdi);
+ imulq(rdx, rax);
+ pextrw(ebx, xmm0, 3);
+ lea(rdi, ExternalAddress(PI_INV_TABLE));
+ subq(rcx, rdi);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, 19);
+ movl(rsi, 32768);
+ andl(rsi, ebx);
+ shrl(ebx, 4);
+ andl(ebx, 2047);
+ subl(ebx, 1023);
+ subl(ecx, ebx);
+ addq(r9, rdx);
+ movl(edx, ecx);
+ addl(edx, 32);
+ cmpl(ecx, 1);
+ jcc(Assembler::less, L_2TAG_PACKET_4_0_1);
+ negl(ecx);
+ addl(ecx, 29);
+ shll(r9);
+ movl(rdi, r9);
+ andl(r9, 536870911);
+ testl(r9, 268435456);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_5_0_1);
+ shrl(r9);
+ movl(ebx, 0);
+ shlq(r9, 32);
+ orq(r9, r11);
+
+ bind(L_2TAG_PACKET_6_0_1);
+
+ bind(L_2TAG_PACKET_7_0_1);
+
+ cmpq(r9, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_8_0_1);
+
+ bind(L_2TAG_PACKET_9_0_1);
+ bsrq(r11, r9);
+ movl(ecx, 29);
+ subl(ecx, r11);
+ jcc(Assembler::lessEqual, L_2TAG_PACKET_10_0_1);
+ shlq(r9);
+ movq(rax, r10);
+ shlq(r10);
+ addl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shrq(rax);
+ shrq(r8);
+ orq(r9, rax);
+ orq(r10, r8);
+
+ bind(L_2TAG_PACKET_11_0_1);
+ cvtsi2sdq(xmm0, r9);
+ shrq(r10, 1);
+ cvtsi2sdq(xmm3, r10);
+ xorpd(xmm4, xmm4);
+ shll(edx, 4);
+ negl(edx);
+ addl(edx, 16368);
+ orl(edx, rsi);
+ xorl(edx, ebx);
+ pinsrw(xmm4, edx, 3);
+ movq(xmm2, ExternalAddress(PI_4)); //0x40000000UL, 0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
+ movq(xmm6, ExternalAddress(8 + PI_4)); //0x3fe921fbUL, 0x18469899UL, 0x3e64442dUL
+ xorpd(xmm5, xmm5);
+ subl(edx, 1008);
+ pinsrw(xmm5, edx, 3);
+ mulsd(xmm0, xmm4);
+ shll(rsi, 16);
+ sarl(rsi, 31);
+ mulsd(xmm3, xmm5);
+ movdqu(xmm1, xmm0);
+ mulsd(xmm0, xmm2);
+ shrl(rdi, 29);
+ addsd(xmm1, xmm3);
+ mulsd(xmm3, xmm2);
+ addl(rdi, rsi);
+ xorl(rdi, rsi);
+ mulsd(xmm6, xmm1);
+ movl(eax, rdi);
+ addsd(xmm6, xmm3);
+ movdqu(xmm2, xmm0);
+ addsd(xmm0, xmm6);
+ subsd(xmm2, xmm0);
+ addsd(xmm6, xmm2);
+
+ bind(L_2TAG_PACKET_12_0_1);
+ movq(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x40245f30UL
+ mulsd(xmm1, xmm0);
+ movq(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movq(xmm4, ExternalAddress(SIGN_MASK)); //0x00000000UL, 0x80000000UL
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ cvttsd2sil(edx, xmm1);
+ cvtsi2sdl(xmm1, edx);
+ movq(xmm3, ExternalAddress(P_1)); //0x54400000UL, 0x3fb921fbUL
+ movdqu(xmm2, ExternalAddress(P_2)); //0x1a600000UL, 0x3d90b461UL, 0x1a600000UL, 0x3d90b461UL
+ mulsd(xmm3, xmm1);
+ unpcklpd(xmm1, xmm1);
+ shll(eax, 3);
+ addl(edx, 1865216);
+ movdqu(xmm4, xmm0);
+ addl(edx, eax);
+ andl(edx, 63);
+ movdqu(xmm5, ExternalAddress(SC_4)); //0x54400000UL, 0x3fb921fbUL
+ lea(rax, ExternalAddress(Ctable));
+ shll(edx, 5);
+ addq(rax, rdx);
+ mulpd(xmm2, xmm1);
+ subsd(xmm0, xmm3);
+ mulsd(xmm1, ExternalAddress(P_3)); //0x2e037073UL, 0x3b63198aUL
+ subsd(xmm4, xmm3);
+ movq(xmm7, Address(rax, 8));
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm3, xmm4);
+ subsd(xmm4, xmm2);
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm2);
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm2);
+ movdqu(xmm2, Address(rax, 0));
+ subsd(xmm1, xmm3);
+ movq(xmm3, Address(rax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ subsd(xmm1, xmm6);
+ movdqu(xmm6, ExternalAddress(SC_2)); //0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, ExternalAddress(SC_3)); //0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL
+ mulsd(xmm4, Address(rax, 0));
+ addpd(xmm6, ExternalAddress(SC_1)); //0x55555555UL, 0xbfc55555UL, 0x00000000UL, 0xbfe00000UL
+ mulpd(xmm5, xmm0);
+ movdqu(xmm0, xmm3);
+ addsd(xmm3, Address(rax, 8));
+ mulpd(xmm1, xmm7);
+ movdqu(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movq(xmm5, Address(rax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(rax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm5, xmm0);
+ addsd(xmm3, xmm7);
+ addsd(xmm1, xmm5);
+ addsd(xmm1, xmm3);
+ addsd(xmm1, xmm6);
+ unpckhpd(xmm6, xmm6);
+ movdqu(xmm0, xmm4);
+ addsd(xmm1, xmm6);
+ addsd(xmm0, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_8_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ movl(r8, 0);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_9_0_1);
+ xorpd(xmm0, xmm0);
+ xorpd(xmm6, xmm6);
+ jmp(L_2TAG_PACKET_12_0_1);
+
+ bind(L_2TAG_PACKET_10_0_1);
+ jcc(Assembler::equal, L_2TAG_PACKET_11_0_1);
+ negl(ecx);
+ shrq(r10);
+ movq(rax, r9);
+ shrq(r9);
+ subl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shlq(rax);
+ orq(r10, rax);
+ jmp(L_2TAG_PACKET_11_0_1);
+
+ bind(L_2TAG_PACKET_4_0_1);
+ negl(ecx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(r9);
+ movq(rdi, r9);
+ testl(r9, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_13_0_1);
+ shrl(r9);
+ movl(ebx, 0);
+ shrq(rdi, 3);
+ jmp(L_2TAG_PACKET_7_0_1);
+
+ bind(L_2TAG_PACKET_5_0_1);
+ shrl(r9);
+ movl(ebx, 536870912);
+ shrl(ebx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(rbx, 32);
+ addl(rdi, 536870912);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(ebx, 32768);
+ jmp(L_2TAG_PACKET_6_0_1);
+
+ bind(L_2TAG_PACKET_13_0_1);
+ shrl(r9);
+ mov64(rbx, 0x100000000);
+ shrq(rbx);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(ebx, 32768);
+ shrq(rdi, 3);
+ addl(rdi, 536870912);
+ jmp(L_2TAG_PACKET_7_0_1);
+
+ bind(L_2TAG_PACKET_3_0_1);
+ movq(xmm0, Address(rsp, 8));
+ mulsd(xmm0, ExternalAddress(NEG_ZERO)); //0x00000000UL, 0x80000000UL
+ movq(Address(rsp, 0), xmm0);
+
+ bind(L_2TAG_PACKET_14_0_1);
+
+ bind(B1_4);
+ addq(rsp, 16);
+ pop(rbx);
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(8) juint _zero_none[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL
+};
+
+ALIGNED_(4) juint __4onpi_d[] =
+{
+ 0x6dc9c883UL, 0x3ff45f30UL
+};
+
+ALIGNED_(4) juint _TWO_32H[] =
+{
+ 0x00000000UL, 0x41f80000UL
+};
+
+ALIGNED_(4) juint _pi04_3d[] =
+{
+ 0x54442d00UL, 0x3fe921fbUL, 0x98cc5180UL, 0x3ce84698UL, 0xcbb5bf6cUL,
+ 0xb9dfc8f8UL
+};
+
+ALIGNED_(4) juint _pi04_5d[] =
+{
+ 0x54400000UL, 0x3fe921fbUL, 0x1a600000UL, 0x3dc0b461UL, 0x2e000000UL,
+ 0x3b93198aUL, 0x25200000UL, 0x396b839aUL, 0x533e63a0UL, 0x37027044UL
+};
+
+ALIGNED_(4) juint _SCALE[] =
+{
+ 0x00000000UL, 0x32600000UL
+};
+
+ALIGNED_(4) juint _zeros[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x80000000UL
+};
+
+ALIGNED_(4) juint _pi04_2d[] =
+{
+ 0x54400000UL, 0x3fe921fbUL, 0x1a626331UL, 0x3dc0b461UL
+};
+
+ALIGNED_(4) juint _TWO_12H[] =
+{
+ 0x00000000UL, 0x40b80000UL
+};
+
+ALIGNED_(2) jushort __4onpi_31l[] =
+{
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x836e, 0xa2f9,
+ 0x40d8, 0x0000, 0x0000, 0x0000, 0x2a50, 0x9c88, 0x40b7, 0x0000, 0x0000, 0x0000,
+ 0xabe8, 0xfe13, 0x4099, 0x0000, 0x0000, 0x0000, 0x6ee0, 0xfa9a, 0x4079, 0x0000,
+ 0x0000, 0x0000, 0x9580, 0xdb62, 0x4058, 0x0000, 0x0000, 0x0000, 0x1c82, 0xc9e2,
+ 0x403d, 0x0000, 0x0000, 0x0000, 0xb1c0, 0xff28, 0x4019, 0x0000, 0x0000, 0x0000,
+ 0xef14, 0xaf7a, 0x3ffe, 0x0000, 0x0000, 0x0000, 0x48dc, 0xc36e, 0x3fdf, 0x0000,
+ 0x0000, 0x0000, 0x3740, 0xe909, 0x3fbe, 0x0000, 0x0000, 0x0000, 0x924a, 0xb801,
+ 0x3fa2, 0x0000, 0x0000, 0x0000, 0x3a32, 0xdd41, 0x3f83, 0x0000, 0x0000, 0x0000,
+ 0x8778, 0x873f, 0x3f62, 0x0000, 0x0000, 0x0000, 0x1298, 0xb1cb, 0x3f44, 0x0000,
+ 0x0000, 0x0000, 0xa208, 0x9cfb, 0x3f26, 0x0000, 0x0000, 0x0000, 0xbaec, 0xd7d4,
+ 0x3f06, 0x0000, 0x0000, 0x0000, 0xd338, 0x8909, 0x3ee7, 0x0000, 0x0000, 0x0000,
+ 0x68b8, 0xe04d, 0x3ec7, 0x0000, 0x0000, 0x0000, 0x4e64, 0xdf90, 0x3eaa, 0x0000,
+ 0x0000, 0x0000, 0xc1a8, 0xeb1c, 0x3e89, 0x0000, 0x0000, 0x0000, 0x2720, 0xce7d,
+ 0x3e6a, 0x0000, 0x0000, 0x0000, 0x77b8, 0x8bf1, 0x3e4b, 0x0000, 0x0000, 0x0000,
+ 0xec7e, 0xe4a0, 0x3e2e, 0x0000, 0x0000, 0x0000, 0xffbc, 0xf12f, 0x3e0f, 0x0000,
+ 0x0000, 0x0000, 0xfdc0, 0xb301, 0x3deb, 0x0000, 0x0000, 0x0000, 0xc5ac, 0x9788,
+ 0x3dd1, 0x0000, 0x0000, 0x0000, 0x47da, 0x829b, 0x3db2, 0x0000, 0x0000, 0x0000,
+ 0xd9e4, 0xa6cf, 0x3d93, 0x0000, 0x0000, 0x0000, 0x36e8, 0xf961, 0x3d73, 0x0000,
+ 0x0000, 0x0000, 0xf668, 0xf463, 0x3d54, 0x0000, 0x0000, 0x0000, 0x5168, 0xf2ff,
+ 0x3d35, 0x0000, 0x0000, 0x0000, 0x758e, 0xea4f, 0x3d17, 0x0000, 0x0000, 0x0000,
+ 0xf17a, 0xebe5, 0x3cf8, 0x0000, 0x0000, 0x0000, 0x9cfa, 0x9e83, 0x3cd9, 0x0000,
+ 0x0000, 0x0000, 0xa4ba, 0xe294, 0x3cba, 0x0000, 0x0000, 0x0000, 0xd7ec, 0x9afe,
+ 0x3c9a, 0x0000, 0x0000, 0x0000, 0xae80, 0x8fc6, 0x3c79, 0x0000, 0x0000, 0x0000,
+ 0x3304, 0x8560, 0x3c5c, 0x0000, 0x0000, 0x0000, 0x6d70, 0xdf8f, 0x3c3b, 0x0000,
+ 0x0000, 0x0000, 0x3ef0, 0xafc3, 0x3c1e, 0x0000, 0x0000, 0x0000, 0xd0d8, 0x826b,
+ 0x3bfe, 0x0000, 0x0000, 0x0000, 0x1c80, 0xed4f, 0x3bdd, 0x0000, 0x0000, 0x0000,
+ 0x730c, 0xb0af, 0x3bc1, 0x0000, 0x0000, 0x0000, 0x6660, 0xc219, 0x3ba2, 0x0000,
+ 0x0000, 0x0000, 0x940c, 0xabe2, 0x3b83, 0x0000, 0x0000, 0x0000, 0xdffc, 0x8408,
+ 0x3b64, 0x0000, 0x0000, 0x0000, 0x6b98, 0xc402, 0x3b45, 0x0000, 0x0000, 0x0000,
+ 0x1818, 0x9cc4, 0x3b26, 0x0000, 0x0000, 0x0000, 0x5390, 0xaab6, 0x3b05, 0x0000,
+ 0x0000, 0x0000, 0xb070, 0xd464, 0x3ae9, 0x0000, 0x0000, 0x0000, 0x231a, 0x9ef0,
+ 0x3aca, 0x0000, 0x0000, 0x0000, 0x0670, 0xd1f1, 0x3aaa, 0x0000, 0x0000, 0x0000,
+ 0x7738, 0xd9f3, 0x3a8a, 0x0000, 0x0000, 0x0000, 0xa834, 0x8092, 0x3a6c, 0x0000,
+ 0x0000, 0x0000, 0xb45c, 0xce23, 0x3a4d, 0x0000, 0x0000, 0x0000, 0x36e8, 0xb0e5,
+ 0x3a2d, 0x0000, 0x0000, 0x0000, 0xd156, 0xaf44, 0x3a10, 0x0000, 0x0000, 0x0000,
+ 0x9f52, 0x8c82, 0x39f1, 0x0000, 0x0000, 0x0000, 0x829c, 0xff83, 0x39d1, 0x0000,
+ 0x0000, 0x0000, 0x7d06, 0xefc6, 0x39b3, 0x0000, 0x0000, 0x0000, 0x93e0, 0xb0b7,
+ 0x3992, 0x0000, 0x0000, 0x0000, 0xedde, 0xc193, 0x3975, 0x0000, 0x0000, 0x0000,
+ 0xbbc0, 0xcf49, 0x3952, 0x0000, 0x0000, 0x0000, 0xbdf0, 0xd63c, 0x3937, 0x0000,
+ 0x0000, 0x0000, 0x1f34, 0x9f3a, 0x3918, 0x0000, 0x0000, 0x0000, 0x3f8e, 0xe579,
+ 0x38f9, 0x0000, 0x0000, 0x0000, 0x90c8, 0xc3f8, 0x38d9, 0x0000, 0x0000, 0x0000,
+ 0x48c0, 0xf8f8, 0x38b7, 0x0000, 0x0000, 0x0000, 0xed56, 0xafa6, 0x389c, 0x0000,
+ 0x0000, 0x0000, 0x8218, 0xb969, 0x387d, 0x0000, 0x0000, 0x0000, 0x1852, 0xec57,
+ 0x385e, 0x0000, 0x0000, 0x0000, 0x670c, 0xd674, 0x383e, 0x0000, 0x0000, 0x0000,
+ 0xad40, 0xc2c4, 0x3820, 0x0000, 0x0000, 0x0000, 0x2e80, 0xa696, 0x3801, 0x0000,
+ 0x0000, 0x0000, 0xd800, 0xc467, 0x37dc, 0x0000, 0x0000, 0x0000, 0x3c72, 0xc5ae,
+ 0x37c3, 0x0000, 0x0000, 0x0000, 0xb006, 0xac69, 0x37a4, 0x0000, 0x0000, 0x0000,
+ 0x34a0, 0x8cdf, 0x3782, 0x0000, 0x0000, 0x0000, 0x9ed2, 0xd25e, 0x3766, 0x0000,
+ 0x0000, 0x0000, 0x6fec, 0xaaaa, 0x3747, 0x0000, 0x0000, 0x0000, 0x6040, 0xfb5c,
+ 0x3726, 0x0000, 0x0000, 0x0000, 0x764c, 0xa3fc, 0x3708, 0x0000, 0x0000, 0x0000,
+ 0xb254, 0x954e, 0x36e9, 0x0000, 0x0000, 0x0000, 0x3e1c, 0xf5dc, 0x36ca, 0x0000,
+ 0x0000, 0x0000, 0x7b06, 0xc635, 0x36ac, 0x0000, 0x0000, 0x0000, 0xa8ba, 0xd738,
+ 0x368d, 0x0000, 0x0000, 0x0000, 0x06cc, 0xb24e, 0x366d, 0x0000, 0x0000, 0x0000,
+ 0x7108, 0xac76, 0x364f, 0x0000, 0x0000, 0x0000, 0x2324, 0xa7cb, 0x3630, 0x0000,
+ 0x0000, 0x0000, 0xac40, 0xef15, 0x360f, 0x0000, 0x0000, 0x0000, 0xae46, 0xd516,
+ 0x35f2, 0x0000, 0x0000, 0x0000, 0x615e, 0xe003, 0x35d3, 0x0000, 0x0000, 0x0000,
+ 0x0cf0, 0xefe7, 0x35b1, 0x0000, 0x0000, 0x0000, 0xfb50, 0xf98c, 0x3595, 0x0000,
+ 0x0000, 0x0000, 0x0abc, 0xf333, 0x3575, 0x0000, 0x0000, 0x0000, 0xdd60, 0xca3f,
+ 0x3555, 0x0000, 0x0000, 0x0000, 0x7eb6, 0xd87f, 0x3538, 0x0000, 0x0000, 0x0000,
+ 0x44f4, 0xb291, 0x3519, 0x0000, 0x0000, 0x0000, 0xff80, 0xc982, 0x34f6, 0x0000,
+ 0x0000, 0x0000, 0x9de0, 0xd9b8, 0x34db, 0x0000, 0x0000, 0x0000, 0xcd42, 0x9366,
+ 0x34bc, 0x0000, 0x0000, 0x0000, 0xbef0, 0xfaee, 0x349d, 0x0000, 0x0000, 0x0000,
+ 0xdac4, 0xb6f1, 0x347d, 0x0000, 0x0000, 0x0000, 0xf140, 0x94de, 0x345d, 0x0000,
+ 0x0000, 0x0000, 0xa218, 0x8b4b, 0x343e, 0x0000, 0x0000, 0x0000, 0x6380, 0xa135,
+ 0x341e, 0x0000, 0x0000, 0x0000, 0xb184, 0x8cb2, 0x3402, 0x0000, 0x0000, 0x0000,
+ 0x196e, 0xdc61, 0x33e3, 0x0000, 0x0000, 0x0000, 0x0c00, 0xde05, 0x33c4, 0x0000,
+ 0x0000, 0x0000, 0xef9a, 0xbd38, 0x33a5, 0x0000, 0x0000, 0x0000, 0xc1a0, 0xdf00,
+ 0x3385, 0x0000, 0x0000, 0x0000, 0x1090, 0x9973, 0x3365, 0x0000, 0x0000, 0x0000,
+ 0x4882, 0x8301, 0x3348, 0x0000, 0x0000, 0x0000, 0x7abe, 0xadc7, 0x3329, 0x0000,
+ 0x0000, 0x0000, 0x7cba, 0xec2b, 0x330a, 0x0000, 0x0000, 0x0000, 0xa520, 0x8f21,
+ 0x32e9, 0x0000, 0x0000, 0x0000, 0x710c, 0x8d36, 0x32cc, 0x0000, 0x0000, 0x0000,
+ 0x5212, 0xc6ed, 0x32ad, 0x0000, 0x0000, 0x0000, 0x7308, 0xfd76, 0x328d, 0x0000,
+ 0x0000, 0x0000, 0x5014, 0xd548, 0x326f, 0x0000, 0x0000, 0x0000, 0xd3f2, 0xb499,
+ 0x3250, 0x0000, 0x0000, 0x0000, 0x7f74, 0xa606, 0x3230, 0x0000, 0x0000, 0x0000,
+ 0xf0a8, 0xd720, 0x3212, 0x0000, 0x0000, 0x0000, 0x185c, 0xe20f, 0x31f2, 0x0000,
+ 0x0000, 0x0000, 0xa5a8, 0x8738, 0x31d4, 0x0000, 0x0000, 0x0000, 0xdd74, 0xcafb,
+ 0x31b4, 0x0000, 0x0000, 0x0000, 0x98b6, 0xbd8e, 0x3196, 0x0000, 0x0000, 0x0000,
+ 0xe9de, 0x977f, 0x3177, 0x0000, 0x0000, 0x0000, 0x67c0, 0x818d, 0x3158, 0x0000,
+ 0x0000, 0x0000, 0xe52a, 0x9322, 0x3139, 0x0000, 0x0000, 0x0000, 0xe568, 0x9b6c,
+ 0x3119, 0x0000, 0x0000, 0x0000, 0x2358, 0xaa0a, 0x30fa, 0x0000, 0x0000, 0x0000,
+ 0xe480, 0xe13b, 0x30d9, 0x0000, 0x0000, 0x0000, 0x3024, 0x90a1, 0x30bd, 0x0000,
+ 0x0000, 0x0000, 0x9620, 0xda30, 0x309d, 0x0000, 0x0000, 0x0000, 0x898a, 0xb388,
+ 0x307f, 0x0000, 0x0000, 0x0000, 0xb24c, 0xc891, 0x3060, 0x0000, 0x0000, 0x0000,
+ 0x8056, 0xf98b, 0x3041, 0x0000, 0x0000, 0x0000, 0x72a4, 0xa1ea, 0x3021, 0x0000,
+ 0x0000, 0x0000, 0x6af8, 0x9488, 0x3001, 0x0000, 0x0000, 0x0000, 0xe00c, 0xdfcb,
+ 0x2fe4, 0x0000, 0x0000, 0x0000, 0xeeec, 0xc941, 0x2fc4, 0x0000, 0x0000, 0x0000,
+ 0x53e0, 0xe70f, 0x2fa4, 0x0000, 0x0000, 0x0000, 0x8f60, 0x9c07, 0x2f85, 0x0000,
+ 0x0000, 0x0000, 0xb328, 0xc3e7, 0x2f68, 0x0000, 0x0000, 0x0000, 0x9404, 0xf8c7,
+ 0x2f48, 0x0000, 0x0000, 0x0000, 0x38e0, 0xc99f, 0x2f29, 0x0000, 0x0000, 0x0000,
+ 0x9778, 0xd984, 0x2f09, 0x0000, 0x0000, 0x0000, 0xe700, 0xd142, 0x2eea, 0x0000,
+ 0x0000, 0x0000, 0xd904, 0x9443, 0x2ecd, 0x0000, 0x0000, 0x0000, 0xd4ba, 0xae7e,
+ 0x2eae, 0x0000, 0x0000, 0x0000, 0x8e5e, 0x8524, 0x2e8f, 0x0000, 0x0000, 0x0000,
+ 0xb550, 0xc9ed, 0x2e6e, 0x0000, 0x0000, 0x0000, 0x53b8, 0x8648, 0x2e51, 0x0000,
+ 0x0000, 0x0000, 0xdae4, 0x87f9, 0x2e32, 0x0000, 0x0000, 0x0000, 0x2942, 0xd966,
+ 0x2e13, 0x0000, 0x0000, 0x0000, 0x4f28, 0xcf3c, 0x2df3, 0x0000, 0x0000, 0x0000,
+ 0xfa40, 0xc4ef, 0x2dd1, 0x0000, 0x0000, 0x0000, 0x4424, 0xbca7, 0x2db5, 0x0000,
+ 0x0000, 0x0000, 0x2e62, 0xcdc5, 0x2d97, 0x0000, 0x0000, 0x0000, 0xed88, 0x996b,
+ 0x2d78, 0x0000, 0x0000, 0x0000, 0x7c30, 0xd97d, 0x2d56, 0x0000, 0x0000, 0x0000,
+ 0xed26, 0xbf6e, 0x2d3a, 0x0000, 0x0000, 0x0000, 0x2918, 0x921b, 0x2d1a, 0x0000,
+ 0x0000, 0x0000, 0x4e24, 0xe84e, 0x2cfb, 0x0000, 0x0000, 0x0000, 0x6dc0, 0x92ec,
+ 0x2cdd, 0x0000, 0x0000, 0x0000, 0x4f2c, 0xacf8, 0x2cbd, 0x0000, 0x0000, 0x0000,
+ 0xc634, 0xf094, 0x2c9e, 0x0000, 0x0000, 0x0000, 0xdc70, 0xe5d3, 0x2c7e, 0x0000,
+ 0x0000, 0x0000, 0x2180, 0xa600, 0x2c5b, 0x0000, 0x0000, 0x0000, 0x8480, 0xd680,
+ 0x2c3c, 0x0000, 0x0000, 0x0000, 0x8b24, 0xd63b, 0x2c22, 0x0000, 0x0000, 0x0000,
+ 0x02e0, 0xaa47, 0x2c00, 0x0000, 0x0000, 0x0000, 0x9ad0, 0xee84, 0x2be3, 0x0000,
+ 0x0000, 0x0000, 0xf7dc, 0xf699, 0x2bc6, 0x0000, 0x0000, 0x0000, 0xddde, 0xe490,
+ 0x2ba7, 0x0000, 0x0000, 0x0000, 0x34a0, 0xb4fd, 0x2b85, 0x0000, 0x0000, 0x0000,
+ 0x91b4, 0x8ef6, 0x2b68, 0x0000, 0x0000, 0x0000, 0xa3e0, 0xa2a7, 0x2b47, 0x0000,
+ 0x0000, 0x0000, 0xcce4, 0x82b3, 0x2b2a, 0x0000, 0x0000, 0x0000, 0xe4be, 0x8207,
+ 0x2b0c, 0x0000, 0x0000, 0x0000, 0x1d92, 0xab43, 0x2aed, 0x0000, 0x0000, 0x0000,
+ 0xe818, 0xf9f6, 0x2acd, 0x0000, 0x0000, 0x0000, 0xff12, 0xba80, 0x2aaf, 0x0000,
+ 0x0000, 0x0000, 0x5254, 0x8529, 0x2a90, 0x0000, 0x0000, 0x0000, 0x1b88, 0xe032,
+ 0x2a71, 0x0000, 0x0000, 0x0000, 0x3248, 0xd86d, 0x2a50, 0x0000, 0x0000, 0x0000,
+ 0x3140, 0xc9d5, 0x2a2e, 0x0000, 0x0000, 0x0000, 0x14e6, 0xbd47, 0x2a14, 0x0000,
+ 0x0000, 0x0000, 0x5c10, 0xe544, 0x29f4, 0x0000, 0x0000, 0x0000, 0x9f50, 0x90b6,
+ 0x29d4, 0x0000, 0x0000, 0x0000, 0x9850, 0xab55, 0x29b6, 0x0000, 0x0000, 0x0000,
+ 0x2750, 0x9d07, 0x2998, 0x0000, 0x0000, 0x0000, 0x6700, 0x8bbb, 0x2973, 0x0000,
+ 0x0000, 0x0000, 0x5dba, 0xed31, 0x295a, 0x0000, 0x0000, 0x0000, 0x61dc, 0x85fe,
+ 0x293a, 0x0000, 0x0000, 0x0000, 0x9ba2, 0xd6b4, 0x291c, 0x0000, 0x0000, 0x0000,
+ 0x2d30, 0xe3a5, 0x28fb, 0x0000, 0x0000, 0x0000, 0x6630, 0xb566, 0x28dd, 0x0000,
+ 0x0000, 0x0000, 0x5ad4, 0xa829, 0x28bf, 0x0000, 0x0000, 0x0000, 0x89d8, 0xe290,
+ 0x28a0, 0x0000, 0x0000, 0x0000, 0x3916, 0xc428, 0x2881, 0x0000, 0x0000, 0x0000,
+ 0x0490, 0xbea4, 0x2860, 0x0000, 0x0000, 0x0000, 0xee06, 0x80ee, 0x2843, 0x0000,
+ 0x0000, 0x0000, 0xfc00, 0xf327, 0x2820, 0x0000, 0x0000, 0x0000, 0xea40, 0xa871,
+ 0x2800, 0x0000, 0x0000, 0x0000, 0x63d8, 0x9c26, 0x27e4, 0x0000, 0x0000, 0x0000,
+ 0x07ba, 0xc0c9, 0x27c7, 0x0000, 0x0000, 0x0000, 0x3fa2, 0x9797, 0x27a8, 0x0000,
+ 0x0000, 0x0000, 0x21c6, 0xfeca, 0x2789, 0x0000, 0x0000, 0x0000, 0xde40, 0x860d,
+ 0x2768, 0x0000, 0x0000, 0x0000, 0x9cc8, 0x98ce, 0x2749, 0x0000, 0x0000, 0x0000,
+ 0x3778, 0xa31c, 0x272a, 0x0000, 0x0000, 0x0000, 0xe778, 0xf6e2, 0x270b, 0x0000,
+ 0x0000, 0x0000, 0x59b8, 0xf841, 0x26ed, 0x0000, 0x0000, 0x0000, 0x02e0, 0xad04,
+ 0x26cd, 0x0000, 0x0000, 0x0000, 0x5a92, 0x9380, 0x26b0, 0x0000, 0x0000, 0x0000,
+ 0xc740, 0x8886, 0x268d, 0x0000, 0x0000, 0x0000, 0x0680, 0xfaf8, 0x266c, 0x0000,
+ 0x0000, 0x0000, 0xfb60, 0x897f, 0x2653, 0x0000, 0x0000, 0x0000, 0x8760, 0xf903,
+ 0x2634, 0x0000, 0x0000, 0x0000, 0xad2a, 0xc2c8, 0x2615, 0x0000, 0x0000, 0x0000,
+ 0x2d86, 0x8aef, 0x25f6, 0x0000, 0x0000, 0x0000, 0x1ef4, 0xe627, 0x25d6, 0x0000,
+ 0x0000, 0x0000, 0x09e4, 0x8020, 0x25b7, 0x0000, 0x0000, 0x0000, 0x7548, 0xd227,
+ 0x2598, 0x0000, 0x0000, 0x0000, 0x75dc, 0xfb5b, 0x2579, 0x0000, 0x0000, 0x0000,
+ 0xea84, 0xc8b6, 0x255a, 0x0000, 0x0000, 0x0000, 0xe4d0, 0x8145, 0x253b, 0x0000,
+ 0x0000, 0x0000, 0x3640, 0x9768, 0x251c, 0x0000, 0x0000, 0x0000, 0x246a, 0xccec,
+ 0x24fe, 0x0000, 0x0000, 0x0000, 0x51d0, 0xa075, 0x24dd, 0x0000, 0x0000, 0x0000,
+ 0x4638, 0xa385, 0x24bf, 0x0000, 0x0000, 0x0000, 0xd788, 0xd776, 0x24a1, 0x0000,
+ 0x0000, 0x0000, 0x1370, 0x8997, 0x2482, 0x0000, 0x0000, 0x0000, 0x1e88, 0x9b67,
+ 0x2462, 0x0000, 0x0000, 0x0000, 0x6c08, 0xd975, 0x2444, 0x0000, 0x0000, 0x0000,
+ 0xfdb0, 0xcfc0, 0x2422, 0x0000, 0x0000, 0x0000, 0x3100, 0xc026, 0x2406, 0x0000,
+ 0x0000, 0x0000, 0xc5b4, 0xae64, 0x23e6, 0x0000, 0x0000, 0x0000, 0x2280, 0xf687,
+ 0x23c3, 0x0000, 0x0000, 0x0000, 0x2de0, 0x9006, 0x23a9, 0x0000, 0x0000, 0x0000,
+ 0x24bc, 0xf631, 0x238a, 0x0000, 0x0000, 0x0000, 0xb8d4, 0xa975, 0x236b, 0x0000,
+ 0x0000, 0x0000, 0xd9a4, 0xb949, 0x234b, 0x0000, 0x0000, 0x0000, 0xb54e, 0xbd39,
+ 0x232d, 0x0000, 0x0000, 0x0000, 0x4aac, 0x9a52, 0x230e, 0x0000, 0x0000, 0x0000,
+ 0xbbbc, 0xd085, 0x22ef, 0x0000, 0x0000, 0x0000, 0xdf18, 0xc633, 0x22cf, 0x0000,
+ 0x0000, 0x0000, 0x16d0, 0xeca5, 0x22af, 0x0000, 0x0000, 0x0000, 0xf2a0, 0xdf6f,
+ 0x228e, 0x0000, 0x0000, 0x0000, 0x8c44, 0xe86b, 0x2272, 0x0000, 0x0000, 0x0000,
+ 0x35c0, 0xbbf4, 0x2253, 0x0000, 0x0000, 0x0000, 0x0c40, 0xdafb, 0x2230, 0x0000,
+ 0x0000, 0x0000, 0x92dc, 0x9935, 0x2216, 0x0000, 0x0000, 0x0000, 0x0ca0, 0xbda6,
+ 0x21f3, 0x0000, 0x0000, 0x0000, 0x5958, 0xa6fd, 0x21d6, 0x0000, 0x0000, 0x0000,
+ 0xa3dc, 0x9d7f, 0x21b9, 0x0000, 0x0000, 0x0000, 0x79dc, 0xfcb5, 0x2199, 0x0000,
+ 0x0000, 0x0000, 0xf264, 0xcebb, 0x217b, 0x0000, 0x0000, 0x0000, 0x0abe, 0x8308,
+ 0x215c, 0x0000, 0x0000, 0x0000, 0x30ae, 0xb463, 0x213d, 0x0000, 0x0000, 0x0000,
+ 0x6228, 0xb040, 0x211c, 0x0000, 0x0000, 0x0000, 0xc9b2, 0xf43b, 0x20ff, 0x0000,
+ 0x0000, 0x0000, 0x3d8e, 0xa4b3, 0x20e0, 0x0000, 0x0000, 0x0000, 0x84e6, 0x8dab,
+ 0x20c1, 0x0000, 0x0000, 0x0000, 0xa124, 0x9b74, 0x20a1, 0x0000, 0x0000, 0x0000,
+ 0xc276, 0xd497, 0x2083, 0x0000, 0x0000, 0x0000, 0x6354, 0xa466, 0x2063, 0x0000,
+ 0x0000, 0x0000, 0x8654, 0xaf0a, 0x2044, 0x0000, 0x0000, 0x0000, 0x1d20, 0xfa5c,
+ 0x2024, 0x0000, 0x0000, 0x0000, 0xbcd0, 0xf3f0, 0x2004, 0x0000, 0x0000, 0x0000,
+ 0xedf0, 0xf0b6, 0x1fe7, 0x0000, 0x0000, 0x0000, 0x45bc, 0x9182, 0x1fc9, 0x0000,
+ 0x0000, 0x0000, 0xe254, 0xdc85, 0x1faa, 0x0000, 0x0000, 0x0000, 0xb898, 0xe9b1,
+ 0x1f8a, 0x0000, 0x0000, 0x0000, 0x0ebe, 0xe6f0, 0x1f6c, 0x0000, 0x0000, 0x0000,
+ 0xa9b8, 0xf584, 0x1f4c, 0x0000, 0x0000, 0x0000, 0x12e8, 0xdf6b, 0x1f2e, 0x0000,
+ 0x0000, 0x0000, 0x9f9e, 0xcd55, 0x1f0f, 0x0000, 0x0000, 0x0000, 0x05a0, 0xec3a,
+ 0x1eef, 0x0000, 0x0000, 0x0000, 0xd8e0, 0x96f8, 0x1ed1, 0x0000, 0x0000, 0x0000,
+ 0x3bd4, 0xccc6, 0x1eb1, 0x0000, 0x0000, 0x0000, 0x4910, 0xb87b, 0x1e93, 0x0000,
+ 0x0000, 0x0000, 0xbefc, 0xd40b, 0x1e73, 0x0000, 0x0000, 0x0000, 0x317e, 0xa406,
+ 0x1e55, 0x0000, 0x0000, 0x0000, 0x6bb2, 0xc2b2, 0x1e36, 0x0000, 0x0000, 0x0000,
+ 0xb87e, 0xbb78, 0x1e17, 0x0000, 0x0000, 0x0000, 0xa03c, 0xdbbd, 0x1df7, 0x0000,
+ 0x0000, 0x0000, 0x5b6c, 0xe3c8, 0x1dd9, 0x0000, 0x0000, 0x0000, 0x8968, 0xca8e,
+ 0x1dba, 0x0000, 0x0000, 0x0000, 0xc024, 0xe6ab, 0x1d9a, 0x0000, 0x0000, 0x0000,
+ 0x4110, 0xd4eb, 0x1d7a, 0x0000, 0x0000, 0x0000, 0xa168, 0xbdb5, 0x1d5d, 0x0000,
+ 0x0000, 0x0000, 0x012e, 0xa5fa, 0x1d3e, 0x0000, 0x0000, 0x0000, 0x6838, 0x9c1f,
+ 0x1d1e, 0x0000, 0x0000, 0x0000, 0xa158, 0xaa76, 0x1d00, 0x0000, 0x0000, 0x0000,
+ 0x090a, 0xbd95, 0x1ce1, 0x0000, 0x0000, 0x0000, 0xf73e, 0x8b6d, 0x1cc2, 0x0000,
+ 0x0000, 0x0000, 0x5fda, 0xbcbf, 0x1ca3, 0x0000, 0x0000, 0x0000, 0xdbe8, 0xb89f,
+ 0x1c84, 0x0000, 0x0000, 0x0000, 0x6e4c, 0x96c7, 0x1c64, 0x0000, 0x0000, 0x0000,
+ 0x19c2, 0xf2a4, 0x1c46, 0x0000, 0x0000, 0x0000, 0xb800, 0xf855, 0x1c1e, 0x0000,
+ 0x0000, 0x0000, 0x87fc, 0x85ff, 0x1c08, 0x0000, 0x0000, 0x0000, 0x1418, 0x839f,
+ 0x1be9, 0x0000, 0x0000, 0x0000, 0x6186, 0xd9d8, 0x1bca, 0x0000, 0x0000, 0x0000,
+ 0xf500, 0xabaa, 0x1ba6, 0x0000, 0x0000, 0x0000, 0x7b36, 0xdafe, 0x1b8c, 0x0000,
+ 0x0000, 0x0000, 0xf394, 0xe6d8, 0x1b6c, 0x0000, 0x0000, 0x0000, 0x6efc, 0x9e55,
+ 0x1b4e, 0x0000, 0x0000, 0x0000, 0x5e10, 0xc523, 0x1b2e, 0x0000, 0x0000, 0x0000,
+ 0x8210, 0xb6f9, 0x1b0d, 0x0000, 0x0000, 0x0000, 0x9ab0, 0x96e3, 0x1af1, 0x0000,
+ 0x0000, 0x0000, 0x3864, 0x92e7, 0x1ad1, 0x0000, 0x0000, 0x0000, 0x9878, 0xdc65,
+ 0x1ab1, 0x0000, 0x0000, 0x0000, 0xfa20, 0xd6cb, 0x1a94, 0x0000, 0x0000, 0x0000,
+ 0x6c00, 0xa4e4, 0x1a70, 0x0000, 0x0000, 0x0000, 0xab40, 0xb41b, 0x1a53, 0x0000,
+ 0x0000, 0x0000, 0x43a4, 0x8ede, 0x1a37, 0x0000, 0x0000, 0x0000, 0x22e0, 0x9314,
+ 0x1a15, 0x0000, 0x0000, 0x0000, 0x6170, 0xb949, 0x19f8, 0x0000, 0x0000, 0x0000,
+ 0x6b00, 0xe056, 0x19d8, 0x0000, 0x0000, 0x0000, 0x9ba8, 0xa94c, 0x19b9, 0x0000,
+ 0x0000, 0x0000, 0xfaa0, 0xaa16, 0x199b, 0x0000, 0x0000, 0x0000, 0x899a, 0xf627,
+ 0x197d, 0x0000, 0x0000, 0x0000, 0x9f20, 0xfb70, 0x195d, 0x0000, 0x0000, 0x0000,
+ 0xa4b8, 0xc176, 0x193e, 0x0000, 0x0000, 0x0000, 0xb21c, 0x85c3, 0x1920, 0x0000,
+ 0x0000, 0x0000, 0x50d2, 0x9b19, 0x1901, 0x0000, 0x0000, 0x0000, 0xd4b0, 0xb708,
+ 0x18e0, 0x0000, 0x0000, 0x0000, 0xfb88, 0xf510, 0x18c1, 0x0000, 0x0000, 0x0000,
+ 0x31ec, 0xdc8d, 0x18a3, 0x0000, 0x0000, 0x0000, 0x3c00, 0xbff9, 0x1885, 0x0000,
+ 0x0000, 0x0000, 0x5020, 0xc30b, 0x1862, 0x0000, 0x0000, 0x0000, 0xd4f0, 0xda0c,
+ 0x1844, 0x0000, 0x0000, 0x0000, 0x20d2, 0x99a5, 0x1828, 0x0000, 0x0000, 0x0000,
+ 0x852e, 0xd159, 0x1809, 0x0000, 0x0000, 0x0000, 0x7cd8, 0x97a1, 0x17e9, 0x0000,
+ 0x0000, 0x0000, 0x423a, 0x997b, 0x17cb, 0x0000, 0x0000, 0x0000, 0xc1c0, 0xbe7d,
+ 0x17a8, 0x0000, 0x0000, 0x0000, 0xe8bc, 0xdcdd, 0x178d, 0x0000, 0x0000, 0x0000,
+ 0x8b28, 0xae06, 0x176e, 0x0000, 0x0000, 0x0000, 0x102e, 0xb8d4, 0x174f, 0x0000,
+ 0x0000, 0x0000, 0xaa00, 0xaa5c, 0x172f, 0x0000, 0x0000, 0x0000, 0x51f0, 0x9fc0,
+ 0x170e, 0x0000, 0x0000, 0x0000, 0xf858, 0xe181, 0x16f2, 0x0000, 0x0000, 0x0000,
+ 0x91a8, 0x8162, 0x16d3, 0x0000, 0x0000, 0x0000, 0x5f40, 0xcb6f, 0x16b1, 0x0000,
+ 0x0000, 0x0000, 0xbb50, 0xe55f, 0x1693, 0x0000, 0x0000, 0x0000, 0xacd2, 0xd895,
+ 0x1676, 0x0000, 0x0000, 0x0000, 0xef30, 0x97bf, 0x1654, 0x0000, 0x0000, 0x0000,
+ 0xf700, 0xb3d7, 0x1633, 0x0000, 0x0000, 0x0000, 0x3454, 0xa7b5, 0x1619, 0x0000,
+ 0x0000, 0x0000, 0x6b00, 0xa929, 0x15f6, 0x0000, 0x0000, 0x0000, 0x9f04, 0x89f7,
+ 0x15db, 0x0000, 0x0000, 0x0000, 0xad78, 0xd985, 0x15bc, 0x0000, 0x0000, 0x0000,
+ 0xa46a, 0xae3f, 0x159d, 0x0000, 0x0000, 0x0000, 0x63a0, 0xd0da, 0x157c, 0x0000,
+ 0x0000, 0x0000, 0x5e90, 0x817d, 0x155e, 0x0000, 0x0000, 0x0000, 0x1494, 0xb13f,
+ 0x1540, 0x0000, 0x0000, 0x0000, 0x0090, 0x9c40, 0x1521, 0x0000, 0x0000, 0x0000,
+ 0xdd70, 0xcc86, 0x1500, 0x0000, 0x0000, 0x0000, 0x64f8, 0xdb6f, 0x14e1, 0x0000,
+ 0x0000, 0x0000, 0xe22c, 0xac17, 0x14c3, 0x0000, 0x0000, 0x0000, 0x60e0, 0xa9ad,
+ 0x14a3, 0x0000, 0x0000, 0x0000, 0x4640, 0xd658, 0x1481, 0x0000, 0x0000, 0x0000,
+ 0x6490, 0xa181, 0x1467, 0x0000, 0x0000, 0x0000, 0x1df4, 0xaaa2, 0x1447, 0x0000,
+ 0x0000, 0x0000, 0xb94a, 0x8f61, 0x1429, 0x0000, 0x0000, 0x0000, 0x5198, 0x9d83,
+ 0x1409, 0x0000, 0x0000, 0x0000, 0x0f7a, 0xa818, 0x13eb, 0x0000, 0x0000, 0x0000,
+ 0xc45e, 0xc06c, 0x13cc, 0x0000, 0x0000, 0x0000, 0x4ec0, 0xfa29, 0x13a8, 0x0000,
+ 0x0000, 0x0000, 0x6418, 0x8cad, 0x138c, 0x0000, 0x0000, 0x0000, 0xbcc8, 0xe7d1,
+ 0x136f, 0x0000, 0x0000, 0x0000, 0xc934, 0xf9b0, 0x134f, 0x0000, 0x0000, 0x0000,
+ 0x6ce0, 0x98df, 0x1331, 0x0000, 0x0000, 0x0000, 0x3516, 0xe5e9, 0x1312, 0x0000,
+ 0x0000, 0x0000, 0xc6c0, 0xef8b, 0x12ef, 0x0000, 0x0000, 0x0000, 0xaf02, 0x913d,
+ 0x12d4, 0x0000, 0x0000, 0x0000, 0xd230, 0xe1d5, 0x12b5, 0x0000, 0x0000, 0x0000,
+ 0xfba8, 0xc232, 0x1295, 0x0000, 0x0000, 0x0000, 0x7ba4, 0xabeb, 0x1277, 0x0000,
+ 0x0000, 0x0000, 0x6e5c, 0xc692, 0x1258, 0x0000, 0x0000, 0x0000, 0x76a2, 0x9756,
+ 0x1239, 0x0000, 0x0000, 0x0000, 0xe180, 0xe423, 0x1214, 0x0000, 0x0000, 0x0000,
+ 0x8c3c, 0x90f8, 0x11fb, 0x0000, 0x0000, 0x0000, 0x9f3c, 0x9fd2, 0x11dc, 0x0000,
+ 0x0000, 0x0000, 0x53e0, 0xb73e, 0x11bd, 0x0000, 0x0000, 0x0000, 0x45be, 0x88d6,
+ 0x119e, 0x0000, 0x0000, 0x0000, 0x111a, 0x8bc0, 0x117f, 0x0000, 0x0000, 0x0000,
+ 0xe26a, 0xd7ff, 0x1160, 0x0000, 0x0000, 0x0000, 0xfb60, 0xdd8d, 0x113f, 0x0000,
+ 0x0000, 0x0000, 0x9370, 0xc108, 0x1120, 0x0000, 0x0000, 0x0000, 0x9654, 0x8baf,
+ 0x1103, 0x0000, 0x0000, 0x0000, 0xd6ec, 0xd6b9, 0x10e4, 0x0000, 0x0000, 0x0000,
+ 0x23e4, 0xd7b7, 0x10c4, 0x0000, 0x0000, 0x0000, 0x1aa6, 0xa847, 0x10a6, 0x0000,
+ 0x0000, 0x0000, 0xbee6, 0x9fef, 0x1087, 0x0000, 0x0000, 0x0000, 0x26d0, 0xa6eb,
+ 0x1066, 0x0000, 0x0000, 0x0000, 0x5b86, 0xa880, 0x1049, 0x0000, 0x0000, 0x0000,
+ 0x125c, 0xd971, 0x1029, 0x0000, 0x0000, 0x0000, 0x1f78, 0x9d18, 0x100a, 0x0000,
+ 0x0000, 0x0000, 0x0e84, 0xb15b, 0x0feb, 0x0000, 0x0000, 0x0000, 0xd0c0, 0xc150,
+ 0x0fcc, 0x0000, 0x0000, 0x0000, 0xa330, 0xc40c, 0x0fad, 0x0000, 0x0000, 0x0000,
+ 0x5202, 0xfc2c, 0x0f8f, 0x0000, 0x0000, 0x0000, 0x3f7c, 0xecf5, 0x0f6f, 0x0000,
+ 0x0000, 0x0000, 0xef44, 0xfdfd, 0x0f50, 0x0000, 0x0000, 0x0000, 0x3f6c, 0xab1b,
+ 0x0f31, 0x0000, 0x0000, 0x0000, 0xf658, 0x89ec, 0x0f11, 0x0000, 0x0000, 0x0000,
+ 0xbfc8, 0x9ba8, 0x0ef4, 0x0000, 0x0000, 0x0000, 0x3d40, 0xbe21, 0x0ed5, 0x0000,
+ 0x0000, 0x0000, 0xbbc4, 0xc70d, 0x0eb6, 0x0000, 0x0000, 0x0000, 0x5158, 0xdb16,
+ 0x0e96, 0x0000, 0x0000, 0x0000, 0xb5a8, 0xa8d8, 0x0e78, 0x0000, 0x0000, 0x0000,
+ 0xcccc, 0xb40e, 0x0e58, 0x0000, 0x0000, 0x0000, 0x448c, 0xcb62, 0x0e3a, 0x0000,
+ 0x0000, 0x0000, 0xf12a, 0x8aed, 0x0e1b, 0x0000, 0x0000, 0x0000, 0x79d0, 0xc59c,
+ 0x0dfb, 0x0000, 0x0000, 0x0000, 0x06b4, 0xcdc9, 0x0ddd, 0x0000, 0x0000, 0x0000,
+ 0xae70, 0xa979, 0x0dbe, 0x0000, 0x0000, 0x0000, 0x317c, 0xa8fb, 0x0d9e, 0x0000,
+ 0x0000, 0x0000, 0x5fe0, 0x8a50, 0x0d7d, 0x0000, 0x0000, 0x0000, 0x70b6, 0xfdfa,
+ 0x0d61, 0x0000, 0x0000, 0x0000, 0x1640, 0x9dc7, 0x0d41, 0x0000, 0x0000, 0x0000,
+ 0x9a9c, 0xdc50, 0x0d23, 0x0000, 0x0000, 0x0000, 0x4fcc, 0x9a9b, 0x0d04, 0x0000,
+ 0x0000, 0x0000, 0x7e48, 0x8f77, 0x0ce5, 0x0000, 0x0000, 0x0000, 0x84e4, 0xd4b9,
+ 0x0cc6, 0x0000, 0x0000, 0x0000, 0x84e0, 0xbd10, 0x0ca6, 0x0000, 0x0000, 0x0000,
+ 0x1b0a, 0xc8d9, 0x0c88, 0x0000, 0x0000, 0x0000, 0x6a48, 0xfc81, 0x0c68, 0x0000,
+ 0x0000, 0x0000, 0x070a, 0xbef6, 0x0c4a, 0x0000, 0x0000, 0x0000, 0x8a70, 0xf096,
+ 0x0c2b, 0x0000, 0x0000, 0x0000, 0xecc2, 0xc994, 0x0c0c, 0x0000, 0x0000, 0x0000,
+ 0x1540, 0x9537, 0x0bea, 0x0000, 0x0000, 0x0000, 0x1b02, 0xab5b, 0x0bce, 0x0000,
+ 0x0000, 0x0000, 0x5dc0, 0xb0c8, 0x0bad, 0x0000, 0x0000, 0x0000, 0xc928, 0xe034,
+ 0x0b8f, 0x0000, 0x0000, 0x0000, 0x2d12, 0xb4b0, 0x0b71, 0x0000, 0x0000, 0x0000,
+ 0x8fc2, 0xbb94, 0x0b52, 0x0000, 0x0000, 0x0000, 0xe236, 0xe22f, 0x0b33, 0x0000,
+ 0x0000, 0x0000, 0xb97c, 0xbe9e, 0x0b13, 0x0000, 0x0000, 0x0000, 0xe1a6, 0xe16d,
+ 0x0af5, 0x0000, 0x0000, 0x0000, 0xd330, 0xbaf0, 0x0ad6, 0x0000, 0x0000, 0x0000,
+ 0xc0bc, 0xbbd0, 0x0ab7, 0x0000, 0x0000, 0x0000, 0x8e66, 0xdd9b, 0x0a98, 0x0000,
+ 0x0000, 0x0000, 0xc95c, 0xf799, 0x0a79, 0x0000, 0x0000, 0x0000, 0xdac0, 0xbe4c,
+ 0x0a55, 0x0000, 0x0000, 0x0000, 0xafc0, 0xc378, 0x0a37, 0x0000, 0x0000, 0x0000,
+ 0xa880, 0xe341, 0x0a19, 0x0000, 0x0000, 0x0000, 0xc242, 0x81f6, 0x09fd, 0x0000,
+ 0x0000, 0x0000, 0x7470, 0xc777, 0x09de, 0x0000, 0x0000, 0x0000, 0x62bc, 0xb684,
+ 0x09be, 0x0000, 0x0000, 0x0000, 0x43ac, 0x8c58, 0x099f, 0x0000, 0x0000, 0x0000,
+ 0xcc3c, 0xf9ac, 0x0981, 0x0000, 0x0000, 0x0000, 0x1526, 0xb670, 0x0962, 0x0000,
+ 0x0000, 0x0000, 0xc9fe, 0xdf50, 0x0943, 0x0000, 0x0000, 0x0000, 0x6ae6, 0xc065,
+ 0x0924, 0x0000, 0x0000, 0x0000, 0xb114, 0xcf29, 0x0905, 0x0000, 0x0000, 0x0000,
+ 0xd388, 0x922a, 0x08e4, 0x0000, 0x0000, 0x0000, 0xcf54, 0xb926, 0x08c7, 0x0000,
+ 0x0000, 0x0000, 0x3826, 0xe855, 0x08a8, 0x0000, 0x0000, 0x0000, 0xe7c8, 0x829b,
+ 0x0888, 0x0000, 0x0000, 0x0000, 0x546c, 0xa903, 0x086a, 0x0000, 0x0000, 0x0000,
+ 0x8768, 0x99cc, 0x0849, 0x0000, 0x0000, 0x0000, 0x00ac, 0xf529, 0x082b, 0x0000,
+ 0x0000, 0x0000, 0x2658, 0x9f0b, 0x080c, 0x0000, 0x0000, 0x0000, 0xfe5c, 0x9e21,
+ 0x07ee, 0x0000, 0x0000, 0x0000, 0x6da2, 0x9910, 0x07cf, 0x0000, 0x0000, 0x0000,
+ 0x9220, 0xf9b3, 0x07b0, 0x0000, 0x0000, 0x0000, 0x3d90, 0xa541, 0x0791, 0x0000,
+ 0x0000, 0x0000, 0x6e4c, 0xe7cc, 0x0771, 0x0000, 0x0000, 0x0000, 0xa8fa, 0xe80a,
+ 0x0753, 0x0000, 0x0000, 0x0000, 0x4e14, 0xc3a7, 0x0734, 0x0000, 0x0000, 0x0000,
+ 0xf7e0, 0xbad9, 0x0712, 0x0000, 0x0000, 0x0000, 0xfea0, 0xeff2, 0x06f5, 0x0000,
+ 0x0000, 0x0000, 0xcef6, 0xbd48, 0x06d7, 0x0000, 0x0000, 0x0000, 0x7544, 0xf559,
+ 0x06b7, 0x0000, 0x0000, 0x0000, 0x2388, 0xf655, 0x0698, 0x0000, 0x0000, 0x0000,
+ 0xe900, 0xad56, 0x0676, 0x0000, 0x0000, 0x0000, 0x2cc0, 0x8437, 0x0659, 0x0000,
+ 0x0000, 0x0000, 0x3068, 0xc544, 0x063b, 0x0000, 0x0000, 0x0000, 0xdc70, 0xe73c,
+ 0x061b, 0x0000, 0x0000, 0x0000, 0xee50, 0x9d49, 0x05fc, 0x0000, 0x0000, 0x0000,
+ 0x93d2, 0x81f6, 0x05df, 0x0000, 0x0000, 0x0000, 0x941c, 0xadff, 0x05bf, 0x0000,
+ 0x0000, 0x0000, 0x2ce2, 0x8e45, 0x05a1, 0x0000, 0x0000, 0x0000, 0x4a60, 0x95fd,
+ 0x0581, 0x0000, 0x0000, 0x0000, 0x79f8, 0xb83a, 0x0563, 0x0000, 0x0000, 0x0000,
+ 0xcb58, 0xa1f5, 0x0543, 0x0000, 0x0000, 0x0000, 0x2a3a, 0xdc36, 0x0525, 0x0000,
+ 0x0000, 0x0000, 0x14ee, 0x890e, 0x0506, 0x0000, 0x0000, 0x0000, 0x8f20, 0xc432,
+ 0x04e3, 0x0000, 0x0000, 0x0000, 0x8440, 0xb21d, 0x04c6, 0x0000, 0x0000, 0x0000,
+ 0x5430, 0xf698, 0x04a7, 0x0000, 0x0000, 0x0000, 0x04ae, 0x8b20, 0x048a, 0x0000,
+ 0x0000, 0x0000, 0x04d0, 0xe872, 0x046b, 0x0000, 0x0000, 0x0000, 0xc78e, 0x8893,
+ 0x044c, 0x0000, 0x0000, 0x0000, 0x0f78, 0x9895, 0x042b, 0x0000, 0x0000, 0x0000,
+ 0x11d4, 0xdf2e, 0x040d, 0x0000, 0x0000, 0x0000, 0xe84c, 0x89d5, 0x03ef, 0x0000,
+ 0x0000, 0x0000, 0xf7be, 0x8a67, 0x03d0, 0x0000, 0x0000, 0x0000, 0x95d0, 0xc906,
+ 0x03b1, 0x0000, 0x0000, 0x0000, 0x64ce, 0xd96c, 0x0392, 0x0000, 0x0000, 0x0000,
+ 0x97ba, 0xa16f, 0x0373, 0x0000, 0x0000, 0x0000, 0x463c, 0xc51a, 0x0354, 0x0000,
+ 0x0000, 0x0000, 0xef0a, 0xe93e, 0x0335, 0x0000, 0x0000, 0x0000, 0x526a, 0xa466,
+ 0x0316, 0x0000, 0x0000, 0x0000, 0x4140, 0xa94d, 0x02f5, 0x0000, 0x0000, 0x0000,
+ 0xb4ec, 0xce68, 0x02d8, 0x0000, 0x0000, 0x0000, 0x4fa2, 0x8490, 0x02b9, 0x0000,
+ 0x0000, 0x0000, 0x4e60, 0xca98, 0x0298, 0x0000, 0x0000, 0x0000, 0x08dc, 0xe09c,
+ 0x027a, 0x0000, 0x0000, 0x0000, 0x2b90, 0xc7e3, 0x025c, 0x0000, 0x0000, 0x0000,
+ 0x5a7c, 0xf8ef, 0x023c, 0x0000, 0x0000, 0x0000, 0x5022, 0x9d58, 0x021e, 0x0000,
+ 0x0000, 0x0000, 0x553a, 0xe242, 0x01ff, 0x0000, 0x0000, 0x0000, 0x7e6e, 0xb54d,
+ 0x01e0, 0x0000, 0x0000, 0x0000, 0xd2d4, 0xa88c, 0x01c1, 0x0000, 0x0000, 0x0000,
+ 0x75b6, 0xfe6d, 0x01a2, 0x0000, 0x0000, 0x0000, 0x3bb2, 0xf04c, 0x0183, 0x0000,
+ 0x0000, 0x0000, 0xc2d0, 0xc046, 0x0163, 0x0000, 0x0000, 0x0000, 0x250c, 0xf9d6,
+ 0x0145, 0x0000, 0x0000, 0x0000, 0xb7b4, 0x8a0d, 0x0126, 0x0000, 0x0000, 0x0000,
+ 0x1a72, 0xe4f5, 0x0107, 0x0000, 0x0000, 0x0000, 0x825c, 0xa9b8, 0x00e8, 0x0000,
+ 0x0000, 0x0000, 0x6c90, 0xc9ad, 0x00c6, 0x0000, 0x0000, 0x0000, 0x4d00, 0xd1bb,
+ 0x00aa, 0x0000, 0x0000, 0x0000, 0xa4a0, 0xee01, 0x0087, 0x0000, 0x0000, 0x0000,
+ 0x89a8, 0xbe9f, 0x006b, 0x0000, 0x0000, 0x0000, 0x038e, 0xc80c, 0x004d, 0x0000,
+ 0x0000, 0x0000, 0xfe26, 0x8384, 0x002e, 0x0000, 0x0000, 0x0000, 0xcd90, 0xca57,
+ 0x000e, 0x0000
+};
+
+void MacroAssembler::libm_reduce_pi04l(Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
+ Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
+ Label B1_13, B1_14, B1_15;
+
+ assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
+
+ address zero_none = (address)_zero_none;
+ address _4onpi_d = (address)__4onpi_d;
+ address TWO_32H = (address)_TWO_32H;
+ address pi04_3d = (address)_pi04_3d;
+ address pi04_5d = (address)_pi04_5d;
+ address SCALE = (address)_SCALE;
+ address zeros = (address)_zeros;
+ address pi04_2d = (address)_pi04_2d;
+ address TWO_12H = (address)_TWO_12H;
+ address _4onpi_31l = (address)__4onpi_31l;
+
+ bind(B1_1);
+ push(ebp);
+ movl(ebp, esp);
+ andl(esp, -16);
+ push(esi);
+ push(edi);
+ push(ebx);
+ subl(esp, 20);
+ movzwl(ebx, Address(ebp, 16));
+ andl(ebx, 32767);
+ movl(eax, Address(ebp, 20));
+ cmpl(ebx, 16413);
+ movl(esi, Address(ebp, 24));
+ movl(Address(esp, 4), eax);
+ jcc(Assembler::greaterEqual, B1_8);
+
+ bind(B1_2);
+ fld_x(Address(ebp, 8));
+ fld_d(ExternalAddress(_4onpi_d)); //0x6dc9c883UL, 0x3ff45f30UL
+ fmul(1);
+ fstp_x(Address(esp, 8));
+ movzwl(ecx, Address(esp, 16));
+ negl(ecx);
+ addl(ecx, 30);
+ movl(eax, Address(esp, 12));
+ shrl(eax);
+ cmpl(Address(esp, 4), 0);
+ jcc(Assembler::notEqual, B1_4);
+
+ bind(B1_3);
+ lea(ecx, Address(eax, 1));
+ andl(ecx, -2);
+ jmp(B1_5);
+
+ bind(B1_4);
+ movl(ecx, eax);
+ addl(eax, Address(esp, 4));
+ movl(edx, eax);
+ andl(edx, 1);
+ addl(ecx, edx);
+
+ bind(B1_5);
+ fld_d(ExternalAddress(TWO_32H)); //0x00000000UL, 0x41f80000UL
+ cmpl(ebx, 16400);
+ movl(Address(esp, 0), ecx);
+ fild_s(Address(esp, 0));
+ jcc(Assembler::greaterEqual, B1_7);
+
+ bind(B1_6);
+ fld_d(ExternalAddress(pi04_3d)); //0x54442d00UL, 0x3fe921fbUL
+ fmul(1);
+ fsubp(3);
+ fxch(1);
+ fmul(2);
+ fld_s(2);
+ fadd(1);
+ fsubrp(1);
+ fld_s(0);
+ fxch(1);
+ fsuba(3);
+ fld_d(ExternalAddress(8 + pi04_3d)); //0x98cc5180UL, 0x3ce84698UL
+ fmul(3);
+ fsuba(2);
+ fxch(1);
+ fsub(2);
+ fsubrp(1);
+ faddp(3);
+ fld_d(ExternalAddress(16 + pi04_3d)); //0xcbb5bf6cUL, 0xb9dfc8f8UL
+ fmulp(2);
+ fld_s(1);
+ fsubr(1);
+ fsuba(1);
+ fxch(2);
+ fsubp(1);
+ faddp(2);
+ fxch(1);
+ jmp(B1_15);
+
+ bind(B1_7);
+ fld_d(ExternalAddress(pi04_5d)); //0x54400000UL, 0x3fe921fbUL
+ fmul(1);
+ fsubp(3);
+ fxch(1);
+ fmul(2);
+ fld_s(2);
+ fadd(1);
+ fsubrp(1);
+ fld_s(0);
+ fxch(1);
+ fsuba(3);
+ fld_d(ExternalAddress(8 + pi04_5d)); //0x1a600000UL, 0x3dc0b461UL
+ fmul(3);
+ fsuba(2);
+ fxch(1);
+ fsub(2);
+ fsubrp(1);
+ faddp(3);
+ fld_d(ExternalAddress(16 + pi04_5d)); //0x2e000000UL, 0x3b93198aUL
+ fmul(2);
+ fld_s(0);
+ fsubr(2);
+ fsuba(2);
+ fxch(1);
+ fsubp(2);
+ fxch(1);
+ faddp(3);
+ fld_d(ExternalAddress(24 + pi04_5d)); //0x25200000UL, 0x396b839aUL
+ fmul(2);
+ fld_s(0);
+ fsubr(2);
+ fsuba(2);
+ fxch(1);
+ fsubp(2);
+ fxch(1);
+ faddp(3);
+ fld_d(ExternalAddress(32 + pi04_5d)); //0x533e63a0UL, 0x37027044UL
+ fmulp(2);
+ fld_s(1);
+ fsubr(1);
+ fsuba(1);
+ fxch(2);
+ fsubp(1);
+ faddp(2);
+ fxch(1);
+ jmp(B1_15);
+
+ bind(B1_8);
+ fld_x(Address(ebp, 8));
+ addl(ebx, -16417);
+ fmul_d(as_Address(ExternalAddress(SCALE))); //0x00000000UL, 0x32600000UL
+ movl(eax, -2078209981);
+ imull(ebx);
+ addl(edx, ebx);
+ movl(ecx, ebx);
+ sarl(edx, 4);
+ sarl(ecx, 31);
+ subl(edx, ecx);
+ movl(eax, edx);
+ shll(eax, 5);
+ fstp_x(Address(ebp, 8));
+ fld_x(Address(ebp, 8));
+ subl(eax, edx);
+ movl(Address(ebp, 8), 0);
+ subl(ebx, eax);
+ fld_x(Address(ebp, 8));
+ cmpl(ebx, 17);
+ fsuba(1);
+ jcc(Assembler::less, B1_10);
+
+ bind(B1_9);
+ lea(eax, Address(noreg, edx, Address::times_8));
+ lea(ecx, Address(eax, edx, Address::times_4));
+ incl(edx);
+ fld_x(Address(_4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmul(2);
+ fld_x(Address(12 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmul(2);
+ fld_s(0);
+ fadd(2);
+ fsuba(2);
+ fxch(1);
+ faddp(2);
+ fld_s(1);
+ fadd(1);
+ fstp_x(Address(esp, 8));
+ andl(Address(esp, 8), -16777216);
+ fld_x(Address(esp, 8));
+ fsubp(1);
+ jmp(B1_11);
+
+ bind(B1_10);
+ fld_d(ExternalAddress(zeros)); //0x00000000UL, 0x00000000UL
+ fld_s(0);
+
+ bind(B1_11);
+ fld_s(0);
+ lea(eax, Address(noreg, edx, Address::times_8));
+ fld_s(3);
+ lea(edx, Address(eax, edx, Address::times_4));
+ fld_x(Address(_4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
+ fmul(6);
+ movl(Address(esp, 0), edx);
+ fadda(2);
+ fxch(2);
+ fsuba(3);
+ fxch(2);
+ faddp(3);
+ fxch(2);
+ faddp(3);
+ fld_x(Address(12 + _4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
+ fmula(2);
+ fld_s(2);
+ fadd(2);
+ fld_s(0);
+ fxch(1);
+ fsubra(3);
+ fxch(3);
+ fchs();
+ faddp(4);
+ fxch(3);
+ faddp(4);
+ fxch(2);
+ fadd(3);
+ fxch(2);
+ fmul(5);
+ fadda(2);
+ fld_s(4);
+ fld_x(Address(24 + _4onpi_31l, RelocationHolder::none).plus_disp(edx, Address::times_1));
+ fmula(1);
+ fxch(1);
+ fadda(4);
+ fxch(4);
+ fstp_x(Address(esp, 8));
+ movzwl(ebx, Address(esp, 16));
+ andl(ebx, 32767);
+ cmpl(ebx, 16415);
+ jcc(Assembler::greaterEqual, B1_13);
+
+ bind(B1_12);
+ negl(ebx);
+ addl(ebx, 30);
+ movl(ecx, ebx);
+ movl(eax, Address(esp, 12));
+ shrl(eax);
+ shll(eax);
+ movl(Address(esp, 12), eax);
+ movl(Address(esp, 8), 0);
+ shrl(eax);
+ jmp(B1_14);
+
+ bind(B1_13);
+ negl(ebx);
+ addl(ebx, 30);
+ movl(ecx, ebx);
+ movl(edx, Address(esp, 8));
+ shrl(edx);
+ shll(edx);
+ negl(ecx);
+ movl(eax, Address(esp, 12));
+ shll(eax);
+ movl(ecx, ebx);
+ movl(Address(esp, 8), edx);
+ shrl(edx);
+ orl(eax, edx);
+
+ bind(B1_14);
+ fld_x(Address(esp, 8));
+ addl(eax, Address(esp, 4));
+ fsubp(3);
+ fmul(6);
+ fld_s(4);
+ movl(edx, eax);
+ andl(edx, 1);
+ fadd(3);
+ movl(ecx, Address(esp, 0));
+ fsuba(3);
+ fxch(3);
+ faddp(5);
+ fld_s(1);
+ fxch(3);
+ fadd_d(Address(zero_none, RelocationHolder::none).plus_disp(edx, Address::times_8));
+ fadda(3);
+ fsub(3);
+ faddp(2);
+ fxch(1);
+ faddp(4);
+ fld_s(2);
+ fadd(2);
+ fsuba(2);
+ fxch(3);
+ faddp(2);
+ fxch(1);
+ faddp(3);
+ fld_s(0);
+ fadd(2);
+ fsuba(2);
+ fxch(1);
+ faddp(2);
+ fxch(1);
+ faddp(2);
+ fld_s(2);
+ fld_x(Address(36 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmula(1);
+ fld_s(1);
+ fadd(3);
+ fsuba(3);
+ fxch(2);
+ faddp(3);
+ fxch(2);
+ faddp(3);
+ fxch(1);
+ fmul(4);
+ fld_s(0);
+ fadd(2);
+ fsuba(2);
+ fxch(1);
+ faddp(2);
+ fxch(1);
+ faddp(2);
+ fld_s(2);
+ fld_x(Address(48 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmula(1);
+ fld_s(1);
+ fadd(3);
+ fsuba(3);
+ fxch(2);
+ faddp(3);
+ fxch(2);
+ faddp(3);
+ fld_s(3);
+ fxch(2);
+ fmul(5);
+ fld_x(Address(60 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmula(3);
+ fxch(3);
+ faddp(1);
+ fld_s(0);
+ fadd(2);
+ fsuba(2);
+ fxch(1);
+ faddp(2);
+ fxch(1);
+ faddp(3);
+ fld_s(3);
+ fxch(2);
+ fmul(5);
+ fld_x(Address(72 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmula(3);
+ fxch(3);
+ faddp(1);
+ fld_s(0);
+ fadd(2);
+ fsuba(2);
+ fxch(1);
+ faddp(2);
+ fxch(1);
+ faddp(3);
+ fxch(1);
+ fmulp(4);
+ fld_x(Address(84 + _4onpi_31l, RelocationHolder::none).plus_disp(ecx, Address::times_1));
+ fmulp(3);
+ fxch(2);
+ faddp(3);
+ fld_s(2);
+ fadd(2);
+ fld_d(ExternalAddress(TWO_32H)); //0x00000000UL, 0x41f80000UL
+ fmul(1);
+ fadda(1);
+ fsubp(1);
+ fsuba(2);
+ fxch(3);
+ faddp(2);
+ faddp(1);
+ fld_d(ExternalAddress(pi04_2d)); //0x54400000UL, 0x3fe921fbUL
+ fld_s(0);
+ fmul(2);
+ fxch(2);
+ fadd(3);
+ fxch(1);
+ fmulp(3);
+ fmul_d(as_Address(ExternalAddress(8 + pi04_2d))); //0x1a626331UL, 0x3dc0b461UL
+ faddp(1);
+
+ bind(B1_15);
+ fld_d(ExternalAddress(TWO_12H)); //0x00000000UL, 0x40b80000UL
+ fld_s(2);
+ fadd(2);
+ fmula(1);
+ fstp_x(Address(esp, 8));
+ fld_x(Address(esp, 8));
+ fadd(1);
+ fsubrp(1);
+ fst_d(Address(esi, 0));
+ fsubp(2);
+ faddp(1);
+ fstp_d(Address(esi, 8));
+ addl(esp, 20);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+}
+
+ALIGNED_(16) juint StubRoutines::x86::_L_2il0floatpacket_0[] =
+{
+ 0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_Pi4Inv[] =
+{
+ 0x6dc9c883UL, 0x3ff45f30UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_Pi4x3[] =
+{
+ 0x54443000UL, 0xbfe921fbUL, 0x3b39a000UL, 0x3d373dcbUL, 0xe0e68948UL,
+ 0xba845c06UL
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_Pi4x4[] =
+{
+ 0x54400000UL, 0xbfe921fbUL, 0x1a600000UL, 0xbdc0b461UL, 0x2e000000UL,
+ 0xbb93198aUL, 0x252049c1UL, 0xb96b839aUL
+};
+
+ALIGNED_(16) jushort _SP[] =
+{
+ 0xaaab, 0xaaaa, 0xaaaa, 0xaaaa, 0xbffc, 0x0000, 0x8887, 0x8888, 0x8888, 0x8888,
+ 0x3ff8, 0x0000, 0xc527, 0x0d00, 0x00d0, 0xd00d, 0xbff2, 0x0000, 0x45f6, 0xb616,
+ 0x1d2a, 0xb8ef, 0x3fec, 0x0000, 0x825b, 0x3997, 0x2b3f, 0xd732, 0xbfe5, 0x0000,
+ 0xbf33, 0x8bb4, 0x2fda, 0xb092, 0x3fde, 0x0000, 0x44a6, 0xed1a, 0x29ef, 0xd73e,
+ 0xbfd6, 0x0000, 0x8610, 0x307f, 0x62a1, 0xc921, 0x3fce, 0x0000
+};
+
+ALIGNED_(16) jushort _CP[] =
+{
+ 0x0000, 0x0000, 0x0000, 0x8000, 0xbffe, 0x0000, 0xaaa5, 0xaaaa, 0xaaaa, 0xaaaa,
+ 0x3ffa, 0x0000, 0x9c2f, 0x0b60, 0x60b6, 0xb60b, 0xbff5, 0x0000, 0xf024, 0x0cac,
+ 0x00d0, 0xd00d, 0x3fef, 0x0000, 0x03fe, 0x3f65, 0x7dbb, 0x93f2, 0xbfe9, 0x0000,
+ 0xd84d, 0xadee, 0xc698, 0x8f76, 0x3fe2, 0x0000, 0xdaba, 0xfe79, 0xea36, 0xc9c9,
+ 0xbfda, 0x0000, 0x3ac6, 0x0ba0, 0x07ce, 0xd585, 0x3fd2, 0x0000
+};
+
+ALIGNED_(16) juint StubRoutines::x86::_ones[] =
+{
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xbff00000UL
+};
+
+void MacroAssembler::libm_sincos_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
+ Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
+ Label B1_13, B1_14, B1_15, B1_16, B1_17, B1_18, B1_19, B1_20, B1_21, B1_22, B1_23;
+ Label B1_24, B1_25, B1_26, B1_27, B1_28, B1_29, B1_30, B1_31, B1_32, B1_33, B1_34;
+ Label B1_35, B1_36, B1_37, B1_38, B1_39, B1_40, B1_41, B1_42, B1_43, B1_44, B1_45, B1_46;
+
+ assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
+
+ address L_2il0floatpacket_0 = StubRoutines::x86::_L_2il0floatpacket_0_addr();
+ address Pi4Inv = StubRoutines::x86::_Pi4Inv_addr();
+ address Pi4x3 = StubRoutines::x86::_Pi4x3_addr();
+ address Pi4x4 = StubRoutines::x86::_Pi4x4_addr();
+ address ones = StubRoutines::x86::_ones_addr();
+ address CP = (address)_CP;
+ address SP = (address)_SP;
+
+ bind(B1_1);
+ push(ebp);
+ movl(ebp, esp);
+ andl(esp, -64);
+ push(esi);
+ push(edi);
+ push(ebx);
+ subl(esp, 52);
+ movl(eax, Address(ebp, 16));
+ movl(edx, Address(ebp, 20));
+ movl(Address(esp, 32), eax);
+ movl(Address(esp, 36), edx);
+
+ bind(B1_2);
+ fnstcw(Address(esp, 30));
+
+ bind(B1_3);
+ movsd(xmm1, Address(ebp, 8));
+ movl(esi, Address(ebp, 12));
+ movl(eax, esi);
+ andl(eax, 2147483647);
+ andps(xmm1, ExternalAddress(L_2il0floatpacket_0)); //0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
+ shrl(esi, 31);
+ movl(Address(esp, 40), eax);
+ cmpl(eax, 1104150528);
+ movsd(Address(ebp, 8), xmm1);
+ jcc(Assembler::aboveEqual, B1_11);
+
+ bind(B1_4);
+ movsd(xmm0, ExternalAddress(Pi4Inv)); //0x6dc9c883UL, 0x3ff45f30UL
+ mulsd(xmm0, xmm1);
+ movzwl(edx, Address(esp, 30));
+ movl(eax, edx);
+ andl(eax, 768);
+ movsd(Address(esp, 0), xmm0);
+ cmpl(eax, 768);
+ jcc(Assembler::equal, B1_42);
+
+ bind(B1_5);
+ orl(edx, -64768);
+ movw(Address(esp, 28), edx);
+
+ bind(B1_6);
+ fldcw(Address(esp, 28));
+
+ bind(B1_7);
+ movsd(xmm1, Address(ebp, 8));
+ movl(ebx, 1);
+
+ bind(B1_8);
+ movl(Address(esp, 12), ebx);
+ movl(ebx, Address(esp, 4));
+ movl(eax, ebx);
+ movl(Address(esp, 8), esi);
+ movl(esi, ebx);
+ shrl(esi, 20);
+ andl(eax, 1048575);
+ movl(ecx, esi);
+ orl(eax, 1048576);
+ negl(ecx);
+ movl(edx, eax);
+ addl(ecx, 19);
+ addl(esi, 13);
+ movl(Address(esp, 24), ecx);
+ shrl(edx);
+ movl(ecx, esi);
+ shll(eax);
+ movl(ecx, Address(esp, 24));
+ movl(esi, Address(esp, 0));
+ shrl(esi);
+ orl(eax, esi);
+ cmpl(ebx, 1094713344);
+ movsd(Address(esp, 16), xmm1);
+ fld_d(Address(esp, 16));
+ cmov32(Assembler::below, eax, edx);
+ movl(esi, Address(esp, 8));
+ lea(edx, Address(eax, 1));
+ movl(ebx, edx);
+ andl(ebx, -2);
+ movl(Address(esp, 16), ebx);
+ fild_s(Address(esp, 16));
+ movl(ebx, Address(esp, 12));
+ cmpl(Address(esp, 40), 1094713344);
+ jcc(Assembler::aboveEqual, B1_10);
+
+ bind(B1_9);
+ fld_d(ExternalAddress(Pi4x3)); //0x54443000UL, 0xbfe921fbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(8 + Pi4x3)); //0x3b39a000UL, 0x3d373dcbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(16 + Pi4x3)); //0xe0e68948UL, 0xba845c06UL
+ fmulp(1);
+ faddp(1);
+ jmp(B1_17);
+
+ bind(B1_10);
+ fld_d(ExternalAddress(Pi4x4)); //0x54400000UL, 0xbfe921fbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(8 + Pi4x4)); //0x1a600000UL, 0xbdc0b461UL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(16 + Pi4x4)); //0x2e000000UL, 0xbb93198aUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(24 + Pi4x4)); //0x252049c1UL, 0xb96b839aUL
+ fmulp(1);
+ faddp(1);
+ jmp(B1_17);
+
+ bind(B1_11);
+ movzwl(edx, Address(esp, 30));
+ movl(eax, edx);
+ andl(eax, 768);
+ cmpl(eax, 768);
+ jcc(Assembler::equal, B1_43);
+ bind(B1_12);
+ orl(edx, -64768);
+ movw(Address(esp, 28), edx);
+
+ bind(B1_13);
+ fldcw(Address(esp, 28));
+
+ bind(B1_14);
+ movsd(xmm1, Address(ebp, 8));
+ movl(ebx, 1);
+
+ bind(B1_15);
+ movsd(Address(esp, 16), xmm1);
+ fld_d(Address(esp, 16));
+ addl(esp, -32);
+ lea(eax, Address(esp, 32));
+ fstp_x(Address(esp, 0));
+ movl(Address(esp, 12), 0);
+ movl(Address(esp, 16), eax);
+ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_reduce_pi04l())));
+
+ bind(B1_46);
+ addl(esp, 32);
+
+ bind(B1_16);
+ fld_d(Address(esp, 0));
+ lea(edx, Address(eax, 1));
+ fld_d(Address(esp, 8));
+ faddp(1);
+
+ bind(B1_17);
+ movl(ecx, edx);
+ addl(eax, 3);
+ shrl(ecx, 2);
+ andl(ecx, 1);
+ shrl(eax, 2);
+ xorl(esi, ecx);
+ movl(ecx, Address(esp, 36));
+ andl(eax, 1);
+ andl(ecx, 3);
+ cmpl(ecx, 3);
+ jcc(Assembler::notEqual, B1_25);
+
+ bind(B1_18);
+ fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
+ fld_s(1);
+ fmul((2));
+ testb(edx, 2);
+ fmula((1));
+ fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(2);
+ fmula(1);
+ fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
+ fmul(1);
+ fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(62 + CP)); //0xd84d, 0xadee, 0xc6
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
+ faddp(1);
+ fmulp(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(esi, Address::times_8));
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ jcc(Assembler::equal, B1_22);
+
+ bind(B1_19);
+ fmulp(4);
+ testl(ebx, ebx);
+ fxch(2);
+ fmul(3);
+ movl(eax, Address(esp, 2));
+ faddp(3);
+ fxch(2);
+ fstp_d(Address(eax, 0));
+ fmula(1);
+ faddp(1);
+ fstp_d(Address(eax, 8));
+ jcc(Assembler::equal, B1_21);
+
+ bind(B1_20);
+ fldcw(Address(esp, 30));
+
+ bind(B1_21);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_22);
+ fxch(1);
+ fmulp(4);
+ testl(ebx, ebx);
+ fxch(2);
+ fmul(3);
+ movl(eax, Address(esp, 32));
+ faddp(3);
+ fxch(2);
+ fstp_d(Address(eax, 8));
+ fmula(1);
+ faddp(1);
+ fstp_d(Address(eax, 0));
+ jcc(Assembler::equal, B1_24);
+
+ bind(B1_23);
+ fldcw(Address(esp, 30));
+
+ bind(B1_24);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_25);
+ testb(Address(esp, 36), 2);
+ jcc(Assembler::equal, B1_33);
+
+ bind(B1_26);
+ fld_s(0);
+ testb(edx, 2);
+ fmul(1);
+ fld_s(0);
+ fmul(1);
+ jcc(Assembler::equal, B1_30);
+
+ bind(B1_27);
+ fstp_d(2);
+ fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
+ testl(ebx, ebx);
+ fmul(2);
+ fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
+ fmul(3);
+ fld_x(ExternalAddress(60 + CP)); //0xd84d, 0xadee, 0xc6
+ movl(eax, Address(rsp, 32));
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
+ faddp(2);
+ fxch(1);
+ fmulp(3);
+ fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
+ faddp(1);
+ fmulp(1);
+ faddp(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(rsi, Address::times_8));
+ fmula(1);
+ faddp(1);
+ fstp_d(Address(eax, 8));
+ jcc(Assembler::equal, B1_29);
+
+ bind(B1_28);
+ fldcw(Address(esp, 30));
+
+ bind(B1_29);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_30);
+ fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
+ testl(ebx, ebx);
+ fmul(1);
+ fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
+ fmul(2);
+ fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
+ movl(eax, Address(rsp, 32));
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
+ faddp(2);
+ fxch(1);
+ fmulp(2);
+ fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(1);
+ fmulp(2);
+ faddp(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(rsi, Address::times_8));
+ fmulp(2);
+ fmul(1);
+ faddp(1);
+ fstp_d(Address(eax, 8));
+ jcc(Assembler::equal, B1_32);
+
+ bind(B1_31);
+ fldcw(Address(esp, 30));
+
+ bind(B1_32);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_33);
+ testb(Address(esp, 36), 1);
+ jcc(Assembler::equal, B1_41);
+
+ bind(B1_34);
+ fld_s(0);
+ testb(edx, 2);
+ fmul(1);
+ fld_s(0);
+ fmul(1);
+ jcc(Assembler::equal, B1_38);
+
+ bind(B1_35);
+ fld_x(ExternalAddress(84 + SP)); //0x8610, 0x307f, 0x62
+ testl(ebx, ebx);
+ fmul(1);
+ fld_x(ExternalAddress(72 + SP)); //0x44a6, 0xed1a, 0x29
+ fmul(2);
+ fld_x(ExternalAddress(60 + SP)); //0xbf33, 0x8bb4, 0x2f
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(48 + SP)); //0x825b, 0x3997, 0x2b
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(36 + SP)); //0x45f6, 0xb616, 0x1d
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(24 + SP)); //0xc527, 0x0d00, 0x00
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(12 + SP)); //0x8887, 0x8888, 0x88
+ faddp(2);
+ fxch(1);
+ fmulp(2);
+ fld_x(ExternalAddress(SP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(1);
+ fmulp(2);
+ faddp(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmulp(2);
+ fmul(1);
+ movl(eax, Address(esp, 32));
+ faddp(1);
+ fstp_d(Address(eax, 0));
+ jcc(Assembler::equal, B1_37);
+
+ bind(B1_36);
+ fldcw(Address(esp, 30));
+
+ bind(B1_37);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_38);
+ fstp_d(2);
+ fld_x(ExternalAddress(84 + CP)); //0x3ac6, 0x0ba0, 0x07
+ testl(ebx, ebx);
+ fmul(2);
+ fld_x(ExternalAddress(72 + CP)); //0xdaba, 0xfe79, 0xea
+ fmul(3);
+ fld_x(ExternalAddress(60 + CP)); //0xd84d, 0xadee, 0xc6
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(48 + CP)); //0x03fe, 0x3f65, 0x7d
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(36 + CP)); //0xf024, 0x0cac, 0x00
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(24 + CP)); //0x9c2f, 0x0b60, 0x60
+ faddp(2);
+ fxch(1);
+ fmul(3);
+ fld_x(ExternalAddress(12 + CP)); //0xaaa5, 0xaaaa, 0xaa
+ faddp(2);
+ fxch(1);
+ fmulp(3);
+ fld_x(ExternalAddress(CP)); //0x0000, 0x0000, 0x00
+ faddp(1);
+ fmulp(1);
+ faddp(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(1);
+ movl(eax, Address(esp, 32));
+ faddp(1);
+ fstp_d(Address(eax, 0));
+ jcc(Assembler::equal, B1_40);
+
+ bind(B1_39);
+ fldcw(Address(esp, 30));
+ bind(B1_40);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+ bind(B1_41);
+ fstp_d(0);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+ bind(B1_42);
+ xorl(ebx, ebx);
+ jmp(B1_8);
+ bind(B1_43);
+ xorl(ebx, ebx);
+ jmp(B1_15);
+}
+
+ALIGNED_(16) juint _static_const_table_sin[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL, 0xbf73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL,
+ 0xc0000000UL, 0xbc626d19UL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL,
+ 0xbfa60beaUL, 0x2ed59f06UL, 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL,
+ 0x00000000UL, 0x3ff00000UL, 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL,
+ 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL, 0x00000000UL, 0x3ff00000UL,
+ 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL, 0x20000000UL,
+ 0x3c5e0d89UL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL, 0xbfc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0x3ff00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL,
+ 0x20000000UL, 0x3c68076aUL, 0x00000000UL, 0x3ff00000UL, 0x99fcef32UL,
+ 0x3fca8279UL, 0x667f3bcdUL, 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL,
+ 0x00000000UL, 0x3fe00000UL, 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL,
+ 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL, 0x00000000UL, 0x3fe00000UL,
+ 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL, 0xe0000000UL,
+ 0x3c39f630UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL, 0xbf9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0x3fe00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0x3fed906bUL,
+ 0x20000000UL, 0x3c7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x76acf82dUL,
+ 0x3fa4a031UL, 0x56c62ddaUL, 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL,
+ 0x00000000UL, 0x3fd00000UL, 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL,
+ 0x3fef6297UL, 0x20000000UL, 0x3c756217UL, 0x00000000UL, 0x3fd00000UL,
+ 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL, 0x3fefd88dUL, 0x40000000UL,
+ 0xbc887df6UL, 0x00000000UL, 0x3fc00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0x3fefd88dUL,
+ 0x40000000UL, 0xbc887df6UL, 0x00000000UL, 0xbfc00000UL, 0x0e5967d5UL,
+ 0x3fac1d1fUL, 0xcff75cb0UL, 0x3fef6297UL, 0x20000000UL, 0x3c756217UL,
+ 0x00000000UL, 0xbfd00000UL, 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL,
+ 0x3fee9f41UL, 0xe0000000UL, 0x3c8760b1UL, 0x00000000UL, 0xbfd00000UL,
+ 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL, 0x3fed906bUL, 0x20000000UL,
+ 0x3c7457e6UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL, 0x3f9d4a2cUL,
+ 0xf180bdb1UL, 0x3fec38b2UL, 0x80000000UL, 0xbc76e0b1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0x3fea9b66UL,
+ 0xe0000000UL, 0x3c39f630UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL,
+ 0xbfc133ccUL, 0x6b151741UL, 0x3fe8bc80UL, 0x20000000UL, 0xbc82c5e1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL,
+ 0x3fe6a09eUL, 0x20000000UL, 0xbc8bdd34UL, 0x00000000UL, 0xbfe00000UL,
+ 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL, 0x3fe44cf3UL, 0x20000000UL,
+ 0x3c68076aUL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL, 0x3fc59267UL,
+ 0x39ae68c8UL, 0x3fe1c73bUL, 0x20000000UL, 0x3c8b25ddUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0x3fde2b5dUL,
+ 0x20000000UL, 0x3c5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL,
+ 0x3fb37ca1UL, 0xa6aea963UL, 0x3fd87de2UL, 0xe0000000UL, 0xbc672cedUL,
+ 0x00000000UL, 0xbff00000UL, 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL,
+ 0x3fd29406UL, 0xa0000000UL, 0xbc75d28dUL, 0x00000000UL, 0xbff00000UL,
+ 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL, 0x3fc8f8b8UL, 0xc0000000UL,
+ 0xbc626d19UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL, 0x3f73b92eUL,
+ 0xbc29b42cUL, 0x3fb917a6UL, 0xe0000000UL, 0xbc3e2718UL, 0x00000000UL,
+ 0xbff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x176d6d31UL,
+ 0x3f73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0xbff00000UL, 0x011469fbUL, 0x3f93ad06UL, 0x3c69a60bUL,
+ 0xbfc8f8b8UL, 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0xbff00000UL,
+ 0x939d225aUL, 0x3fa60beaUL, 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL,
+ 0x3c75d28dUL, 0x00000000UL, 0xbff00000UL, 0x866b95cfUL, 0x3fb37ca1UL,
+ 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL, 0x3c672cedUL, 0x00000000UL,
+ 0xbff00000UL, 0x73fa1279UL, 0x3fbe3a68UL, 0x3806f63bUL, 0xbfde2b5dUL,
+ 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0xbff00000UL, 0x5bc57974UL,
+ 0x3fc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0xbff00000UL, 0x53aba2fdUL, 0x3fcd0dfeUL, 0x25091dd6UL,
+ 0xbfe44cf3UL, 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0xbff00000UL,
+ 0x99fcef32UL, 0xbfca8279UL, 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL,
+ 0x3c8bdd34UL, 0x00000000UL, 0xbfe00000UL, 0x94247758UL, 0xbfc133ccUL,
+ 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL, 0x3c82c5e1UL, 0x00000000UL,
+ 0xbfe00000UL, 0x9ae68c87UL, 0xbfac73b3UL, 0x290ea1a3UL, 0xbfea9b66UL,
+ 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0xbfe00000UL, 0x7f909c4eUL,
+ 0x3f9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0xbfe00000UL, 0x65455a75UL, 0x3fbe0875UL, 0xcf328d46UL,
+ 0xbfed906bUL, 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0xbfe00000UL,
+ 0x76acf82dUL, 0xbfa4a031UL, 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL,
+ 0xbc8760b1UL, 0x00000000UL, 0xbfd00000UL, 0x0e5967d5UL, 0x3fac1d1fUL,
+ 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL, 0xbc756217UL, 0x00000000UL,
+ 0xbfd00000UL, 0x0f592f50UL, 0x3f9ba165UL, 0xa3d12526UL, 0xbfefd88dUL,
+ 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0xbfc00000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0xbff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x0f592f50UL, 0xbf9ba165UL, 0xa3d12526UL,
+ 0xbfefd88dUL, 0x40000000UL, 0x3c887df6UL, 0x00000000UL, 0x3fc00000UL,
+ 0x0e5967d5UL, 0xbfac1d1fUL, 0xcff75cb0UL, 0xbfef6297UL, 0x20000000UL,
+ 0xbc756217UL, 0x00000000UL, 0x3fd00000UL, 0x76acf82dUL, 0x3fa4a031UL,
+ 0x56c62ddaUL, 0xbfee9f41UL, 0xe0000000UL, 0xbc8760b1UL, 0x00000000UL,
+ 0x3fd00000UL, 0x65455a75UL, 0xbfbe0875UL, 0xcf328d46UL, 0xbfed906bUL,
+ 0x20000000UL, 0xbc7457e6UL, 0x00000000UL, 0x3fe00000UL, 0x7f909c4eUL,
+ 0xbf9d4a2cUL, 0xf180bdb1UL, 0xbfec38b2UL, 0x80000000UL, 0x3c76e0b1UL,
+ 0x00000000UL, 0x3fe00000UL, 0x9ae68c87UL, 0x3fac73b3UL, 0x290ea1a3UL,
+ 0xbfea9b66UL, 0xe0000000UL, 0xbc39f630UL, 0x00000000UL, 0x3fe00000UL,
+ 0x94247758UL, 0x3fc133ccUL, 0x6b151741UL, 0xbfe8bc80UL, 0x20000000UL,
+ 0x3c82c5e1UL, 0x00000000UL, 0x3fe00000UL, 0x99fcef32UL, 0x3fca8279UL,
+ 0x667f3bcdUL, 0xbfe6a09eUL, 0x20000000UL, 0x3c8bdd34UL, 0x00000000UL,
+ 0x3fe00000UL, 0x53aba2fdUL, 0xbfcd0dfeUL, 0x25091dd6UL, 0xbfe44cf3UL,
+ 0x20000000UL, 0xbc68076aUL, 0x00000000UL, 0x3ff00000UL, 0x5bc57974UL,
+ 0xbfc59267UL, 0x39ae68c8UL, 0xbfe1c73bUL, 0x20000000UL, 0xbc8b25ddUL,
+ 0x00000000UL, 0x3ff00000UL, 0x73fa1279UL, 0xbfbe3a68UL, 0x3806f63bUL,
+ 0xbfde2b5dUL, 0x20000000UL, 0xbc5e0d89UL, 0x00000000UL, 0x3ff00000UL,
+ 0x866b95cfUL, 0xbfb37ca1UL, 0xa6aea963UL, 0xbfd87de2UL, 0xe0000000UL,
+ 0x3c672cedUL, 0x00000000UL, 0x3ff00000UL, 0x939d225aUL, 0xbfa60beaUL,
+ 0x2ed59f06UL, 0xbfd29406UL, 0xa0000000UL, 0x3c75d28dUL, 0x00000000UL,
+ 0x3ff00000UL, 0x011469fbUL, 0xbf93ad06UL, 0x3c69a60bUL, 0xbfc8f8b8UL,
+ 0xc0000000UL, 0x3c626d19UL, 0x00000000UL, 0x3ff00000UL, 0x176d6d31UL,
+ 0xbf73b92eUL, 0xbc29b42cUL, 0xbfb917a6UL, 0xe0000000UL, 0x3c3e2718UL,
+ 0x00000000UL, 0x3ff00000UL, 0x55555555UL, 0xbfc55555UL, 0x00000000UL,
+ 0xbfe00000UL, 0x11111111UL, 0x3f811111UL, 0x55555555UL, 0x3fa55555UL,
+ 0x1a01a01aUL, 0xbf2a01a0UL, 0x16c16c17UL, 0xbf56c16cUL, 0xa556c734UL,
+ 0x3ec71de3UL, 0x1a01a01aUL, 0x3efa01a0UL, 0x1a600000UL, 0x3d90b461UL,
+ 0x1a600000UL, 0x3d90b461UL, 0x54400000UL, 0x3fb921fbUL, 0x00000000UL,
+ 0x00000000UL, 0x2e037073UL, 0x3b63198aUL, 0x00000000UL, 0x00000000UL,
+ 0x6dc9c883UL, 0x40245f30UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x43380000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x43600000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x3c800000UL, 0x00000000UL,
+ 0x00000000UL, 0xffffffffUL, 0x3fefffffUL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x80000000UL, 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x3fe00000UL,
+ 0x00000000UL, 0x3fe00000UL
+};
+
+void MacroAssembler::fast_sin(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ebx, Register edx) {
+
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, start;
+ assert_different_registers(eax, ebx, edx);
+ address static_const_table_sin = (address)_static_const_table_sin;
+
+ bind(start);
+ subl(rsp, 120);
+ movl(Address(rsp, 56), ebx);
+ lea(ebx, ExternalAddress(static_const_table_sin));
+ movsd(xmm0, Address(rsp, 128));
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ subl(eax, 12336);
+ cmpl(eax, 4293);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_2);
+ movsd(xmm1, Address(ebx, 2160));
+ mulsd(xmm1, xmm0);
+ movsd(xmm5, Address(ebx, 2272));
+ movdqu(xmm4, Address(ebx, 2256));
+ pand(xmm4, xmm0);
+ por(xmm5, xmm4);
+ movsd(xmm3, Address(ebx, 2128));
+ movdqu(xmm2, Address(ebx, 2112));
+ addpd(xmm1, xmm5);
+ cvttsd2sil(edx, xmm1);
+ cvtsi2sdl(xmm1, edx);
+ mulsd(xmm3, xmm1);
+ unpcklpd(xmm1, xmm1);
+ addl(edx, 1865216);
+ movdqu(xmm4, xmm0);
+ andl(edx, 63);
+ movdqu(xmm5, Address(ebx, 2096));
+ lea(eax, Address(ebx, 0));
+ shll(edx, 5);
+ addl(eax, edx);
+ mulpd(xmm2, xmm1);
+ subsd(xmm0, xmm3);
+ mulsd(xmm1, Address(ebx, 2144));
+ subsd(xmm4, xmm3);
+ movsd(xmm7, Address(eax, 8));
+ unpcklpd(xmm0, xmm0);
+ movapd(xmm3, xmm4);
+ subsd(xmm4, xmm2);
+ mulpd(xmm5, xmm0);
+ subpd(xmm0, xmm2);
+ movdqu(xmm6, Address(ebx, 2064));
+ mulsd(xmm7, xmm4);
+ subsd(xmm3, xmm4);
+ mulpd(xmm5, xmm0);
+ mulpd(xmm0, xmm0);
+ subsd(xmm3, xmm2);
+ movdqu(xmm2, Address(eax, 0));
+ subsd(xmm1, xmm3);
+ movsd(xmm3, Address(eax, 24));
+ addsd(xmm2, xmm3);
+ subsd(xmm7, xmm2);
+ mulsd(xmm2, xmm4);
+ mulpd(xmm6, xmm0);
+ mulsd(xmm3, xmm4);
+ mulpd(xmm2, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm5, Address(ebx, 2080));
+ mulsd(xmm4, Address(eax, 0));
+ addpd(xmm6, Address(ebx, 2048));
+ mulpd(xmm5, xmm0);
+ movapd(xmm0, xmm3);
+ addsd(xmm3, Address(eax, 8));
+ mulpd(xmm1, xmm7);
+ movapd(xmm7, xmm4);
+ addsd(xmm4, xmm3);
+ addpd(xmm6, xmm5);
+ movsd(xmm5, Address(eax, 8));
+ subsd(xmm5, xmm3);
+ subsd(xmm3, xmm4);
+ addsd(xmm1, Address(eax, 16));
+ mulpd(xmm6, xmm2);
+ addsd(xmm5, xmm0);
+ addsd(xmm3, xmm7);
+ addsd(xmm1, xmm5);
+ addsd(xmm1, xmm3);
+ addsd(xmm1, xmm6);
+ unpckhpd(xmm6, xmm6);
+ addsd(xmm1, xmm6);
+ addsd(xmm4, xmm1);
+ movsd(Address(rsp, 0), xmm4);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
+ shrl(eax, 4);
+ cmpl(eax, 268434685);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_3_0_2);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_3_0_2);
+ movsd(xmm3, Address(ebx, 2192));
+ mulsd(xmm3, xmm0);
+ subsd(xmm3, xmm0);
+ mulsd(xmm3, Address(ebx, 2208));
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movl(eax, Address(rsp, 132));
+ andl(eax, 2146435072);
+ cmpl(eax, 2146435072);
+ jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
+ subl(rsp, 32);
+ movsd(Address(rsp, 0), xmm0);
+ lea(eax, Address(rsp, 40));
+ movl(Address(rsp, 8), eax);
+ movl(eax, 2);
+ movl(Address(rsp, 12), eax);
+ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_sin_cos_huge())));
+ addl(rsp, 32);
+ fld_d(Address(rsp, 16));
+ jmp(L_2TAG_PACKET_1_0_2);
+ bind(L_2TAG_PACKET_4_0_2);
+ fld_d(Address(rsp, 128));
+ fmul_d(Address(ebx, 2240));
+ bind(L_2TAG_PACKET_1_0_2);
+ movl(ebx, Address(rsp, 56));
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/macroAssembler_x86_tan.cpp b/hotspot/src/cpu/x86/vm/macroAssembler_x86_tan.cpp
new file mode 100644
index 00000000000..18fe151cd33
--- /dev/null
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86_tan.cpp
@@ -0,0 +1,2144 @@
+/*
+* Copyright (c) 2016, Intel Corporation.
+* Intel Math Library (LIBM) Source Code
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*
+*/
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "asm/assembler.inline.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "macroAssembler_x86.hpp"
+
+#ifdef _MSC_VER
+#define ALIGNED_(x) __declspec(align(x))
+#else
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION - TAN()
+// ---------------------
+//
+// Polynomials coefficients and other constants.
+//
+// Note that in this algorithm, there is a different polynomial for
+// each breakpoint, so there are 32 sets of polynomial coefficients
+// as well as 32 instances of the other constants.
+//
+// The polynomial coefficients and constants are offset from the start
+// of the main block as follows:
+//
+// 0: c8 | c0
+// 16: c9 | c1
+// 32: c10 | c2
+// 48: c11 | c3
+// 64: c12 | c4
+// 80: c13 | c5
+// 96: c14 | c6
+// 112: c15 | c7
+// 128: T_hi
+// 136: T_lo
+// 144: Sigma
+// 152: T_hl
+// 160: Tau
+// 168: Mask
+// 176: (end of block)
+//
+// The total table size is therefore 5632 bytes.
+//
+// Note that c0 and c1 are always zero. We could try storing
+// other constants here, and just loading the low part of the
+// SIMD register in these cases, after ensuring the high part
+// is zero.
+//
+// The higher terms of the polynomial are computed in the *low*
+// part of the SIMD register. This is so we can overlap the
+// multiplication by r^8 and the unpacking of the other part.
+//
+// The constants are:
+// T_hi + T_lo = accurate constant term in power series
+// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
+// Tau = multiplier for the reciprocal, always -1 or 0
+//
+// The basic reconstruction formula using these constants is:
+//
+// High = tau * recip_hi + t_hi
+// Med = (sgn * r + t_hl * r)_hi
+// Low = (sgn * r + t_hl * r)_lo +
+// tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
+//
+// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
+//
+// (c0 = c1 = 0, but using them keeps SIMD regularity)
+//
+// We then do a compensated sum High + Med, add the low parts together
+// and then do the final sum.
+//
+// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
+// modulo pi/2
+//
+// Special cases:
+// tan(NaN) = quiet NaN, and raise invalid exception
+// tan(INF) = NaN and raise invalid exception
+// tan(+/-0) = +/-0
+//
+/******************************************************************************/
+
+#ifdef _LP64
+// The 64 bit code is at most SSE2 compliant
+ALIGNED_(16) juint _ONEHALF_tan[] =
+{
+ 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+};
+
+ALIGNED_(16) juint _MUL16[] =
+{
+ 0x00000000UL, 0x40300000UL, 0x00000000UL, 0x3ff00000UL
+};
+
+ALIGNED_(16) juint _sign_mask_tan[] =
+{
+ 0x00000000UL, 0x80000000UL, 0x00000000UL, 0x80000000UL
+};
+
+ALIGNED_(16) juint _PI32INV_tan[] =
+{
+ 0x6dc9c883UL, 0x3fe45f30UL, 0x6dc9c883UL, 0x40245f30UL
+};
+
+ALIGNED_(16) juint _P_1_tan[] =
+{
+ 0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL
+};
+
+ALIGNED_(16) juint _P_2_tan[] =
+{
+ 0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL
+};
+
+ALIGNED_(16) juint _P_3_tan[] =
+{
+ 0x3707344aUL, 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL
+};
+
+ALIGNED_(16) juint _Ctable_tan[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x882c10faUL,
+ 0x3f9664f4UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x55e6c23dUL, 0x3f8226e3UL, 0x55555555UL,
+ 0x3fd55555UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x0e157de0UL, 0x3f6d6d3dUL, 0x11111111UL, 0x3fc11111UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x452b75e3UL, 0x3f57da36UL,
+ 0x1ba1ba1cUL, 0x3faba1baUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x4e435f9bUL,
+ 0x3f953f83UL, 0x00000000UL, 0x00000000UL, 0x3c6e8e46UL, 0x3f9b74eaUL,
+ 0x00000000UL, 0x00000000UL, 0xda5b7511UL, 0x3f85ad63UL, 0xdc230b9bUL,
+ 0x3fb97558UL, 0x26cb3788UL, 0x3f881308UL, 0x76fc4985UL, 0x3fd62ac9UL,
+ 0x77bb08baUL, 0x3f757c85UL, 0xb6247521UL, 0x3fb1381eUL, 0x5922170cUL,
+ 0x3f754e95UL, 0x8746482dUL, 0x3fc27f83UL, 0x11055b30UL, 0x3f64e391UL,
+ 0x3e666320UL, 0x3fa3e609UL, 0x0de9dae3UL, 0x3f6301dfUL, 0x1f1dca06UL,
+ 0x3fafa8aeUL, 0x8c5b2da2UL, 0x3fb936bbUL, 0x4e88f7a5UL, 0x3c587d05UL,
+ 0x00000000UL, 0x3ff00000UL, 0xa8935dd9UL, 0x3f83dde2UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x5a279ea3UL, 0x3faa3407UL,
+ 0x00000000UL, 0x00000000UL, 0x432d65faUL, 0x3fa70153UL, 0x00000000UL,
+ 0x00000000UL, 0x891a4602UL, 0x3f9d03efUL, 0xd62ca5f8UL, 0x3fca77d9UL,
+ 0xb35f4628UL, 0x3f97a265UL, 0x433258faUL, 0x3fd8cf51UL, 0xb58fd909UL,
+ 0x3f8f88e3UL, 0x01771ceaUL, 0x3fc2b154UL, 0xf3562f8eUL, 0x3f888f57UL,
+ 0xc028a723UL, 0x3fc7370fUL, 0x20b7f9f0UL, 0x3f80f44cUL, 0x214368e9UL,
+ 0x3fb6dfaaUL, 0x28891863UL, 0x3f79b4b6UL, 0x172dbbf0UL, 0x3fb6cb8eUL,
+ 0xe0553158UL, 0x3fc975f5UL, 0x593fe814UL, 0x3c2ef5d3UL, 0x00000000UL,
+ 0x3ff00000UL, 0x03dec550UL, 0x3fa44203UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x9314533eUL, 0x3fbb8ec5UL, 0x00000000UL,
+ 0x00000000UL, 0x09aa36d0UL, 0x3fb6d3f4UL, 0x00000000UL, 0x00000000UL,
+ 0xdcb427fdUL, 0x3fb13950UL, 0xd87ab0bbUL, 0x3fd5335eUL, 0xce0ae8a5UL,
+ 0x3fabb382UL, 0x79143126UL, 0x3fddba41UL, 0x5f2b28d4UL, 0x3fa552f1UL,
+ 0x59f21a6dUL, 0x3fd015abUL, 0x22c27d95UL, 0x3fa0e984UL, 0xe19fc6aaUL,
+ 0x3fd0576cUL, 0x8f2c2950UL, 0x3f9a4898UL, 0xc0b3f22cUL, 0x3fc59462UL,
+ 0x1883a4b8UL, 0x3f94b61cUL, 0x3f838640UL, 0x3fc30eb8UL, 0x355c63dcUL,
+ 0x3fd36a08UL, 0x1dce993dUL, 0xbc6d704dUL, 0x00000000UL, 0x3ff00000UL,
+ 0x2b82ab63UL, 0x3fb78e92UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x56f37042UL, 0x3fccfc56UL, 0x00000000UL, 0x00000000UL,
+ 0xaa563951UL, 0x3fc90125UL, 0x00000000UL, 0x00000000UL, 0x3d0e7c5dUL,
+ 0x3fc50533UL, 0x9bed9b2eUL, 0x3fdf0ed9UL, 0x5fe7c47cUL, 0x3fc1f250UL,
+ 0x96c125e5UL, 0x3fe2edd9UL, 0x5a02bbd8UL, 0x3fbe5c71UL, 0x86362c20UL,
+ 0x3fda08b7UL, 0x4b4435edUL, 0x3fb9d342UL, 0x4b494091UL, 0x3fd911bdUL,
+ 0xb56658beUL, 0x3fb5e4c7UL, 0x93a2fd76UL, 0x3fd3c092UL, 0xda271794UL,
+ 0x3fb29910UL, 0x3303df2bUL, 0x3fd189beUL, 0x99fcef32UL, 0x3fda8279UL,
+ 0xb68c1467UL, 0x3c708b2fUL, 0x00000000UL, 0x3ff00000UL, 0x980c4337UL,
+ 0x3fc5f619UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0xcc03e501UL, 0x3fdff10fUL, 0x00000000UL, 0x00000000UL, 0x44a4e845UL,
+ 0x3fddb63bUL, 0x00000000UL, 0x00000000UL, 0x3768ad9fUL, 0x3fdb72a4UL,
+ 0x3dd01ccaUL, 0x3fe5fdb9UL, 0xa61d2811UL, 0x3fd972b2UL, 0x5645ad0bUL,
+ 0x3fe977f9UL, 0xd013b3abUL, 0x3fd78ca3UL, 0xbf0bf914UL, 0x3fe4f192UL,
+ 0x4d53e730UL, 0x3fd5d060UL, 0x3f8b9000UL, 0x3fe49933UL, 0xe2b82f08UL,
+ 0x3fd4322aUL, 0x5936a835UL, 0x3fe27ae1UL, 0xb1c61c9bUL, 0x3fd2b3fbUL,
+ 0xef478605UL, 0x3fe1659eUL, 0x190834ecUL, 0x3fe11ab7UL, 0xcdb625eaUL,
+ 0xbc8e564bUL, 0x00000000UL, 0x3ff00000UL, 0xb07217e3UL, 0x3fd248f1UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2b2c49d0UL,
+ 0x3ff2de9cUL, 0x00000000UL, 0x00000000UL, 0x2655bc98UL, 0x3ff33e58UL,
+ 0x00000000UL, 0x00000000UL, 0xff691fa2UL, 0x3ff3972eUL, 0xe93463bdUL,
+ 0x3feeed87UL, 0x070e10a0UL, 0x3ff3f5b2UL, 0xf4d790a4UL, 0x3ff20c10UL,
+ 0xa04e8ea3UL, 0x3ff4541aUL, 0x386accd3UL, 0x3ff1369eUL, 0x222a66ddUL,
+ 0x3ff4b521UL, 0x22a9777eUL, 0x3ff20817UL, 0x52a04a6eUL, 0x3ff5178fUL,
+ 0xddaa0031UL, 0x3ff22137UL, 0x4447d47cUL, 0x3ff57c01UL, 0x1e9c7f1dUL,
+ 0x3ff29311UL, 0x2ab7f990UL, 0x3fe561b8UL, 0x209c7df1UL, 0x3c87a8c5UL,
+ 0x00000000UL, 0x3ff00000UL, 0x4170bcc6UL, 0x3fdc92d8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xc7ab4d5aUL, 0x40085e24UL,
+ 0x00000000UL, 0x00000000UL, 0xe93ea75dUL, 0x400b963dUL, 0x00000000UL,
+ 0x00000000UL, 0x94a7f25aUL, 0x400f37e2UL, 0x4b6261cbUL, 0x3ff5f984UL,
+ 0x5a9dd812UL, 0x4011aab0UL, 0x74c30018UL, 0x3ffaf5a5UL, 0x7f2ce8e3UL,
+ 0x4013fe8bUL, 0xfe8e54faUL, 0x3ffd7334UL, 0x670d618dUL, 0x4016a10cUL,
+ 0x4db97058UL, 0x4000e012UL, 0x24df44ddUL, 0x40199c5fUL, 0x697d6eceUL,
+ 0x4003006eUL, 0x83298b82UL, 0x401cfc4dUL, 0x19d490d6UL, 0x40058c19UL,
+ 0x2ae42850UL, 0x3fea4300UL, 0x118e20e6UL, 0xbc7a6db8UL, 0x00000000UL,
+ 0x40000000UL, 0xe33345b8UL, 0xbfd4e526UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x65965966UL, 0x40219659UL, 0x00000000UL,
+ 0x00000000UL, 0x882c10faUL, 0x402664f4UL, 0x00000000UL, 0x00000000UL,
+ 0x83cd3723UL, 0x402c8342UL, 0x00000000UL, 0x40000000UL, 0x55e6c23dUL,
+ 0x403226e3UL, 0x55555555UL, 0x40055555UL, 0x34451939UL, 0x40371c96UL,
+ 0xaaaaaaabUL, 0x400aaaaaUL, 0x0e157de0UL, 0x403d6d3dUL, 0x11111111UL,
+ 0x40111111UL, 0xa738201fUL, 0x4042bbceUL, 0x05b05b06UL, 0x4015b05bUL,
+ 0x452b75e3UL, 0x4047da36UL, 0x1ba1ba1cUL, 0x401ba1baUL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x40000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x4f48b8d3UL, 0xbf33eaf9UL, 0x00000000UL, 0x00000000UL,
+ 0x0cf7586fUL, 0x3f20b8eaUL, 0x00000000UL, 0x00000000UL, 0xd0258911UL,
+ 0xbf0abaf3UL, 0x23e49fe9UL, 0xbfab5a8cUL, 0x2d53222eUL, 0x3ef60d15UL,
+ 0x21169451UL, 0x3fa172b2UL, 0xbb254dbcUL, 0xbee1d3b5UL, 0xdbf93b8eUL,
+ 0xbf84c7dbUL, 0x05b4630bUL, 0x3ecd3364UL, 0xee9aada7UL, 0x3f743924UL,
+ 0x794a8297UL, 0xbeb7b7b9UL, 0xe015f797UL, 0xbf5d41f5UL, 0xe41a4a56UL,
+ 0x3ea35dfbUL, 0xe4c2a251UL, 0x3f49a2abUL, 0x5af9e000UL, 0xbfce49ceUL,
+ 0x8c743719UL, 0x3d1eb860UL, 0x00000000UL, 0x00000000UL, 0x1b4863cfUL,
+ 0x3fd78294UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x535ad890UL, 0xbf2b9320UL, 0x00000000UL, 0x00000000UL, 0x018fdf1fUL,
+ 0x3f16d61dUL, 0x00000000UL, 0x00000000UL, 0x0359f1beUL, 0xbf0139e4UL,
+ 0xa4317c6dUL, 0xbfa67e17UL, 0x82672d0fUL, 0x3eebb405UL, 0x2f1b621eUL,
+ 0x3f9f455bUL, 0x51ccf238UL, 0xbed55317UL, 0xf437b9acUL, 0xbf804beeUL,
+ 0xc791a2b5UL, 0x3ec0e993UL, 0x919a1db2UL, 0x3f7080c2UL, 0x336a5b0eUL,
+ 0xbeaa48a2UL, 0x0a268358UL, 0xbf55a443UL, 0xdfd978e4UL, 0x3e94b61fUL,
+ 0xd7767a58UL, 0x3f431806UL, 0x2aea0000UL, 0xbfc9bbe8UL, 0x7723ea61UL,
+ 0xbd3a2369UL, 0x00000000UL, 0x00000000UL, 0xdf7796ffUL, 0x3fd6e642UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0xb9ff07ceUL,
+ 0xbf231c78UL, 0x00000000UL, 0x00000000UL, 0xa5517182UL, 0x3f0ff0e0UL,
+ 0x00000000UL, 0x00000000UL, 0x790b4cbcUL, 0xbef66191UL, 0x848a46c6UL,
+ 0xbfa21ac0UL, 0xb16435faUL, 0x3ee1d3ecUL, 0x2a1aa832UL, 0x3f9c71eaUL,
+ 0xfdd299efUL, 0xbec9dd1aUL, 0x3f8dbaafUL, 0xbf793363UL, 0x309fc6eaUL,
+ 0x3eb415d6UL, 0xbee60471UL, 0x3f6b83baUL, 0x94a0a697UL, 0xbe9dae11UL,
+ 0x3e5c67b3UL, 0xbf4fd07bUL, 0x9a8f3e3eUL, 0x3e86bd75UL, 0xa4beb7a4UL,
+ 0x3f3d1eb1UL, 0x29cfc000UL, 0xbfc549ceUL, 0xbf159358UL, 0xbd397b33UL,
+ 0x00000000UL, 0x00000000UL, 0x871fee6cUL, 0x3fd666f0UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x7d98a556UL, 0xbf1a3958UL,
+ 0x00000000UL, 0x00000000UL, 0x9d88dc01UL, 0x3f0704c2UL, 0x00000000UL,
+ 0x00000000UL, 0x73742a2bUL, 0xbeed054aUL, 0x58844587UL, 0xbf9c2a13UL,
+ 0x55688a79UL, 0x3ed7a326UL, 0xee33f1d6UL, 0x3f9a48f4UL, 0xa8dc9888UL,
+ 0xbebf8939UL, 0xaad4b5b8UL, 0xbf72f746UL, 0x9102efa1UL, 0x3ea88f82UL,
+ 0xdabc29cfUL, 0x3f678228UL, 0x9289afb8UL, 0xbe90f456UL, 0x741fb4edUL,
+ 0xbf46f3a3UL, 0xa97f6663UL, 0x3e79b4bfUL, 0xca89ff3fUL, 0x3f36db70UL,
+ 0xa8a2a000UL, 0xbfc0ee13UL, 0x3da24be1UL, 0xbd338b9fUL, 0x00000000UL,
+ 0x00000000UL, 0x11cd6c69UL, 0x3fd601fdUL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0x1a154b97UL, 0xbf116b01UL, 0x00000000UL,
+ 0x00000000UL, 0x2d427630UL, 0x3f0147bfUL, 0x00000000UL, 0x00000000UL,
+ 0xb93820c8UL, 0xbee264d4UL, 0xbb6cbb18UL, 0xbf94ab8cUL, 0x888d4d92UL,
+ 0x3ed0568bUL, 0x60730f7cUL, 0x3f98b19bUL, 0xe4b1fb11UL, 0xbeb2f950UL,
+ 0x22cf9f74UL, 0xbf6b21cdUL, 0x4a3ff0a6UL, 0x3e9f499eUL, 0xfd2b83ceUL,
+ 0x3f64aad7UL, 0x637b73afUL, 0xbe83487cUL, 0xe522591aUL, 0xbf3fc092UL,
+ 0xa158e8bcUL, 0x3e6e3aaeUL, 0xe5e82ffaUL, 0x3f329d2fUL, 0xd636a000UL,
+ 0xbfb9477fUL, 0xc2c2d2bcUL, 0xbd135ef9UL, 0x00000000UL, 0x00000000UL,
+ 0xf2fdb123UL, 0x3fd5b566UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0xc41acb64UL, 0xbf05448dUL, 0x00000000UL, 0x00000000UL,
+ 0xdbb03d6fUL, 0x3efb7ad2UL, 0x00000000UL, 0x00000000UL, 0x9e42962dUL,
+ 0xbed5aea5UL, 0x2579f8efUL, 0xbf8b2398UL, 0x288a1ed9UL, 0x3ec81441UL,
+ 0xb0198dc5UL, 0x3f979a3aUL, 0x2fdfe253UL, 0xbea57cd3UL, 0x5766336fUL,
+ 0xbf617caaUL, 0x600944c3UL, 0x3e954ed6UL, 0xa4e0aaf8UL, 0x3f62c646UL,
+ 0x6b8fb29cUL, 0xbe74e3a3UL, 0xdc4c0409UL, 0xbf33f952UL, 0x9bffe365UL,
+ 0x3e6301ecUL, 0xb8869e44UL, 0x3f2fc566UL, 0xe1e04000UL, 0xbfb0cc62UL,
+ 0x016b907fUL, 0xbd119cbcUL, 0x00000000UL, 0x00000000UL, 0xe6b9d8faUL,
+ 0x3fd57fb3UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x5daf22a6UL, 0xbef429d7UL, 0x00000000UL, 0x00000000UL, 0x06bca545UL,
+ 0x3ef7a27dUL, 0x00000000UL, 0x00000000UL, 0x7211c19aUL, 0xbec41c3eUL,
+ 0x956ed53eUL, 0xbf7ae3f4UL, 0xee750e72UL, 0x3ec3901bUL, 0x91d443f5UL,
+ 0x3f96f713UL, 0x36661e6cUL, 0xbe936e09UL, 0x506f9381UL, 0xbf5122e8UL,
+ 0xcb6dd43fUL, 0x3e9041b9UL, 0x6698b2ffUL, 0x3f61b0c7UL, 0x576bf12bUL,
+ 0xbe625a8aUL, 0xe5a0e9dcUL, 0xbf23499dUL, 0x110384ddUL, 0x3e5b1c2cUL,
+ 0x68d43db6UL, 0x3f2cb899UL, 0x6ecac000UL, 0xbfa0c414UL, 0xcd7dd58cUL,
+ 0x3d13500fUL, 0x00000000UL, 0x00000000UL, 0x85a2c8fbUL, 0x3fd55fe0UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2bf70ebeUL, 0x3ef66a8fUL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0xd644267fUL, 0x3ec22805UL, 0x16c16c17UL, 0x3f96c16cUL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xc4e09162UL,
+ 0x3e8d6db2UL, 0xbc011567UL, 0x3f61566aUL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x1f79955cUL, 0x3e57da4eUL, 0x9334ef0bUL,
+ 0x3f2bbd77UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x55555555UL, 0x3fd55555UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x5daf22a6UL, 0x3ef429d7UL,
+ 0x00000000UL, 0x00000000UL, 0x06bca545UL, 0x3ef7a27dUL, 0x00000000UL,
+ 0x00000000UL, 0x7211c19aUL, 0x3ec41c3eUL, 0x956ed53eUL, 0x3f7ae3f4UL,
+ 0xee750e72UL, 0x3ec3901bUL, 0x91d443f5UL, 0x3f96f713UL, 0x36661e6cUL,
+ 0x3e936e09UL, 0x506f9381UL, 0x3f5122e8UL, 0xcb6dd43fUL, 0x3e9041b9UL,
+ 0x6698b2ffUL, 0x3f61b0c7UL, 0x576bf12bUL, 0x3e625a8aUL, 0xe5a0e9dcUL,
+ 0x3f23499dUL, 0x110384ddUL, 0x3e5b1c2cUL, 0x68d43db6UL, 0x3f2cb899UL,
+ 0x6ecac000UL, 0x3fa0c414UL, 0xcd7dd58cUL, 0xbd13500fUL, 0x00000000UL,
+ 0x00000000UL, 0x85a2c8fbUL, 0x3fd55fe0UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0xc41acb64UL, 0x3f05448dUL, 0x00000000UL,
+ 0x00000000UL, 0xdbb03d6fUL, 0x3efb7ad2UL, 0x00000000UL, 0x00000000UL,
+ 0x9e42962dUL, 0x3ed5aea5UL, 0x2579f8efUL, 0x3f8b2398UL, 0x288a1ed9UL,
+ 0x3ec81441UL, 0xb0198dc5UL, 0x3f979a3aUL, 0x2fdfe253UL, 0x3ea57cd3UL,
+ 0x5766336fUL, 0x3f617caaUL, 0x600944c3UL, 0x3e954ed6UL, 0xa4e0aaf8UL,
+ 0x3f62c646UL, 0x6b8fb29cUL, 0x3e74e3a3UL, 0xdc4c0409UL, 0x3f33f952UL,
+ 0x9bffe365UL, 0x3e6301ecUL, 0xb8869e44UL, 0x3f2fc566UL, 0xe1e04000UL,
+ 0x3fb0cc62UL, 0x016b907fUL, 0x3d119cbcUL, 0x00000000UL, 0x00000000UL,
+ 0xe6b9d8faUL, 0x3fd57fb3UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0x1a154b97UL, 0x3f116b01UL, 0x00000000UL, 0x00000000UL,
+ 0x2d427630UL, 0x3f0147bfUL, 0x00000000UL, 0x00000000UL, 0xb93820c8UL,
+ 0x3ee264d4UL, 0xbb6cbb18UL, 0x3f94ab8cUL, 0x888d4d92UL, 0x3ed0568bUL,
+ 0x60730f7cUL, 0x3f98b19bUL, 0xe4b1fb11UL, 0x3eb2f950UL, 0x22cf9f74UL,
+ 0x3f6b21cdUL, 0x4a3ff0a6UL, 0x3e9f499eUL, 0xfd2b83ceUL, 0x3f64aad7UL,
+ 0x637b73afUL, 0x3e83487cUL, 0xe522591aUL, 0x3f3fc092UL, 0xa158e8bcUL,
+ 0x3e6e3aaeUL, 0xe5e82ffaUL, 0x3f329d2fUL, 0xd636a000UL, 0x3fb9477fUL,
+ 0xc2c2d2bcUL, 0x3d135ef9UL, 0x00000000UL, 0x00000000UL, 0xf2fdb123UL,
+ 0x3fd5b566UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x7d98a556UL, 0x3f1a3958UL, 0x00000000UL, 0x00000000UL, 0x9d88dc01UL,
+ 0x3f0704c2UL, 0x00000000UL, 0x00000000UL, 0x73742a2bUL, 0x3eed054aUL,
+ 0x58844587UL, 0x3f9c2a13UL, 0x55688a79UL, 0x3ed7a326UL, 0xee33f1d6UL,
+ 0x3f9a48f4UL, 0xa8dc9888UL, 0x3ebf8939UL, 0xaad4b5b8UL, 0x3f72f746UL,
+ 0x9102efa1UL, 0x3ea88f82UL, 0xdabc29cfUL, 0x3f678228UL, 0x9289afb8UL,
+ 0x3e90f456UL, 0x741fb4edUL, 0x3f46f3a3UL, 0xa97f6663UL, 0x3e79b4bfUL,
+ 0xca89ff3fUL, 0x3f36db70UL, 0xa8a2a000UL, 0x3fc0ee13UL, 0x3da24be1UL,
+ 0x3d338b9fUL, 0x00000000UL, 0x00000000UL, 0x11cd6c69UL, 0x3fd601fdUL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0xb9ff07ceUL,
+ 0x3f231c78UL, 0x00000000UL, 0x00000000UL, 0xa5517182UL, 0x3f0ff0e0UL,
+ 0x00000000UL, 0x00000000UL, 0x790b4cbcUL, 0x3ef66191UL, 0x848a46c6UL,
+ 0x3fa21ac0UL, 0xb16435faUL, 0x3ee1d3ecUL, 0x2a1aa832UL, 0x3f9c71eaUL,
+ 0xfdd299efUL, 0x3ec9dd1aUL, 0x3f8dbaafUL, 0x3f793363UL, 0x309fc6eaUL,
+ 0x3eb415d6UL, 0xbee60471UL, 0x3f6b83baUL, 0x94a0a697UL, 0x3e9dae11UL,
+ 0x3e5c67b3UL, 0x3f4fd07bUL, 0x9a8f3e3eUL, 0x3e86bd75UL, 0xa4beb7a4UL,
+ 0x3f3d1eb1UL, 0x29cfc000UL, 0x3fc549ceUL, 0xbf159358UL, 0x3d397b33UL,
+ 0x00000000UL, 0x00000000UL, 0x871fee6cUL, 0x3fd666f0UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x535ad890UL, 0x3f2b9320UL,
+ 0x00000000UL, 0x00000000UL, 0x018fdf1fUL, 0x3f16d61dUL, 0x00000000UL,
+ 0x00000000UL, 0x0359f1beUL, 0x3f0139e4UL, 0xa4317c6dUL, 0x3fa67e17UL,
+ 0x82672d0fUL, 0x3eebb405UL, 0x2f1b621eUL, 0x3f9f455bUL, 0x51ccf238UL,
+ 0x3ed55317UL, 0xf437b9acUL, 0x3f804beeUL, 0xc791a2b5UL, 0x3ec0e993UL,
+ 0x919a1db2UL, 0x3f7080c2UL, 0x336a5b0eUL, 0x3eaa48a2UL, 0x0a268358UL,
+ 0x3f55a443UL, 0xdfd978e4UL, 0x3e94b61fUL, 0xd7767a58UL, 0x3f431806UL,
+ 0x2aea0000UL, 0x3fc9bbe8UL, 0x7723ea61UL, 0x3d3a2369UL, 0x00000000UL,
+ 0x00000000UL, 0xdf7796ffUL, 0x3fd6e642UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0x4f48b8d3UL, 0x3f33eaf9UL, 0x00000000UL,
+ 0x00000000UL, 0x0cf7586fUL, 0x3f20b8eaUL, 0x00000000UL, 0x00000000UL,
+ 0xd0258911UL, 0x3f0abaf3UL, 0x23e49fe9UL, 0x3fab5a8cUL, 0x2d53222eUL,
+ 0x3ef60d15UL, 0x21169451UL, 0x3fa172b2UL, 0xbb254dbcUL, 0x3ee1d3b5UL,
+ 0xdbf93b8eUL, 0x3f84c7dbUL, 0x05b4630bUL, 0x3ecd3364UL, 0xee9aada7UL,
+ 0x3f743924UL, 0x794a8297UL, 0x3eb7b7b9UL, 0xe015f797UL, 0x3f5d41f5UL,
+ 0xe41a4a56UL, 0x3ea35dfbUL, 0xe4c2a251UL, 0x3f49a2abUL, 0x5af9e000UL,
+ 0x3fce49ceUL, 0x8c743719UL, 0xbd1eb860UL, 0x00000000UL, 0x00000000UL,
+ 0x1b4863cfUL, 0x3fd78294UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0x65965966UL, 0xc0219659UL, 0x00000000UL, 0x00000000UL,
+ 0x882c10faUL, 0x402664f4UL, 0x00000000UL, 0x00000000UL, 0x83cd3723UL,
+ 0xc02c8342UL, 0x00000000UL, 0xc0000000UL, 0x55e6c23dUL, 0x403226e3UL,
+ 0x55555555UL, 0x40055555UL, 0x34451939UL, 0xc0371c96UL, 0xaaaaaaabUL,
+ 0xc00aaaaaUL, 0x0e157de0UL, 0x403d6d3dUL, 0x11111111UL, 0x40111111UL,
+ 0xa738201fUL, 0xc042bbceUL, 0x05b05b06UL, 0xc015b05bUL, 0x452b75e3UL,
+ 0x4047da36UL, 0x1ba1ba1cUL, 0x401ba1baUL, 0x00000000UL, 0xbff00000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x40000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0xc7ab4d5aUL, 0xc0085e24UL, 0x00000000UL, 0x00000000UL, 0xe93ea75dUL,
+ 0x400b963dUL, 0x00000000UL, 0x00000000UL, 0x94a7f25aUL, 0xc00f37e2UL,
+ 0x4b6261cbUL, 0xbff5f984UL, 0x5a9dd812UL, 0x4011aab0UL, 0x74c30018UL,
+ 0x3ffaf5a5UL, 0x7f2ce8e3UL, 0xc013fe8bUL, 0xfe8e54faUL, 0xbffd7334UL,
+ 0x670d618dUL, 0x4016a10cUL, 0x4db97058UL, 0x4000e012UL, 0x24df44ddUL,
+ 0xc0199c5fUL, 0x697d6eceUL, 0xc003006eUL, 0x83298b82UL, 0x401cfc4dUL,
+ 0x19d490d6UL, 0x40058c19UL, 0x2ae42850UL, 0xbfea4300UL, 0x118e20e6UL,
+ 0x3c7a6db8UL, 0x00000000UL, 0x40000000UL, 0xe33345b8UL, 0xbfd4e526UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2b2c49d0UL,
+ 0xbff2de9cUL, 0x00000000UL, 0x00000000UL, 0x2655bc98UL, 0x3ff33e58UL,
+ 0x00000000UL, 0x00000000UL, 0xff691fa2UL, 0xbff3972eUL, 0xe93463bdUL,
+ 0xbfeeed87UL, 0x070e10a0UL, 0x3ff3f5b2UL, 0xf4d790a4UL, 0x3ff20c10UL,
+ 0xa04e8ea3UL, 0xbff4541aUL, 0x386accd3UL, 0xbff1369eUL, 0x222a66ddUL,
+ 0x3ff4b521UL, 0x22a9777eUL, 0x3ff20817UL, 0x52a04a6eUL, 0xbff5178fUL,
+ 0xddaa0031UL, 0xbff22137UL, 0x4447d47cUL, 0x3ff57c01UL, 0x1e9c7f1dUL,
+ 0x3ff29311UL, 0x2ab7f990UL, 0xbfe561b8UL, 0x209c7df1UL, 0xbc87a8c5UL,
+ 0x00000000UL, 0x3ff00000UL, 0x4170bcc6UL, 0x3fdc92d8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xcc03e501UL, 0xbfdff10fUL,
+ 0x00000000UL, 0x00000000UL, 0x44a4e845UL, 0x3fddb63bUL, 0x00000000UL,
+ 0x00000000UL, 0x3768ad9fUL, 0xbfdb72a4UL, 0x3dd01ccaUL, 0xbfe5fdb9UL,
+ 0xa61d2811UL, 0x3fd972b2UL, 0x5645ad0bUL, 0x3fe977f9UL, 0xd013b3abUL,
+ 0xbfd78ca3UL, 0xbf0bf914UL, 0xbfe4f192UL, 0x4d53e730UL, 0x3fd5d060UL,
+ 0x3f8b9000UL, 0x3fe49933UL, 0xe2b82f08UL, 0xbfd4322aUL, 0x5936a835UL,
+ 0xbfe27ae1UL, 0xb1c61c9bUL, 0x3fd2b3fbUL, 0xef478605UL, 0x3fe1659eUL,
+ 0x190834ecUL, 0xbfe11ab7UL, 0xcdb625eaUL, 0x3c8e564bUL, 0x00000000UL,
+ 0x3ff00000UL, 0xb07217e3UL, 0x3fd248f1UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x56f37042UL, 0xbfccfc56UL, 0x00000000UL,
+ 0x00000000UL, 0xaa563951UL, 0x3fc90125UL, 0x00000000UL, 0x00000000UL,
+ 0x3d0e7c5dUL, 0xbfc50533UL, 0x9bed9b2eUL, 0xbfdf0ed9UL, 0x5fe7c47cUL,
+ 0x3fc1f250UL, 0x96c125e5UL, 0x3fe2edd9UL, 0x5a02bbd8UL, 0xbfbe5c71UL,
+ 0x86362c20UL, 0xbfda08b7UL, 0x4b4435edUL, 0x3fb9d342UL, 0x4b494091UL,
+ 0x3fd911bdUL, 0xb56658beUL, 0xbfb5e4c7UL, 0x93a2fd76UL, 0xbfd3c092UL,
+ 0xda271794UL, 0x3fb29910UL, 0x3303df2bUL, 0x3fd189beUL, 0x99fcef32UL,
+ 0xbfda8279UL, 0xb68c1467UL, 0xbc708b2fUL, 0x00000000UL, 0x3ff00000UL,
+ 0x980c4337UL, 0x3fc5f619UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x9314533eUL, 0xbfbb8ec5UL, 0x00000000UL, 0x00000000UL,
+ 0x09aa36d0UL, 0x3fb6d3f4UL, 0x00000000UL, 0x00000000UL, 0xdcb427fdUL,
+ 0xbfb13950UL, 0xd87ab0bbUL, 0xbfd5335eUL, 0xce0ae8a5UL, 0x3fabb382UL,
+ 0x79143126UL, 0x3fddba41UL, 0x5f2b28d4UL, 0xbfa552f1UL, 0x59f21a6dUL,
+ 0xbfd015abUL, 0x22c27d95UL, 0x3fa0e984UL, 0xe19fc6aaUL, 0x3fd0576cUL,
+ 0x8f2c2950UL, 0xbf9a4898UL, 0xc0b3f22cUL, 0xbfc59462UL, 0x1883a4b8UL,
+ 0x3f94b61cUL, 0x3f838640UL, 0x3fc30eb8UL, 0x355c63dcUL, 0xbfd36a08UL,
+ 0x1dce993dUL, 0x3c6d704dUL, 0x00000000UL, 0x3ff00000UL, 0x2b82ab63UL,
+ 0x3fb78e92UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x5a279ea3UL, 0xbfaa3407UL, 0x00000000UL, 0x00000000UL, 0x432d65faUL,
+ 0x3fa70153UL, 0x00000000UL, 0x00000000UL, 0x891a4602UL, 0xbf9d03efUL,
+ 0xd62ca5f8UL, 0xbfca77d9UL, 0xb35f4628UL, 0x3f97a265UL, 0x433258faUL,
+ 0x3fd8cf51UL, 0xb58fd909UL, 0xbf8f88e3UL, 0x01771ceaUL, 0xbfc2b154UL,
+ 0xf3562f8eUL, 0x3f888f57UL, 0xc028a723UL, 0x3fc7370fUL, 0x20b7f9f0UL,
+ 0xbf80f44cUL, 0x214368e9UL, 0xbfb6dfaaUL, 0x28891863UL, 0x3f79b4b6UL,
+ 0x172dbbf0UL, 0x3fb6cb8eUL, 0xe0553158UL, 0xbfc975f5UL, 0x593fe814UL,
+ 0xbc2ef5d3UL, 0x00000000UL, 0x3ff00000UL, 0x03dec550UL, 0x3fa44203UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x4e435f9bUL,
+ 0xbf953f83UL, 0x00000000UL, 0x00000000UL, 0x3c6e8e46UL, 0x3f9b74eaUL,
+ 0x00000000UL, 0x00000000UL, 0xda5b7511UL, 0xbf85ad63UL, 0xdc230b9bUL,
+ 0xbfb97558UL, 0x26cb3788UL, 0x3f881308UL, 0x76fc4985UL, 0x3fd62ac9UL,
+ 0x77bb08baUL, 0xbf757c85UL, 0xb6247521UL, 0xbfb1381eUL, 0x5922170cUL,
+ 0x3f754e95UL, 0x8746482dUL, 0x3fc27f83UL, 0x11055b30UL, 0xbf64e391UL,
+ 0x3e666320UL, 0xbfa3e609UL, 0x0de9dae3UL, 0x3f6301dfUL, 0x1f1dca06UL,
+ 0x3fafa8aeUL, 0x8c5b2da2UL, 0xbfb936bbUL, 0x4e88f7a5UL, 0xbc587d05UL,
+ 0x00000000UL, 0x3ff00000UL, 0xa8935dd9UL, 0x3f83dde2UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint _MASK_35_tan[] =
+{
+ 0xfffc0000UL, 0xffffffffUL, 0x00000000UL, 0x00000000UL
+};
+
+ALIGNED_(16) juint _Q_11_tan[] =
+{
+ 0xb8fe4d77UL, 0x3f82609aUL
+};
+
+ALIGNED_(16) juint _Q_9_tan[] =
+{
+ 0xbf847a43UL, 0x3f9664a0UL
+};
+
+ALIGNED_(16) juint _Q_7_tan[] =
+{
+ 0x52c4c8abUL, 0x3faba1baUL
+};
+
+ALIGNED_(16) juint _Q_5_tan[] =
+{
+ 0x11092746UL, 0x3fc11111UL
+};
+
+ALIGNED_(16) juint _Q_3_tan[] =
+{
+ 0x55555612UL, 0x3fd55555UL
+};
+
+ALIGNED_(16) juint _PI_INV_TABLE_tan[] =
+{
+ 0x00000000UL, 0x00000000UL, 0xa2f9836eUL, 0x4e441529UL, 0xfc2757d1UL,
+ 0xf534ddc0UL, 0xdb629599UL, 0x3c439041UL, 0xfe5163abUL, 0xdebbc561UL,
+ 0xb7246e3aUL, 0x424dd2e0UL, 0x06492eeaUL, 0x09d1921cUL, 0xfe1deb1cUL,
+ 0xb129a73eUL, 0xe88235f5UL, 0x2ebb4484UL, 0xe99c7026UL, 0xb45f7e41UL,
+ 0x3991d639UL, 0x835339f4UL, 0x9c845f8bUL, 0xbdf9283bUL, 0x1ff897ffUL,
+ 0xde05980fUL, 0xef2f118bUL, 0x5a0a6d1fUL, 0x6d367ecfUL, 0x27cb09b7UL,
+ 0x4f463f66UL, 0x9e5fea2dUL, 0x7527bac7UL, 0xebe5f17bUL, 0x3d0739f7UL,
+ 0x8a5292eaUL, 0x6bfb5fb1UL, 0x1f8d5d08UL, 0x56033046UL, 0xfc7b6babUL,
+ 0xf0cfbc21UL
+};
+
+ALIGNED_(8) juint _PI_4_tan[] =
+{
+ 0x00000000UL, 0x3fe921fbUL, 0x4611a626UL, 0x3e85110bUL
+};
+
+ALIGNED_(8) juint _QQ_2_tan[] =
+{
+ 0x676733afUL, 0x3d32e7b9UL
+};
+
+ALIGNED_(8) juint _ONE_tan[] =
+{
+ 0x00000000UL, 0x3ff00000UL
+};
+
+ALIGNED_(8) juint _TWO_POW_55_tan[] =
+{
+ 0x00000000UL, 0x43600000UL
+};
+
+ALIGNED_(4) juint _TWO_POW_M55_tan[] =
+{
+ 0x00000000UL, 0x3c800000UL
+};
+
+ALIGNED_(4) juint _NEG_ZERO_tan[] =
+{
+ 0x00000000UL, 0x80000000UL
+};
+
+void MacroAssembler::fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register r8, Register r9, Register r10, Register r11) {
+
+ Label L_2TAG_PACKET_0_0_1, L_2TAG_PACKET_1_0_1, L_2TAG_PACKET_2_0_1, L_2TAG_PACKET_3_0_1;
+ Label L_2TAG_PACKET_4_0_1, L_2TAG_PACKET_5_0_1, L_2TAG_PACKET_6_0_1, L_2TAG_PACKET_7_0_1;
+ Label L_2TAG_PACKET_8_0_1, L_2TAG_PACKET_9_0_1, L_2TAG_PACKET_10_0_1, L_2TAG_PACKET_11_0_1;
+ Label L_2TAG_PACKET_12_0_1, L_2TAG_PACKET_13_0_1, L_2TAG_PACKET_14_0_1, B1_2, B1_3, B1_4, B1_5, start;
+
+ address ONEHALF = (address)_ONEHALF_tan;
+ address MUL16 = (address)_MUL16;
+ address sign_mask = (address)_sign_mask_tan;
+ address PI32INV = (address)_PI32INV_tan;
+ address P_1 = (address)_P_1_tan;
+ address P_2 = (address)_P_2_tan;
+ address P_3 = (address)_P_3_tan;
+ address Ctable = (address)_Ctable_tan;
+ address MASK_35 = (address)_MASK_35_tan;
+ address Q_11 = (address)_Q_11_tan;
+ address Q_9 = (address)_Q_9_tan;
+ address Q_7 = (address)_Q_7_tan;
+ address Q_5 = (address)_Q_5_tan;
+ address Q_3 = (address)_Q_3_tan;
+ address PI_INV_TABLE = (address)_PI_INV_TABLE_tan;
+ address PI_4 = (address)_PI_4_tan;
+ address QQ_2 = (address)_QQ_2_tan;
+ address ONE = (address)_ONE_tan;
+ address TWO_POW_55 = (address)_TWO_POW_55_tan;
+ address TWO_POW_M55 = (address)_TWO_POW_M55_tan;
+ address NEG_ZERO = (address)_NEG_ZERO_tan;
+
+ bind(start);
+ push(rbx);
+ subq(rsp, 16);
+ movsd(Address(rsp, 8), xmm0);
+
+ bind(B1_2);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ subl(eax, 16314);
+ cmpl(eax, 270);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_1);
+ movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movdqu(xmm6, ExternalAddress(MUL16)); //0x00000000UL, 0x40300000UL, 0x00000000UL, 0x3ff00000UL
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm4, ExternalAddress(sign_mask)); //0x00000000UL, 0x80000000UL, 0x00000000UL, 0x80000000UL
+ andpd(xmm4, xmm0);
+ movdqu(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x3fe45f30UL, 0x6dc9c883UL, 0x40245f30UL
+ mulpd(xmm1, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ movdqu(xmm7, xmm1);
+ unpckhpd(xmm7, xmm7);
+ cvttsd2sil(edx, xmm7);
+ cvttpd2dq(xmm1, xmm1);
+ cvtdq2pd(xmm1, xmm1);
+ mulpd(xmm1, xmm6);
+ movdqu(xmm3, ExternalAddress(P_1)); //0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL
+ movq(xmm5, ExternalAddress(QQ_2)); //0x676733afUL, 0x3d32e7b9UL
+ addq(rdx, 469248);
+ movdqu(xmm4, ExternalAddress(P_2)); //0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL
+ mulpd(xmm3, xmm1);
+ andq(rdx, 31);
+ mulsd(xmm5, xmm1);
+ movq(rcx, rdx);
+ mulpd(xmm4, xmm1);
+ shlq(rcx, 1);
+ subpd(xmm0, xmm3);
+ mulpd(xmm1, ExternalAddress(P_3)); //0x3707344aUL, 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL
+ addq(rdx, rcx);
+ shlq(rcx, 2);
+ addq(rdx, rcx);
+ addsd(xmm5, xmm0);
+ movdqu(xmm2, xmm0);
+ subpd(xmm0, xmm4);
+ movq(xmm6, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
+ shlq(rdx, 4);
+ lea(rax, ExternalAddress(Ctable));
+ andpd(xmm5, ExternalAddress(MASK_35)); //0xfffc0000UL, 0xffffffffUL, 0x00000000UL, 0x00000000UL
+ movdqu(xmm3, xmm0);
+ addq(rax, rdx);
+ subpd(xmm2, xmm0);
+ unpckhpd(xmm0, xmm0);
+ divsd(xmm6, xmm5);
+ subpd(xmm2, xmm4);
+ movdqu(xmm7, Address(rax, 16));
+ subsd(xmm3, xmm5);
+ mulpd(xmm7, xmm0);
+ subpd(xmm2, xmm1);
+ movdqu(xmm1, Address(rax, 48));
+ mulpd(xmm1, xmm0);
+ movdqu(xmm4, Address(rax, 96));
+ mulpd(xmm4, xmm0);
+ addsd(xmm2, xmm3);
+ movdqu(xmm3, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm7, Address(rax, 0));
+ addpd(xmm1, Address(rax, 32));
+ mulpd(xmm1, xmm0);
+ addpd(xmm4, Address(rax, 80));
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, Address(rax, 112));
+ mulpd(xmm1, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm4, xmm1);
+ movdqu(xmm1, Address(rax, 64));
+ mulpd(xmm1, xmm0);
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, xmm3);
+ mulpd(xmm3, xmm0);
+ mulsd(xmm0, xmm0);
+ mulpd(xmm1, Address(rax, 144));
+ mulpd(xmm4, xmm3);
+ movdqu(xmm3, xmm1);
+ addpd(xmm7, xmm4);
+ movdqu(xmm4, xmm1);
+ mulsd(xmm0, xmm7);
+ unpckhpd(xmm7, xmm7);
+ addsd(xmm0, xmm7);
+ unpckhpd(xmm1, xmm1);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ movdqu(xmm4, xmm2);
+ movq(xmm7, Address(rax, 144));
+ unpckhpd(xmm2, xmm2);
+ addsd(xmm7, Address(rax, 152));
+ mulsd(xmm7, xmm2);
+ addsd(xmm7, Address(rax, 136));
+ addsd(xmm7, xmm1);
+ addsd(xmm0, xmm7);
+ movq(xmm7, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
+ mulsd(xmm4, xmm6);
+ movq(xmm2, Address(rax, 168));
+ andpd(xmm2, xmm6);
+ mulsd(xmm5, xmm2);
+ mulsd(xmm6, Address(rax, 160));
+ subsd(xmm7, xmm5);
+ subsd(xmm2, Address(rax, 128));
+ subsd(xmm7, xmm4);
+ mulsd(xmm7, xmm6);
+ movdqu(xmm4, xmm3);
+ subsd(xmm3, xmm2);
+ addsd(xmm2, xmm3);
+ subsd(xmm4, xmm2);
+ addsd(xmm0, xmm4);
+ subsd(xmm0, xmm7);
+ addsd(xmm0, xmm3);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_0_0_1);
+ jcc(Assembler::greater, L_2TAG_PACKET_1_0_1);
+ pextrw(eax, xmm0, 3);
+ movl(edx, eax);
+ andl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_2_0_1);
+ andl(edx, 32767);
+ cmpl(edx, 15904);
+ jcc(Assembler::below, L_2TAG_PACKET_3_0_1);
+ movdqu(xmm2, xmm0);
+ movdqu(xmm3, xmm0);
+ movq(xmm1, ExternalAddress(Q_11)); //0xb8fe4d77UL, 0x3f82609aUL
+ mulsd(xmm2, xmm0);
+ mulsd(xmm3, xmm2);
+ mulsd(xmm1, xmm2);
+ addsd(xmm1, ExternalAddress(Q_9)); //0xbf847a43UL, 0x3f9664a0UL
+ mulsd(xmm1, xmm2);
+ addsd(xmm1, ExternalAddress(Q_7)); //0x52c4c8abUL, 0x3faba1baUL
+ mulsd(xmm1, xmm2);
+ addsd(xmm1, ExternalAddress(Q_5)); //0x11092746UL, 0x3fc11111UL
+ mulsd(xmm1, xmm2);
+ addsd(xmm1, ExternalAddress(Q_3)); //0x55555612UL, 0x3fd55555UL
+ mulsd(xmm1, xmm3);
+ addsd(xmm0, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_3_0_1);
+ movq(xmm3, ExternalAddress(TWO_POW_55)); //0x00000000UL, 0x43600000UL
+ mulsd(xmm3, xmm0);
+ addsd(xmm0, xmm3);
+ mulsd(xmm0, ExternalAddress(TWO_POW_M55)); //0x00000000UL, 0x3c800000UL
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_2_0_1);
+ movdqu(xmm1, xmm0);
+ mulsd(xmm1, xmm1);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_1_0_1);
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32752);
+ cmpl(eax, 32752);
+ jcc(Assembler::equal, L_2TAG_PACKET_4_0_1);
+ pextrw(ecx, xmm0, 3);
+ andl(ecx, 32752);
+ subl(ecx, 16224);
+ shrl(ecx, 7);
+ andl(ecx, 65532);
+ lea(r11, ExternalAddress(PI_INV_TABLE));
+ addq(rcx, r11);
+ movdq(rax, xmm0);
+ movl(r10, Address(rcx, 20));
+ movl(r8, Address(rcx, 24));
+ movl(edx, eax);
+ shrq(rax, 21);
+ orl(eax, INT_MIN);
+ shrl(eax, 11);
+ movl(r9, r10);
+ imulq(r10, rdx);
+ imulq(r9, rax);
+ imulq(r8, rax);
+ movl(rsi, Address(rcx, 16));
+ movl(rdi, Address(rcx, 12));
+ movl(r11, r10);
+ shrq(r10, 32);
+ addq(r9, r10);
+ addq(r11, r8);
+ movl(r8, r11);
+ shrq(r11, 32);
+ addq(r9, r11);
+ movl(r10, rsi);
+ imulq(rsi, rdx);
+ imulq(r10, rax);
+ movl(r11, rdi);
+ imulq(rdi, rdx);
+ movl(rbx, rsi);
+ shrq(rsi, 32);
+ addq(r9, rbx);
+ movl(rbx, r9);
+ shrq(r9, 32);
+ addq(r10, rsi);
+ addq(r10, r9);
+ shlq(rbx, 32);
+ orq(r8, rbx);
+ imulq(r11, rax);
+ movl(r9, Address(rcx, 8));
+ movl(rsi, Address(rcx, 4));
+ movl(rbx, rdi);
+ shrq(rdi, 32);
+ addq(r10, rbx);
+ movl(rbx, r10);
+ shrq(r10, 32);
+ addq(r11, rdi);
+ addq(r11, r10);
+ movq(rdi, r9);
+ imulq(r9, rdx);
+ imulq(rdi, rax);
+ movl(r10, r9);
+ shrq(r9, 32);
+ addq(r11, r10);
+ movl(r10, r11);
+ shrq(r11, 32);
+ addq(rdi, r9);
+ addq(rdi, r11);
+ movq(r9, rsi);
+ imulq(rsi, rdx);
+ imulq(r9, rax);
+ shlq(r10, 32);
+ orq(r10, rbx);
+ movl(eax, Address(rcx, 0));
+ movl(r11, rsi);
+ shrq(rsi, 32);
+ addq(rdi, r11);
+ movl(r11, rdi);
+ shrq(rdi, 32);
+ addq(r9, rsi);
+ addq(r9, rdi);
+ imulq(rdx, rax);
+ pextrw(rbx, xmm0, 3);
+ lea(rdi, ExternalAddress(PI_INV_TABLE));
+ subq(rcx, rdi);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, ecx);
+ addl(ecx, 19);
+ movl(rsi, 32768);
+ andl(rsi, rbx);
+ shrl(rbx, 4);
+ andl(rbx, 2047);
+ subl(rbx, 1023);
+ subl(ecx, rbx);
+ addq(r9, rdx);
+ movl(edx, ecx);
+ addl(edx, 32);
+ cmpl(ecx, 0);
+ jcc(Assembler::less, L_2TAG_PACKET_5_0_1);
+ negl(ecx);
+ addl(ecx, 29);
+ shll(r9);
+ movl(rdi, r9);
+ andl(r9, 1073741823);
+ testl(r9, 536870912);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_6_0_1);
+ shrl(r9);
+ movl(rbx, 0);
+ shlq(r9, 32);
+ orq(r9, r11);
+
+ bind(L_2TAG_PACKET_7_0_1);
+
+ bind(L_2TAG_PACKET_8_0_1);
+ cmpq(r9, 0);
+ jcc(Assembler::equal, L_2TAG_PACKET_9_0_1);
+
+ bind(L_2TAG_PACKET_10_0_1);
+ bsrq(r11, r9);
+ movl(ecx, 29);
+ subl(ecx, r11);
+ jcc(Assembler::lessEqual, L_2TAG_PACKET_11_0_1);
+ shlq(r9);
+ movq(rax, r10);
+ shlq(r10);
+ addl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shrq(rax);
+ shrq(r8);
+ orq(r9, rax);
+ orq(r10, r8);
+
+ bind(L_2TAG_PACKET_12_0_1);
+ cvtsi2sdq(xmm0, r9);
+ shrq(r10, 1);
+ cvtsi2sdq(xmm3, r10);
+ xorpd(xmm4, xmm4);
+ shll(edx, 4);
+ negl(edx);
+ addl(edx, 16368);
+ orl(edx, rsi);
+ xorl(edx, rbx);
+ pinsrw(xmm4, edx, 3);
+ movq(xmm2, ExternalAddress(PI_4)); //0x00000000UL, 0x3fe921fbUL, 0x4611a626UL, 0x3e85110bUL
+ movq(xmm7, ExternalAddress(8 + PI_4)); //0x3fe921fbUL, 0x4611a626UL, 0x3e85110bUL
+ xorpd(xmm5, xmm5);
+ subl(edx, 1008);
+ pinsrw(xmm5, edx, 3);
+ mulsd(xmm0, xmm4);
+ shll(rsi, 16);
+ sarl(rsi, 31);
+ mulsd(xmm3, xmm5);
+ movdqu(xmm1, xmm0);
+ mulsd(xmm0, xmm2);
+ shrl(rdi, 30);
+ addsd(xmm1, xmm3);
+ mulsd(xmm3, xmm2);
+ addl(rdi, rsi);
+ xorl(rdi, rsi);
+ mulsd(xmm7, xmm1);
+ movl(eax, rdi);
+ addsd(xmm7, xmm3);
+ movdqu(xmm2, xmm0);
+ addsd(xmm0, xmm7);
+ subsd(xmm2, xmm0);
+ addsd(xmm7, xmm2);
+ movdqu(xmm1, ExternalAddress(PI32INV)); //0x6dc9c883UL, 0x3fe45f30UL, 0x6dc9c883UL, 0x40245f30UL
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm0, xmm0);
+ }
+ else {
+ movlhps(xmm0, xmm0);
+ }
+ movdqu(xmm4, ExternalAddress(sign_mask)); //0x00000000UL, 0x80000000UL, 0x00000000UL, 0x80000000UL
+ andpd(xmm4, xmm0);
+ mulpd(xmm1, xmm0);
+ if (VM_Version::supports_sse3()) {
+ movddup(xmm7, xmm7);
+ }
+ else {
+ movlhps(xmm7, xmm7);
+ }
+ movdqu(xmm5, ExternalAddress(ONEHALF)); //0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL
+ movdqu(xmm6, ExternalAddress(MUL16)); //0x00000000UL, 0x40300000UL, 0x00000000UL, 0x3ff00000UL
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ movdqu(xmm5, xmm1);
+ unpckhpd(xmm5, xmm5);
+ cvttsd2sil(edx, xmm5);
+ cvttpd2dq(xmm1, xmm1);
+ cvtdq2pd(xmm1, xmm1);
+ mulpd(xmm1, xmm6);
+ movdqu(xmm3, ExternalAddress(P_1)); //0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL
+ movq(xmm5, ExternalAddress(QQ_2)); //0x676733afUL, 0x3d32e7b9UL
+ shll(eax, 4);
+ addl(edx, 469248);
+ movdqu(xmm4, ExternalAddress(P_2)); //0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL
+ mulpd(xmm3, xmm1);
+ addl(edx, eax);
+ andl(edx, 31);
+ mulsd(xmm5, xmm1);
+ movl(ecx, edx);
+ mulpd(xmm4, xmm1);
+ shll(ecx, 1);
+ subpd(xmm0, xmm3);
+ mulpd(xmm1, ExternalAddress(P_3)); //0x3707344aUL, 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL
+ addl(edx, ecx);
+ shll(ecx, 2);
+ addl(edx, ecx);
+ addsd(xmm5, xmm0);
+ movdqu(xmm2, xmm0);
+ subpd(xmm0, xmm4);
+ movq(xmm6, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
+ shll(edx, 4);
+ lea(rax, ExternalAddress(Ctable));
+ andpd(xmm5, ExternalAddress(MASK_35)); //0xfffc0000UL, 0xffffffffUL, 0x00000000UL, 0x00000000UL
+ movdqu(xmm3, xmm0);
+ addq(rax, rdx);
+ subpd(xmm2, xmm0);
+ unpckhpd(xmm0, xmm0);
+ divsd(xmm6, xmm5);
+ subpd(xmm2, xmm4);
+ subsd(xmm3, xmm5);
+ subpd(xmm2, xmm1);
+ movdqu(xmm1, Address(rax, 48));
+ addpd(xmm2, xmm7);
+ movdqu(xmm7, Address(rax, 16));
+ mulpd(xmm7, xmm0);
+ movdqu(xmm4, Address(rax, 96));
+ mulpd(xmm1, xmm0);
+ mulpd(xmm4, xmm0);
+ addsd(xmm2, xmm3);
+ movdqu(xmm3, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm7, Address(rax, 0));
+ addpd(xmm1, Address(rax, 32));
+ mulpd(xmm1, xmm0);
+ addpd(xmm4, Address(rax, 80));
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, Address(rax, 112));
+ mulpd(xmm1, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm4, xmm1);
+ movdqu(xmm1, Address(rax, 64));
+ mulpd(xmm1, xmm0);
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, xmm3);
+ mulpd(xmm3, xmm0);
+ mulsd(xmm0, xmm0);
+ mulpd(xmm1, Address(rax, 144));
+ mulpd(xmm4, xmm3);
+ movdqu(xmm3, xmm1);
+ addpd(xmm7, xmm4);
+ movdqu(xmm4, xmm1);
+ mulsd(xmm0, xmm7);
+ unpckhpd(xmm7, xmm7);
+ addsd(xmm0, xmm7);
+ unpckhpd(xmm1, xmm1);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ movdqu(xmm4, xmm2);
+ movq(xmm7, Address(rax, 144));
+ unpckhpd(xmm2, xmm2);
+ addsd(xmm7, Address(rax, 152));
+ mulsd(xmm7, xmm2);
+ addsd(xmm7, Address(rax, 136));
+ addsd(xmm7, xmm1);
+ addsd(xmm0, xmm7);
+ movq(xmm7, ExternalAddress(ONE)); //0x00000000UL, 0x3ff00000UL
+ mulsd(xmm4, xmm6);
+ movq(xmm2, Address(rax, 168));
+ andpd(xmm2, xmm6);
+ mulsd(xmm5, xmm2);
+ mulsd(xmm6, Address(rax, 160));
+ subsd(xmm7, xmm5);
+ subsd(xmm2, Address(rax, 128));
+ subsd(xmm7, xmm4);
+ mulsd(xmm7, xmm6);
+ movdqu(xmm4, xmm3);
+ subsd(xmm3, xmm2);
+ addsd(xmm2, xmm3);
+ subsd(xmm4, xmm2);
+ addsd(xmm0, xmm4);
+ subsd(xmm0, xmm7);
+ addsd(xmm0, xmm3);
+ jmp(B1_4);
+
+ bind(L_2TAG_PACKET_9_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ movl(r8, 0);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_1);
+ addl(edx, 64);
+ movq(r9, r10);
+ movq(r10, r8);
+ cmpq(r9, 0);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_10_0_1);
+ jmp(L_2TAG_PACKET_12_0_1);
+
+ bind(L_2TAG_PACKET_11_0_1);
+ jcc(Assembler::equal, L_2TAG_PACKET_12_0_1);
+ negl(ecx);
+ shrq(r10);
+ movq(rax, r9);
+ shrq(r9);
+ subl(edx, ecx);
+ negl(ecx);
+ addl(ecx, 64);
+ shlq(rax);
+ orq(r10, rax);
+ jmp(L_2TAG_PACKET_12_0_1);
+
+ bind(L_2TAG_PACKET_5_0_1);
+ notl(ecx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(r9);
+ movq(rdi, r9);
+ testl(r9, INT_MIN);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_13_0_1);
+ shrl(r9);
+ movl(rbx, 0);
+ shrq(rdi, 2);
+ jmp(L_2TAG_PACKET_8_0_1);
+
+ bind(L_2TAG_PACKET_6_0_1);
+ shrl(r9);
+ movl(rbx, 1073741824);
+ shrl(rbx);
+ shlq(r9, 32);
+ orq(r9, r11);
+ shlq(rbx, 32);
+ addl(rdi, 1073741824);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(rbx, 32768);
+ jmp(L_2TAG_PACKET_7_0_1);
+
+ bind(L_2TAG_PACKET_13_0_1);
+ shrl(r9);
+ mov64(rbx, 0x100000000);
+ shrq(rbx);
+ movl(rcx, 0);
+ movl(r11, 0);
+ subq(rcx, r8);
+ sbbq(r11, r10);
+ sbbq(rbx, r9);
+ movq(r8, rcx);
+ movq(r10, r11);
+ movq(r9, rbx);
+ movl(rbx, 32768);
+ shrq(rdi, 2);
+ addl(rdi, 1073741824);
+ jmp(L_2TAG_PACKET_8_0_1);
+
+ bind(L_2TAG_PACKET_4_0_1);
+ movq(xmm0, Address(rsp, 8));
+ mulsd(xmm0, ExternalAddress(NEG_ZERO)); //0x00000000UL, 0x80000000UL
+ movq(Address(rsp, 0), xmm0);
+
+ bind(L_2TAG_PACKET_14_0_1);
+
+ bind(B1_4);
+ addq(rsp, 16);
+
+}
+#else
+// The 32 bit code is at most SSE2 compliant
+ALIGNED_(16) jushort _TP[] =
+{
+ 0x4cd6, 0xaf6c, 0xc710, 0xc662, 0xbffd, 0x0000, 0x4b06, 0xb0ac, 0xd3b2, 0xcc2c,
+ 0x3ff9, 0x0000, 0x00e3, 0xc850, 0xaa28, 0x9533, 0xbff3, 0x0000, 0x2ff0, 0x466d,
+ 0x1a3b, 0xb266, 0x3fe5, 0x0000
+};
+
+ALIGNED_(16) jushort _TQ[] =
+{
+ 0x399c, 0x8391, 0x154c, 0x94ca, 0xbfff, 0x0000, 0xb6a3, 0xc36a, 0x44e2, 0x8a2c,
+ 0x3ffe, 0x0000, 0xb70f, 0xd068, 0xa6ce, 0xe9dd, 0xbff9, 0x0000, 0x820f, 0x51ce,
+ 0x7d76, 0x9bff, 0x3ff3, 0x0000
+};
+
+ALIGNED_(16) jushort _GP[] =
+{
+ 0xaaab, 0xaaaa, 0xaaaa, 0xaaaa, 0xbffd, 0x0000, 0xb62f, 0x0b60, 0x60b6, 0xb60b,
+ 0xbff9, 0x0000, 0xdfa7, 0x08aa, 0x55e0, 0x8ab3, 0xbff6, 0x0000, 0x85a0, 0xa819,
+ 0xbc99, 0xddeb, 0xbff2, 0x0000, 0x7065, 0x6a37, 0x795f, 0xb354, 0xbfef, 0x0000,
+ 0xa8f9, 0x83f1, 0x2ec8, 0x9140, 0xbfec, 0x0000, 0xf3ca, 0x8c96, 0x8e0b, 0xeb6d,
+ 0xbfe8, 0x0000, 0x355b, 0xd910, 0x67c9, 0xbed3, 0xbfe5, 0x0000, 0x286b, 0xb49e,
+ 0xb854, 0x9a98, 0xbfe2, 0x0000, 0x0871, 0x1a2f, 0x6477, 0xfcc4, 0xbfde, 0x0000,
+ 0xa559, 0x1da9, 0xaed2, 0xba76, 0xbfdb, 0x0000, 0x00a3, 0x7fea, 0x9bc3, 0xf205,
+ 0xbfd8, 0x0000
+};
+
+void MacroAssembler::libm_tancot_huge(XMMRegister xmm0, XMMRegister xmm1, Register eax, Register ecx, Register edx, Register ebx, Register esi, Register edi, Register ebp, Register esp) {
+ Label B1_1, B1_2, B1_3, B1_4, B1_5, B1_6, B1_7, B1_8, B1_9, B1_10, B1_11, B1_12;
+ Label B1_13, B1_14, B1_15, B1_16, B1_17, B1_18, B1_19, B1_20, B1_21, B1_22, B1_23;
+ Label B1_24, B1_25, B1_26, B1_27, B1_28, B1_29, B1_30, B1_31, B1_32, B1_33, B1_34;
+ Label B1_35, B1_36, B1_37, B1_38, B1_39, B1_40, B1_41, B1_42, B1_43, B1_44, B1_45, B1_46;
+
+ assert_different_registers(ebx, eax, ecx, edx, esi, edi, ebp, esp);
+
+ address L_2il0floatpacket_0 = StubRoutines::x86::_L_2il0floatpacket_0_addr();
+ address Pi4Inv = StubRoutines::x86::_Pi4Inv_addr();
+ address Pi4x3 = StubRoutines::x86::_Pi4x3_addr();
+ address Pi4x4 = StubRoutines::x86::_Pi4x4_addr();
+ address ones = StubRoutines::x86::_ones_addr();
+ address TP = (address)_TP;
+ address TQ = (address)_TQ;
+ address GP = (address)_GP;
+
+ bind(B1_1);
+ push(ebp);
+ movl(ebp, esp);
+ andl(esp, -64);
+ push(esi);
+ push(edi);
+ push(ebx);
+ subl(esp, 52);
+ movl(eax, Address(ebp, 16));
+ movl(ebx, Address(ebp, 20));
+ movl(Address(esp, 40), eax);
+
+ bind(B1_2);
+ fnstcw(Address(esp, 38));
+
+ bind(B1_3);
+ movl(edx, Address(ebp, 12));
+ movl(eax, edx);
+ andl(eax, 2147483647);
+ shrl(edx, 31);
+ movl(Address(esp, 44), edx);
+ cmpl(eax, 1104150528);
+ jcc(Assembler::aboveEqual, B1_11);
+
+ bind(B1_4);
+ movsd(xmm1, Address(ebp, 8));
+ movzwl(ecx, Address(esp, 38));
+ movl(edx, ecx);
+ andl(edx, 768);
+ andps(xmm1, ExternalAddress(L_2il0floatpacket_0)); //0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
+ cmpl(edx, 768);
+ movsd(xmm0, ExternalAddress(Pi4Inv)); ////0x6dc9c883UL, 0x3ff45f30UL
+ mulsd(xmm0, xmm1);
+ movsd(Address(ebp, 8), xmm1);
+ movsd(Address(esp, 0), xmm0);
+ jcc(Assembler::equal, B1_39);
+
+ bind(B1_5);
+ orl(ecx, -64768);
+ movw(Address(esp, 36), ecx);
+
+ bind(B1_6);
+ fldcw(Address(esp, 36));
+
+ bind(B1_7);
+ movsd(xmm1, Address(ebp, 8));
+ movl(edi, 1);
+
+ bind(B1_8);
+ movl(Address(esp, 12), esi);
+ movl(esi, Address(esp, 4));
+ movl(edx, esi);
+ movl(Address(esp, 24), edi);
+ movl(edi, esi);
+ shrl(edi, 20);
+ andl(edx, 1048575);
+ movl(ecx, edi);
+ orl(edx, 1048576);
+ negl(ecx);
+ addl(edi, 13);
+ movl(Address(esp, 8), ebx);
+ addl(ecx, 19);
+ movl(ebx, edx);
+ movl(Address(esp, 28), ecx);
+ shrl(ebx);
+ movl(ecx, edi);
+ shll(edx);
+ movl(ecx, Address(esp, 28));
+ movl(edi, Address(esp, 0));
+ shrl(edi);
+ orl(edx, edi);
+ cmpl(esi, 1094713344);
+ movsd(Address(esp, 16), xmm1);
+ fld_d(Address(esp, 16));
+ cmov32(Assembler::below, edx, ebx);
+ movl(edi, Address(esp, 24));
+ movl(esi, Address(esp, 12));
+ lea(ebx, Address(edx, 1));
+ andl(ebx, -2);
+ movl(Address(esp, 16), ebx);
+ cmpl(eax, 1094713344);
+ fild_s(Address(esp, 16));
+ movl(ebx, Address(esp, 8));
+ jcc(Assembler::aboveEqual, B1_10);
+
+ bind(B1_9);
+ fld_d(ExternalAddress(Pi4x3)); //0x54443000UL, 0xbfe921fbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(8 + Pi4x3)); //0x3b39a000UL, 0x3d373dcbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(16 + Pi4x3)); //0xe0e68948UL, 0xba845c06UL
+ fmulp(1);
+ faddp(1);
+ jmp(B1_17);
+
+ bind(B1_10);
+ fld_d(ExternalAddress(Pi4x4)); //0x54400000UL, 0xbfe921fbUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(8 + Pi4x4)); //0x1a600000UL, 0xbdc0b461UL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(16 + Pi4x4)); //0x2e000000UL, 0xbb93198aUL
+ fmul(1);
+ faddp(2);
+ fld_d(ExternalAddress(24 + Pi4x4)); //0x252049c1UL, 0xb96b839aUL
+ fmulp(1);
+ faddp(1);
+ jmp(B1_17);
+
+ bind(B1_11);
+ movzwl(edx, Address(esp, 38));
+ movl(eax, edx);
+ andl(eax, 768);
+ cmpl(eax, 768);
+ jcc(Assembler::equal, B1_40);
+
+ bind(B1_12);
+ orl(edx, -64768);
+ movw(Address(esp, 36), edx);
+
+ bind(B1_13);
+ fldcw(Address(esp, 36));
+
+ bind(B1_14);
+ movl(edi, 1);
+
+ bind(B1_15);
+ movsd(xmm0, Address(ebp, 8));
+ addl(esp, -32);
+ andps(xmm0, ExternalAddress(L_2il0floatpacket_0)); //0xffffffffUL, 0x7fffffffUL, 0x00000000UL, 0x00000000UL
+ lea(eax, Address(esp, 32));
+ movsd(Address(eax, 16), xmm0);
+ fld_d(Address(eax, 16));
+ fstp_x(Address(esp, 0));
+ movl(Address(esp, 12), 0);
+ movl(Address(esp, 16), eax);
+ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_reduce_pi04l())));
+
+ bind(B1_43);
+ movl(edx, eax);
+ addl(esp, 32);
+
+ bind(B1_16);
+ fld_d(Address(esp, 0));
+ fld_d(Address(esp, 8));
+ faddp(1);
+
+ bind(B1_17);
+ movl(eax, ebx);
+ andl(eax, 3);
+ cmpl(eax, 3);
+ jcc(Assembler::notEqual, B1_24);
+
+ bind(B1_18);
+ fld_d(ExternalAddress(ones));
+ incl(edx);
+ fdiv(1);
+ testb(edx, 2);
+ fstp_x(Address(esp, 24));
+ fld_s(0);
+ fmul(1);
+ fld_s(0);
+ fmul(1);
+ fld_x(ExternalAddress(36 + TP)); //0x2ff0, 0x466d, 0x1a
+ fmul(2);
+ fld_x(ExternalAddress(24 + TP)); //0x00e3, 0xc850, 0xaa
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(12 + TP)); //0x4b06, 0xb0ac, 0xd3
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(36 + TQ)); //0x820f, 0x51ce, 0x7d
+ fmul(3);
+ fld_x(ExternalAddress(24 + TQ)); //0xb70f, 0xd068, 0xa6
+ faddp(1);
+ fmul(3);
+ fld_x(ExternalAddress(12 + TQ)); //0xb6a3, 0xc36a, 0x44
+ faddp(1);
+ fmul(3);
+ fld_x(ExternalAddress(TQ)); //0x399c, 0x8391, 0x15
+ faddp(1);
+ fld_x(ExternalAddress(TP)); //0x4cd6, 0xaf6c, 0xc7
+ faddp(2);
+ fld_x(ExternalAddress(132 + GP)); //0x00a3, 0x7fea, 0x9b
+ fmul(3);
+ fld_x(ExternalAddress(120 + GP)); //0xa559, 0x1da9, 0xae
+ fmul(4);
+ fld_x(ExternalAddress(108 + GP)); //0x0871, 0x1a2f, 0x64
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(96 + GP)); //0x286b, 0xb49e, 0xb8
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(84 + GP)); //0x355b, 0xd910, 0x67
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(72 + GP)); //0x8c96, 0x8e0b, 0xeb
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(60 + GP)); //0xa8f9, 0x83f1, 0x2e
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(48 + GP)); //0x7065, 0x6a37, 0x79
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(36 + GP)); //0x85a0, 0xa819, 0xbc
+ faddp(2);
+ fxch(1);
+ fmul(4);
+ fld_x(ExternalAddress(24 + GP)); //0xdfa7, 0x08aa, 0x55
+ faddp(2);
+ fxch(1);
+ fmulp(4);
+ fld_x(ExternalAddress(12 + GP)); //0xb62f, 0x0b60, 0x60
+ faddp(1);
+ fmul(4);
+ fmul(5);
+ fld_x(ExternalAddress(GP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(4);
+ fxch(3);
+ fmul(5);
+ faddp(3);
+ jcc(Assembler::equal, B1_20);
+
+ bind(B1_19);
+ fld_x(Address(esp, 24));
+ fxch(1);
+ fdivrp(2);
+ fxch(1);
+ fmulp(3);
+ movl(eax, Address(esp, 44));
+ xorl(eax, 1);
+ fxch(2);
+ fmul(3);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(2);
+ fmula(3);
+ fxch(3);
+ faddp(2);
+ fxch(1);
+ fstp_d(Address(esp, 16));
+ fmul(1);
+ fxch(1);
+ fmulp(2);
+ movsd(xmm0, Address(esp, 16));
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm1, Address(esp, 16));
+ jmp(B1_21);
+
+ bind(B1_20);
+ fdivrp(1);
+ fmulp(2);
+ fxch(1);
+ fmul(2);
+ movl(eax, Address(esp, 44));
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(1);
+ fmula(3);
+ fxch(3);
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ fmul(1);
+ fld_x(Address(esp, 24));
+ fmulp(2);
+ movsd(xmm0, Address(esp, 16));
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm1, Address(esp, 16));
+
+ bind(B1_21);
+ testl(edi, edi);
+ jcc(Assembler::equal, B1_23);
+
+ bind(B1_22);
+ fldcw(Address(esp, 38));
+
+ bind(B1_23);
+ movl(eax, Address(esp, 40));
+ movsd(Address(eax, 0), xmm0);
+ movsd(Address(eax, 8), xmm1);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_24);
+ testb(ebx, 2);
+ jcc(Assembler::equal, B1_31);
+
+ bind(B1_25);
+ incl(edx);
+ fld_s(0);
+ fmul(1);
+ testb(edx, 2);
+ jcc(Assembler::equal, B1_27);
+
+ bind(B1_26);
+ fld_d(ExternalAddress(ones));
+ fdiv(2);
+ fld_s(1);
+ fmul(2);
+ fld_x(ExternalAddress(132 + GP)); //0x00a3, 0x7fea, 0x9b
+ fmul(1);
+ fld_x(ExternalAddress(120 + GP)); //0xa559, 0x1da9, 0xae
+ fmul(2);
+ fld_x(ExternalAddress(108 + GP)); //0x67c9, 0xbed3, 0xbf
+ movl(eax, Address(esp, 44));
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ xorl(eax, 1);
+ fld_x(ExternalAddress(96 + GP)); //0x286b, 0xb49e, 0xb8
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(84 + GP)); //0x355b, 0xd910, 0x67
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(72 + GP)); //0xf3ca, 0x8c96, 0x8e
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(60 + GP)); //0xa8f9, 0x83f1, 0x2e
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(48 + GP)); //0x7065, 0x6a37, 0x79
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(36 + GP)); //0x85a0, 0xa819, 0xbc
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(24 + GP)); //0xdfa7, 0x08aa, 0x55
+ faddp(2);
+ fxch(1);
+ fmulp(2);
+ fld_x(ExternalAddress(12 + GP)); //0xb62f, 0x0b60, 0x60
+ faddp(1);
+ fmulp(3);
+ fld_x(ExternalAddress(GP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(1);
+ fmul(3);
+ fxch(2);
+ fmulp(3);
+ fxch(1);
+ faddp(2);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(2);
+ fmulp(1);
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm0, Address(esp, 16));
+ jmp(B1_28);
+
+ bind(B1_27);
+ fld_x(ExternalAddress(36 + TP)); //0x2ff0, 0x466d, 0x1a
+ fmul(1);
+ fld_x(ExternalAddress(24 + TP)); //0x00e3, 0xc850, 0xaa
+ movl(eax, Address(esp, 44));
+ faddp(1);
+ fmul(1);
+ fld_x(ExternalAddress(36 + TQ)); //0x820f, 0x51ce, 0x7d
+ fmul(2);
+ fld_x(ExternalAddress(24 + TQ)); //0xb70f, 0xd068, 0xa6
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(12 + TQ)); //0xb6a3, 0xc36a, 0x44
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(TQ)); //0x399c, 0x8391, 0x15
+ faddp(1);
+ fld_x(ExternalAddress(12 + TP)); //0x4b06, 0xb0ac, 0xd3
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(TP)); //0x4cd6, 0xaf6c, 0xc7
+ faddp(1);
+ fdivrp(1);
+ fmulp(1);
+ fmul(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(1);
+ fmulp(2);
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm0, Address(esp, 16));
+
+ bind(B1_28);
+ testl(edi, edi);
+ jcc(Assembler::equal, B1_30);
+
+ bind(B1_29);
+ fldcw(Address(esp, 38));
+
+ bind(B1_30);
+ movl(eax, Address(esp, 40));
+ movsd(Address(eax, 0), xmm0);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ movl(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_31);
+ testb(ebx, 1);
+ jcc(Assembler::equal, B1_38);
+
+ bind(B1_32);
+ incl(edx);
+ fld_s(0);
+ fmul(1);
+ testb(edx, 2);
+ jcc(Assembler::equal, B1_34);
+
+ bind(B1_33);
+ fld_x(ExternalAddress(36 + TP)); //0x2ff0, 0x466d, 0x1a
+ fmul(1);
+ fld_x(ExternalAddress(24 + TP)); //0x00e3, 0xc850, 0xaa
+ movl(eax, Address(esp, 44));
+ faddp(1);
+ fmul(1);
+ xorl(eax, 1);
+ fld_x(ExternalAddress(36 + TQ)); //0x820f, 0x51ce, 0x7d
+ fmul(2);
+ fld_x(ExternalAddress(24 + TQ)); //0xb70f, 0xd068, 0xa6
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(12 + TQ)); //0xb6a3, 0xc36a, 0x44
+ faddp(1);
+ fmul(2);
+ fld_x(ExternalAddress(TQ)); //0x399c, 0x8391, 0x15
+ faddp(1);
+ fld_x(ExternalAddress(12 + TP)); //0x4b06, 0xb0ac, 0xd3
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(TP)); //0x4cd6, 0xaf6c, 0xc7
+ faddp(1);
+ fdivrp(1);
+ fmulp(1);
+ fmul(1);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(1);
+ fmulp(2);
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm0, Address(esp, 16));
+ jmp(B1_35);
+
+ bind(B1_34);
+ fld_d(ExternalAddress(ones));
+ fdiv(2);
+ fld_s(1);
+ fmul(2);
+ fld_x(ExternalAddress(132 + GP)); //0x00a3, 0x7fea, 0x9b
+ fmul(1);
+ fld_x(ExternalAddress(120 + GP)); //0xa559, 0x1da9, 0xae
+ fmul(2);
+ fld_x(ExternalAddress(108 + GP)); //0x67c9, 0xbed3, 0xbf
+ movl(eax, Address(esp, 44));
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(96 + GP)); //0x286b, 0xb49e, 0xb8
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(84 + GP)); //0x355b, 0xd910, 0x67
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(72 + GP)); //0xf3ca, 0x8c96, 0x8e
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(60 + GP)); //0xa8f9, 0x83f1, 0x2e
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(48 + GP)); //0x7065, 0x6a37, 0x79
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(36 + GP)); //0x85a0, 0xa819, 0xbc
+ faddp(2);
+ fxch(1);
+ fmul(2);
+ fld_x(ExternalAddress(24 + GP)); //0xdfa7, 0x08aa, 0x55
+ faddp(2);
+ fxch(1);
+ fmulp(2);
+ fld_x(ExternalAddress(12 + GP)); //0xb62f, 0x0b60, 0x60
+ faddp(1);
+ fmulp(3);
+ fld_x(ExternalAddress(GP)); //0xaaab, 0xaaaa, 0xaa
+ faddp(1);
+ fmul(3);
+ fxch(2);
+ fmulp(3);
+ fxch(1);
+ faddp(2);
+ fld_d(Address(ones, RelocationHolder::none).plus_disp(eax, Address::times_8));
+ fmula(2);
+ fmulp(1);
+ faddp(1);
+ fstp_d(Address(esp, 16));
+ movsd(xmm0, Address(esp, 16));
+
+ bind(B1_35);
+ testl(edi, edi);
+ jcc(Assembler::equal, B1_37);
+
+ bind(B1_36);
+ fldcw(Address(esp, 38));
+
+ bind(B1_37);
+ movl(eax, Address(esp, 40));
+ movsd(Address(eax, 8), xmm0);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ mov(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_38);
+ fstp_d(0);
+ addl(esp, 52);
+ pop(ebx);
+ pop(edi);
+ pop(esi);
+ mov(esp, ebp);
+ pop(ebp);
+ ret(0);
+
+ bind(B1_39);
+ xorl(edi, edi);
+ jmp(B1_8);
+
+ bind(B1_40);
+ xorl(edi, edi);
+ jmp(B1_15);
+}
+
+ALIGNED_(16) juint _static_const_table_tan[] =
+{
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x882c10faUL,
+ 0x3f9664f4UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x55e6c23dUL, 0x3f8226e3UL, 0x55555555UL,
+ 0x3fd55555UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x0e157de0UL, 0x3f6d6d3dUL, 0x11111111UL, 0x3fc11111UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x452b75e3UL, 0x3f57da36UL,
+ 0x1ba1ba1cUL, 0x3faba1baUL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x4e435f9bUL,
+ 0x3f953f83UL, 0x00000000UL, 0x00000000UL, 0x3c6e8e46UL, 0x3f9b74eaUL,
+ 0x00000000UL, 0x00000000UL, 0xda5b7511UL, 0x3f85ad63UL, 0xdc230b9bUL,
+ 0x3fb97558UL, 0x26cb3788UL, 0x3f881308UL, 0x76fc4985UL, 0x3fd62ac9UL,
+ 0x77bb08baUL, 0x3f757c85UL, 0xb6247521UL, 0x3fb1381eUL, 0x5922170cUL,
+ 0x3f754e95UL, 0x8746482dUL, 0x3fc27f83UL, 0x11055b30UL, 0x3f64e391UL,
+ 0x3e666320UL, 0x3fa3e609UL, 0x0de9dae3UL, 0x3f6301dfUL, 0x1f1dca06UL,
+ 0x3fafa8aeUL, 0x8c5b2da2UL, 0x3fb936bbUL, 0x4e88f7a5UL, 0x3c587d05UL,
+ 0x00000000UL, 0x3ff00000UL, 0xa8935dd9UL, 0x3f83dde2UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x5a279ea3UL, 0x3faa3407UL,
+ 0x00000000UL, 0x00000000UL, 0x432d65faUL, 0x3fa70153UL, 0x00000000UL,
+ 0x00000000UL, 0x891a4602UL, 0x3f9d03efUL, 0xd62ca5f8UL, 0x3fca77d9UL,
+ 0xb35f4628UL, 0x3f97a265UL, 0x433258faUL, 0x3fd8cf51UL, 0xb58fd909UL,
+ 0x3f8f88e3UL, 0x01771ceaUL, 0x3fc2b154UL, 0xf3562f8eUL, 0x3f888f57UL,
+ 0xc028a723UL, 0x3fc7370fUL, 0x20b7f9f0UL, 0x3f80f44cUL, 0x214368e9UL,
+ 0x3fb6dfaaUL, 0x28891863UL, 0x3f79b4b6UL, 0x172dbbf0UL, 0x3fb6cb8eUL,
+ 0xe0553158UL, 0x3fc975f5UL, 0x593fe814UL, 0x3c2ef5d3UL, 0x00000000UL,
+ 0x3ff00000UL, 0x03dec550UL, 0x3fa44203UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x9314533eUL, 0x3fbb8ec5UL, 0x00000000UL,
+ 0x00000000UL, 0x09aa36d0UL, 0x3fb6d3f4UL, 0x00000000UL, 0x00000000UL,
+ 0xdcb427fdUL, 0x3fb13950UL, 0xd87ab0bbUL, 0x3fd5335eUL, 0xce0ae8a5UL,
+ 0x3fabb382UL, 0x79143126UL, 0x3fddba41UL, 0x5f2b28d4UL, 0x3fa552f1UL,
+ 0x59f21a6dUL, 0x3fd015abUL, 0x22c27d95UL, 0x3fa0e984UL, 0xe19fc6aaUL,
+ 0x3fd0576cUL, 0x8f2c2950UL, 0x3f9a4898UL, 0xc0b3f22cUL, 0x3fc59462UL,
+ 0x1883a4b8UL, 0x3f94b61cUL, 0x3f838640UL, 0x3fc30eb8UL, 0x355c63dcUL,
+ 0x3fd36a08UL, 0x1dce993dUL, 0xbc6d704dUL, 0x00000000UL, 0x3ff00000UL,
+ 0x2b82ab63UL, 0x3fb78e92UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x56f37042UL, 0x3fccfc56UL, 0x00000000UL, 0x00000000UL,
+ 0xaa563951UL, 0x3fc90125UL, 0x00000000UL, 0x00000000UL, 0x3d0e7c5dUL,
+ 0x3fc50533UL, 0x9bed9b2eUL, 0x3fdf0ed9UL, 0x5fe7c47cUL, 0x3fc1f250UL,
+ 0x96c125e5UL, 0x3fe2edd9UL, 0x5a02bbd8UL, 0x3fbe5c71UL, 0x86362c20UL,
+ 0x3fda08b7UL, 0x4b4435edUL, 0x3fb9d342UL, 0x4b494091UL, 0x3fd911bdUL,
+ 0xb56658beUL, 0x3fb5e4c7UL, 0x93a2fd76UL, 0x3fd3c092UL, 0xda271794UL,
+ 0x3fb29910UL, 0x3303df2bUL, 0x3fd189beUL, 0x99fcef32UL, 0x3fda8279UL,
+ 0xb68c1467UL, 0x3c708b2fUL, 0x00000000UL, 0x3ff00000UL, 0x980c4337UL,
+ 0x3fc5f619UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0xcc03e501UL, 0x3fdff10fUL, 0x00000000UL, 0x00000000UL, 0x44a4e845UL,
+ 0x3fddb63bUL, 0x00000000UL, 0x00000000UL, 0x3768ad9fUL, 0x3fdb72a4UL,
+ 0x3dd01ccaUL, 0x3fe5fdb9UL, 0xa61d2811UL, 0x3fd972b2UL, 0x5645ad0bUL,
+ 0x3fe977f9UL, 0xd013b3abUL, 0x3fd78ca3UL, 0xbf0bf914UL, 0x3fe4f192UL,
+ 0x4d53e730UL, 0x3fd5d060UL, 0x3f8b9000UL, 0x3fe49933UL, 0xe2b82f08UL,
+ 0x3fd4322aUL, 0x5936a835UL, 0x3fe27ae1UL, 0xb1c61c9bUL, 0x3fd2b3fbUL,
+ 0xef478605UL, 0x3fe1659eUL, 0x190834ecUL, 0x3fe11ab7UL, 0xcdb625eaUL,
+ 0xbc8e564bUL, 0x00000000UL, 0x3ff00000UL, 0xb07217e3UL, 0x3fd248f1UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2b2c49d0UL,
+ 0x3ff2de9cUL, 0x00000000UL, 0x00000000UL, 0x2655bc98UL, 0x3ff33e58UL,
+ 0x00000000UL, 0x00000000UL, 0xff691fa2UL, 0x3ff3972eUL, 0xe93463bdUL,
+ 0x3feeed87UL, 0x070e10a0UL, 0x3ff3f5b2UL, 0xf4d790a4UL, 0x3ff20c10UL,
+ 0xa04e8ea3UL, 0x3ff4541aUL, 0x386accd3UL, 0x3ff1369eUL, 0x222a66ddUL,
+ 0x3ff4b521UL, 0x22a9777eUL, 0x3ff20817UL, 0x52a04a6eUL, 0x3ff5178fUL,
+ 0xddaa0031UL, 0x3ff22137UL, 0x4447d47cUL, 0x3ff57c01UL, 0x1e9c7f1dUL,
+ 0x3ff29311UL, 0x2ab7f990UL, 0x3fe561b8UL, 0x209c7df1UL, 0x3c87a8c5UL,
+ 0x00000000UL, 0x3ff00000UL, 0x4170bcc6UL, 0x3fdc92d8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xc7ab4d5aUL, 0x40085e24UL,
+ 0x00000000UL, 0x00000000UL, 0xe93ea75dUL, 0x400b963dUL, 0x00000000UL,
+ 0x00000000UL, 0x94a7f25aUL, 0x400f37e2UL, 0x4b6261cbUL, 0x3ff5f984UL,
+ 0x5a9dd812UL, 0x4011aab0UL, 0x74c30018UL, 0x3ffaf5a5UL, 0x7f2ce8e3UL,
+ 0x4013fe8bUL, 0xfe8e54faUL, 0x3ffd7334UL, 0x670d618dUL, 0x4016a10cUL,
+ 0x4db97058UL, 0x4000e012UL, 0x24df44ddUL, 0x40199c5fUL, 0x697d6eceUL,
+ 0x4003006eUL, 0x83298b82UL, 0x401cfc4dUL, 0x19d490d6UL, 0x40058c19UL,
+ 0x2ae42850UL, 0x3fea4300UL, 0x118e20e6UL, 0xbc7a6db8UL, 0x00000000UL,
+ 0x40000000UL, 0xe33345b8UL, 0xbfd4e526UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x65965966UL, 0x40219659UL, 0x00000000UL,
+ 0x00000000UL, 0x882c10faUL, 0x402664f4UL, 0x00000000UL, 0x00000000UL,
+ 0x83cd3723UL, 0x402c8342UL, 0x00000000UL, 0x40000000UL, 0x55e6c23dUL,
+ 0x403226e3UL, 0x55555555UL, 0x40055555UL, 0x34451939UL, 0x40371c96UL,
+ 0xaaaaaaabUL, 0x400aaaaaUL, 0x0e157de0UL, 0x403d6d3dUL, 0x11111111UL,
+ 0x40111111UL, 0xa738201fUL, 0x4042bbceUL, 0x05b05b06UL, 0x4015b05bUL,
+ 0x452b75e3UL, 0x4047da36UL, 0x1ba1ba1cUL, 0x401ba1baUL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x40000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x4f48b8d3UL, 0xbf33eaf9UL, 0x00000000UL, 0x00000000UL,
+ 0x0cf7586fUL, 0x3f20b8eaUL, 0x00000000UL, 0x00000000UL, 0xd0258911UL,
+ 0xbf0abaf3UL, 0x23e49fe9UL, 0xbfab5a8cUL, 0x2d53222eUL, 0x3ef60d15UL,
+ 0x21169451UL, 0x3fa172b2UL, 0xbb254dbcUL, 0xbee1d3b5UL, 0xdbf93b8eUL,
+ 0xbf84c7dbUL, 0x05b4630bUL, 0x3ecd3364UL, 0xee9aada7UL, 0x3f743924UL,
+ 0x794a8297UL, 0xbeb7b7b9UL, 0xe015f797UL, 0xbf5d41f5UL, 0xe41a4a56UL,
+ 0x3ea35dfbUL, 0xe4c2a251UL, 0x3f49a2abUL, 0x5af9e000UL, 0xbfce49ceUL,
+ 0x8c743719UL, 0x3d1eb860UL, 0x00000000UL, 0x00000000UL, 0x1b4863cfUL,
+ 0x3fd78294UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x535ad890UL, 0xbf2b9320UL, 0x00000000UL, 0x00000000UL, 0x018fdf1fUL,
+ 0x3f16d61dUL, 0x00000000UL, 0x00000000UL, 0x0359f1beUL, 0xbf0139e4UL,
+ 0xa4317c6dUL, 0xbfa67e17UL, 0x82672d0fUL, 0x3eebb405UL, 0x2f1b621eUL,
+ 0x3f9f455bUL, 0x51ccf238UL, 0xbed55317UL, 0xf437b9acUL, 0xbf804beeUL,
+ 0xc791a2b5UL, 0x3ec0e993UL, 0x919a1db2UL, 0x3f7080c2UL, 0x336a5b0eUL,
+ 0xbeaa48a2UL, 0x0a268358UL, 0xbf55a443UL, 0xdfd978e4UL, 0x3e94b61fUL,
+ 0xd7767a58UL, 0x3f431806UL, 0x2aea0000UL, 0xbfc9bbe8UL, 0x7723ea61UL,
+ 0xbd3a2369UL, 0x00000000UL, 0x00000000UL, 0xdf7796ffUL, 0x3fd6e642UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0xb9ff07ceUL,
+ 0xbf231c78UL, 0x00000000UL, 0x00000000UL, 0xa5517182UL, 0x3f0ff0e0UL,
+ 0x00000000UL, 0x00000000UL, 0x790b4cbcUL, 0xbef66191UL, 0x848a46c6UL,
+ 0xbfa21ac0UL, 0xb16435faUL, 0x3ee1d3ecUL, 0x2a1aa832UL, 0x3f9c71eaUL,
+ 0xfdd299efUL, 0xbec9dd1aUL, 0x3f8dbaafUL, 0xbf793363UL, 0x309fc6eaUL,
+ 0x3eb415d6UL, 0xbee60471UL, 0x3f6b83baUL, 0x94a0a697UL, 0xbe9dae11UL,
+ 0x3e5c67b3UL, 0xbf4fd07bUL, 0x9a8f3e3eUL, 0x3e86bd75UL, 0xa4beb7a4UL,
+ 0x3f3d1eb1UL, 0x29cfc000UL, 0xbfc549ceUL, 0xbf159358UL, 0xbd397b33UL,
+ 0x00000000UL, 0x00000000UL, 0x871fee6cUL, 0x3fd666f0UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x7d98a556UL, 0xbf1a3958UL,
+ 0x00000000UL, 0x00000000UL, 0x9d88dc01UL, 0x3f0704c2UL, 0x00000000UL,
+ 0x00000000UL, 0x73742a2bUL, 0xbeed054aUL, 0x58844587UL, 0xbf9c2a13UL,
+ 0x55688a79UL, 0x3ed7a326UL, 0xee33f1d6UL, 0x3f9a48f4UL, 0xa8dc9888UL,
+ 0xbebf8939UL, 0xaad4b5b8UL, 0xbf72f746UL, 0x9102efa1UL, 0x3ea88f82UL,
+ 0xdabc29cfUL, 0x3f678228UL, 0x9289afb8UL, 0xbe90f456UL, 0x741fb4edUL,
+ 0xbf46f3a3UL, 0xa97f6663UL, 0x3e79b4bfUL, 0xca89ff3fUL, 0x3f36db70UL,
+ 0xa8a2a000UL, 0xbfc0ee13UL, 0x3da24be1UL, 0xbd338b9fUL, 0x00000000UL,
+ 0x00000000UL, 0x11cd6c69UL, 0x3fd601fdUL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0x1a154b97UL, 0xbf116b01UL, 0x00000000UL,
+ 0x00000000UL, 0x2d427630UL, 0x3f0147bfUL, 0x00000000UL, 0x00000000UL,
+ 0xb93820c8UL, 0xbee264d4UL, 0xbb6cbb18UL, 0xbf94ab8cUL, 0x888d4d92UL,
+ 0x3ed0568bUL, 0x60730f7cUL, 0x3f98b19bUL, 0xe4b1fb11UL, 0xbeb2f950UL,
+ 0x22cf9f74UL, 0xbf6b21cdUL, 0x4a3ff0a6UL, 0x3e9f499eUL, 0xfd2b83ceUL,
+ 0x3f64aad7UL, 0x637b73afUL, 0xbe83487cUL, 0xe522591aUL, 0xbf3fc092UL,
+ 0xa158e8bcUL, 0x3e6e3aaeUL, 0xe5e82ffaUL, 0x3f329d2fUL, 0xd636a000UL,
+ 0xbfb9477fUL, 0xc2c2d2bcUL, 0xbd135ef9UL, 0x00000000UL, 0x00000000UL,
+ 0xf2fdb123UL, 0x3fd5b566UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0xc41acb64UL, 0xbf05448dUL, 0x00000000UL, 0x00000000UL,
+ 0xdbb03d6fUL, 0x3efb7ad2UL, 0x00000000UL, 0x00000000UL, 0x9e42962dUL,
+ 0xbed5aea5UL, 0x2579f8efUL, 0xbf8b2398UL, 0x288a1ed9UL, 0x3ec81441UL,
+ 0xb0198dc5UL, 0x3f979a3aUL, 0x2fdfe253UL, 0xbea57cd3UL, 0x5766336fUL,
+ 0xbf617caaUL, 0x600944c3UL, 0x3e954ed6UL, 0xa4e0aaf8UL, 0x3f62c646UL,
+ 0x6b8fb29cUL, 0xbe74e3a3UL, 0xdc4c0409UL, 0xbf33f952UL, 0x9bffe365UL,
+ 0x3e6301ecUL, 0xb8869e44UL, 0x3f2fc566UL, 0xe1e04000UL, 0xbfb0cc62UL,
+ 0x016b907fUL, 0xbd119cbcUL, 0x00000000UL, 0x00000000UL, 0xe6b9d8faUL,
+ 0x3fd57fb3UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x5daf22a6UL, 0xbef429d7UL, 0x00000000UL, 0x00000000UL, 0x06bca545UL,
+ 0x3ef7a27dUL, 0x00000000UL, 0x00000000UL, 0x7211c19aUL, 0xbec41c3eUL,
+ 0x956ed53eUL, 0xbf7ae3f4UL, 0xee750e72UL, 0x3ec3901bUL, 0x91d443f5UL,
+ 0x3f96f713UL, 0x36661e6cUL, 0xbe936e09UL, 0x506f9381UL, 0xbf5122e8UL,
+ 0xcb6dd43fUL, 0x3e9041b9UL, 0x6698b2ffUL, 0x3f61b0c7UL, 0x576bf12bUL,
+ 0xbe625a8aUL, 0xe5a0e9dcUL, 0xbf23499dUL, 0x110384ddUL, 0x3e5b1c2cUL,
+ 0x68d43db6UL, 0x3f2cb899UL, 0x6ecac000UL, 0xbfa0c414UL, 0xcd7dd58cUL,
+ 0x3d13500fUL, 0x00000000UL, 0x00000000UL, 0x85a2c8fbUL, 0x3fd55fe0UL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2bf70ebeUL, 0x3ef66a8fUL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0xd644267fUL, 0x3ec22805UL, 0x16c16c17UL, 0x3f96c16cUL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xc4e09162UL,
+ 0x3e8d6db2UL, 0xbc011567UL, 0x3f61566aUL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x1f79955cUL, 0x3e57da4eUL, 0x9334ef0bUL,
+ 0x3f2bbd77UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x55555555UL, 0x3fd55555UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x5daf22a6UL, 0x3ef429d7UL,
+ 0x00000000UL, 0x00000000UL, 0x06bca545UL, 0x3ef7a27dUL, 0x00000000UL,
+ 0x00000000UL, 0x7211c19aUL, 0x3ec41c3eUL, 0x956ed53eUL, 0x3f7ae3f4UL,
+ 0xee750e72UL, 0x3ec3901bUL, 0x91d443f5UL, 0x3f96f713UL, 0x36661e6cUL,
+ 0x3e936e09UL, 0x506f9381UL, 0x3f5122e8UL, 0xcb6dd43fUL, 0x3e9041b9UL,
+ 0x6698b2ffUL, 0x3f61b0c7UL, 0x576bf12bUL, 0x3e625a8aUL, 0xe5a0e9dcUL,
+ 0x3f23499dUL, 0x110384ddUL, 0x3e5b1c2cUL, 0x68d43db6UL, 0x3f2cb899UL,
+ 0x6ecac000UL, 0x3fa0c414UL, 0xcd7dd58cUL, 0xbd13500fUL, 0x00000000UL,
+ 0x00000000UL, 0x85a2c8fbUL, 0x3fd55fe0UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0xc41acb64UL, 0x3f05448dUL, 0x00000000UL,
+ 0x00000000UL, 0xdbb03d6fUL, 0x3efb7ad2UL, 0x00000000UL, 0x00000000UL,
+ 0x9e42962dUL, 0x3ed5aea5UL, 0x2579f8efUL, 0x3f8b2398UL, 0x288a1ed9UL,
+ 0x3ec81441UL, 0xb0198dc5UL, 0x3f979a3aUL, 0x2fdfe253UL, 0x3ea57cd3UL,
+ 0x5766336fUL, 0x3f617caaUL, 0x600944c3UL, 0x3e954ed6UL, 0xa4e0aaf8UL,
+ 0x3f62c646UL, 0x6b8fb29cUL, 0x3e74e3a3UL, 0xdc4c0409UL, 0x3f33f952UL,
+ 0x9bffe365UL, 0x3e6301ecUL, 0xb8869e44UL, 0x3f2fc566UL, 0xe1e04000UL,
+ 0x3fb0cc62UL, 0x016b907fUL, 0x3d119cbcUL, 0x00000000UL, 0x00000000UL,
+ 0xe6b9d8faUL, 0x3fd57fb3UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0x1a154b97UL, 0x3f116b01UL, 0x00000000UL, 0x00000000UL,
+ 0x2d427630UL, 0x3f0147bfUL, 0x00000000UL, 0x00000000UL, 0xb93820c8UL,
+ 0x3ee264d4UL, 0xbb6cbb18UL, 0x3f94ab8cUL, 0x888d4d92UL, 0x3ed0568bUL,
+ 0x60730f7cUL, 0x3f98b19bUL, 0xe4b1fb11UL, 0x3eb2f950UL, 0x22cf9f74UL,
+ 0x3f6b21cdUL, 0x4a3ff0a6UL, 0x3e9f499eUL, 0xfd2b83ceUL, 0x3f64aad7UL,
+ 0x637b73afUL, 0x3e83487cUL, 0xe522591aUL, 0x3f3fc092UL, 0xa158e8bcUL,
+ 0x3e6e3aaeUL, 0xe5e82ffaUL, 0x3f329d2fUL, 0xd636a000UL, 0x3fb9477fUL,
+ 0xc2c2d2bcUL, 0x3d135ef9UL, 0x00000000UL, 0x00000000UL, 0xf2fdb123UL,
+ 0x3fd5b566UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL,
+ 0x7d98a556UL, 0x3f1a3958UL, 0x00000000UL, 0x00000000UL, 0x9d88dc01UL,
+ 0x3f0704c2UL, 0x00000000UL, 0x00000000UL, 0x73742a2bUL, 0x3eed054aUL,
+ 0x58844587UL, 0x3f9c2a13UL, 0x55688a79UL, 0x3ed7a326UL, 0xee33f1d6UL,
+ 0x3f9a48f4UL, 0xa8dc9888UL, 0x3ebf8939UL, 0xaad4b5b8UL, 0x3f72f746UL,
+ 0x9102efa1UL, 0x3ea88f82UL, 0xdabc29cfUL, 0x3f678228UL, 0x9289afb8UL,
+ 0x3e90f456UL, 0x741fb4edUL, 0x3f46f3a3UL, 0xa97f6663UL, 0x3e79b4bfUL,
+ 0xca89ff3fUL, 0x3f36db70UL, 0xa8a2a000UL, 0x3fc0ee13UL, 0x3da24be1UL,
+ 0x3d338b9fUL, 0x00000000UL, 0x00000000UL, 0x11cd6c69UL, 0x3fd601fdUL,
+ 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0xb9ff07ceUL,
+ 0x3f231c78UL, 0x00000000UL, 0x00000000UL, 0xa5517182UL, 0x3f0ff0e0UL,
+ 0x00000000UL, 0x00000000UL, 0x790b4cbcUL, 0x3ef66191UL, 0x848a46c6UL,
+ 0x3fa21ac0UL, 0xb16435faUL, 0x3ee1d3ecUL, 0x2a1aa832UL, 0x3f9c71eaUL,
+ 0xfdd299efUL, 0x3ec9dd1aUL, 0x3f8dbaafUL, 0x3f793363UL, 0x309fc6eaUL,
+ 0x3eb415d6UL, 0xbee60471UL, 0x3f6b83baUL, 0x94a0a697UL, 0x3e9dae11UL,
+ 0x3e5c67b3UL, 0x3f4fd07bUL, 0x9a8f3e3eUL, 0x3e86bd75UL, 0xa4beb7a4UL,
+ 0x3f3d1eb1UL, 0x29cfc000UL, 0x3fc549ceUL, 0xbf159358UL, 0x3d397b33UL,
+ 0x00000000UL, 0x00000000UL, 0x871fee6cUL, 0x3fd666f0UL, 0x00000000UL,
+ 0x3ff00000UL, 0x00000000UL, 0xfffffff8UL, 0x535ad890UL, 0x3f2b9320UL,
+ 0x00000000UL, 0x00000000UL, 0x018fdf1fUL, 0x3f16d61dUL, 0x00000000UL,
+ 0x00000000UL, 0x0359f1beUL, 0x3f0139e4UL, 0xa4317c6dUL, 0x3fa67e17UL,
+ 0x82672d0fUL, 0x3eebb405UL, 0x2f1b621eUL, 0x3f9f455bUL, 0x51ccf238UL,
+ 0x3ed55317UL, 0xf437b9acUL, 0x3f804beeUL, 0xc791a2b5UL, 0x3ec0e993UL,
+ 0x919a1db2UL, 0x3f7080c2UL, 0x336a5b0eUL, 0x3eaa48a2UL, 0x0a268358UL,
+ 0x3f55a443UL, 0xdfd978e4UL, 0x3e94b61fUL, 0xd7767a58UL, 0x3f431806UL,
+ 0x2aea0000UL, 0x3fc9bbe8UL, 0x7723ea61UL, 0x3d3a2369UL, 0x00000000UL,
+ 0x00000000UL, 0xdf7796ffUL, 0x3fd6e642UL, 0x00000000UL, 0x3ff00000UL,
+ 0x00000000UL, 0xfffffff8UL, 0x4f48b8d3UL, 0x3f33eaf9UL, 0x00000000UL,
+ 0x00000000UL, 0x0cf7586fUL, 0x3f20b8eaUL, 0x00000000UL, 0x00000000UL,
+ 0xd0258911UL, 0x3f0abaf3UL, 0x23e49fe9UL, 0x3fab5a8cUL, 0x2d53222eUL,
+ 0x3ef60d15UL, 0x21169451UL, 0x3fa172b2UL, 0xbb254dbcUL, 0x3ee1d3b5UL,
+ 0xdbf93b8eUL, 0x3f84c7dbUL, 0x05b4630bUL, 0x3ecd3364UL, 0xee9aada7UL,
+ 0x3f743924UL, 0x794a8297UL, 0x3eb7b7b9UL, 0xe015f797UL, 0x3f5d41f5UL,
+ 0xe41a4a56UL, 0x3ea35dfbUL, 0xe4c2a251UL, 0x3f49a2abUL, 0x5af9e000UL,
+ 0x3fce49ceUL, 0x8c743719UL, 0xbd1eb860UL, 0x00000000UL, 0x00000000UL,
+ 0x1b4863cfUL, 0x3fd78294UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL,
+ 0xfffffff8UL, 0x65965966UL, 0xc0219659UL, 0x00000000UL, 0x00000000UL,
+ 0x882c10faUL, 0x402664f4UL, 0x00000000UL, 0x00000000UL, 0x83cd3723UL,
+ 0xc02c8342UL, 0x00000000UL, 0xc0000000UL, 0x55e6c23dUL, 0x403226e3UL,
+ 0x55555555UL, 0x40055555UL, 0x34451939UL, 0xc0371c96UL, 0xaaaaaaabUL,
+ 0xc00aaaaaUL, 0x0e157de0UL, 0x403d6d3dUL, 0x11111111UL, 0x40111111UL,
+ 0xa738201fUL, 0xc042bbceUL, 0x05b05b06UL, 0xc015b05bUL, 0x452b75e3UL,
+ 0x4047da36UL, 0x1ba1ba1cUL, 0x401ba1baUL, 0x00000000UL, 0xbff00000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x40000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0xc7ab4d5aUL, 0xc0085e24UL, 0x00000000UL, 0x00000000UL, 0xe93ea75dUL,
+ 0x400b963dUL, 0x00000000UL, 0x00000000UL, 0x94a7f25aUL, 0xc00f37e2UL,
+ 0x4b6261cbUL, 0xbff5f984UL, 0x5a9dd812UL, 0x4011aab0UL, 0x74c30018UL,
+ 0x3ffaf5a5UL, 0x7f2ce8e3UL, 0xc013fe8bUL, 0xfe8e54faUL, 0xbffd7334UL,
+ 0x670d618dUL, 0x4016a10cUL, 0x4db97058UL, 0x4000e012UL, 0x24df44ddUL,
+ 0xc0199c5fUL, 0x697d6eceUL, 0xc003006eUL, 0x83298b82UL, 0x401cfc4dUL,
+ 0x19d490d6UL, 0x40058c19UL, 0x2ae42850UL, 0xbfea4300UL, 0x118e20e6UL,
+ 0x3c7a6db8UL, 0x00000000UL, 0x40000000UL, 0xe33345b8UL, 0xbfd4e526UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x2b2c49d0UL,
+ 0xbff2de9cUL, 0x00000000UL, 0x00000000UL, 0x2655bc98UL, 0x3ff33e58UL,
+ 0x00000000UL, 0x00000000UL, 0xff691fa2UL, 0xbff3972eUL, 0xe93463bdUL,
+ 0xbfeeed87UL, 0x070e10a0UL, 0x3ff3f5b2UL, 0xf4d790a4UL, 0x3ff20c10UL,
+ 0xa04e8ea3UL, 0xbff4541aUL, 0x386accd3UL, 0xbff1369eUL, 0x222a66ddUL,
+ 0x3ff4b521UL, 0x22a9777eUL, 0x3ff20817UL, 0x52a04a6eUL, 0xbff5178fUL,
+ 0xddaa0031UL, 0xbff22137UL, 0x4447d47cUL, 0x3ff57c01UL, 0x1e9c7f1dUL,
+ 0x3ff29311UL, 0x2ab7f990UL, 0xbfe561b8UL, 0x209c7df1UL, 0xbc87a8c5UL,
+ 0x00000000UL, 0x3ff00000UL, 0x4170bcc6UL, 0x3fdc92d8UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0xcc03e501UL, 0xbfdff10fUL,
+ 0x00000000UL, 0x00000000UL, 0x44a4e845UL, 0x3fddb63bUL, 0x00000000UL,
+ 0x00000000UL, 0x3768ad9fUL, 0xbfdb72a4UL, 0x3dd01ccaUL, 0xbfe5fdb9UL,
+ 0xa61d2811UL, 0x3fd972b2UL, 0x5645ad0bUL, 0x3fe977f9UL, 0xd013b3abUL,
+ 0xbfd78ca3UL, 0xbf0bf914UL, 0xbfe4f192UL, 0x4d53e730UL, 0x3fd5d060UL,
+ 0x3f8b9000UL, 0x3fe49933UL, 0xe2b82f08UL, 0xbfd4322aUL, 0x5936a835UL,
+ 0xbfe27ae1UL, 0xb1c61c9bUL, 0x3fd2b3fbUL, 0xef478605UL, 0x3fe1659eUL,
+ 0x190834ecUL, 0xbfe11ab7UL, 0xcdb625eaUL, 0x3c8e564bUL, 0x00000000UL,
+ 0x3ff00000UL, 0xb07217e3UL, 0x3fd248f1UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x56f37042UL, 0xbfccfc56UL, 0x00000000UL,
+ 0x00000000UL, 0xaa563951UL, 0x3fc90125UL, 0x00000000UL, 0x00000000UL,
+ 0x3d0e7c5dUL, 0xbfc50533UL, 0x9bed9b2eUL, 0xbfdf0ed9UL, 0x5fe7c47cUL,
+ 0x3fc1f250UL, 0x96c125e5UL, 0x3fe2edd9UL, 0x5a02bbd8UL, 0xbfbe5c71UL,
+ 0x86362c20UL, 0xbfda08b7UL, 0x4b4435edUL, 0x3fb9d342UL, 0x4b494091UL,
+ 0x3fd911bdUL, 0xb56658beUL, 0xbfb5e4c7UL, 0x93a2fd76UL, 0xbfd3c092UL,
+ 0xda271794UL, 0x3fb29910UL, 0x3303df2bUL, 0x3fd189beUL, 0x99fcef32UL,
+ 0xbfda8279UL, 0xb68c1467UL, 0xbc708b2fUL, 0x00000000UL, 0x3ff00000UL,
+ 0x980c4337UL, 0x3fc5f619UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x9314533eUL, 0xbfbb8ec5UL, 0x00000000UL, 0x00000000UL,
+ 0x09aa36d0UL, 0x3fb6d3f4UL, 0x00000000UL, 0x00000000UL, 0xdcb427fdUL,
+ 0xbfb13950UL, 0xd87ab0bbUL, 0xbfd5335eUL, 0xce0ae8a5UL, 0x3fabb382UL,
+ 0x79143126UL, 0x3fddba41UL, 0x5f2b28d4UL, 0xbfa552f1UL, 0x59f21a6dUL,
+ 0xbfd015abUL, 0x22c27d95UL, 0x3fa0e984UL, 0xe19fc6aaUL, 0x3fd0576cUL,
+ 0x8f2c2950UL, 0xbf9a4898UL, 0xc0b3f22cUL, 0xbfc59462UL, 0x1883a4b8UL,
+ 0x3f94b61cUL, 0x3f838640UL, 0x3fc30eb8UL, 0x355c63dcUL, 0xbfd36a08UL,
+ 0x1dce993dUL, 0x3c6d704dUL, 0x00000000UL, 0x3ff00000UL, 0x2b82ab63UL,
+ 0x3fb78e92UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL,
+ 0x5a279ea3UL, 0xbfaa3407UL, 0x00000000UL, 0x00000000UL, 0x432d65faUL,
+ 0x3fa70153UL, 0x00000000UL, 0x00000000UL, 0x891a4602UL, 0xbf9d03efUL,
+ 0xd62ca5f8UL, 0xbfca77d9UL, 0xb35f4628UL, 0x3f97a265UL, 0x433258faUL,
+ 0x3fd8cf51UL, 0xb58fd909UL, 0xbf8f88e3UL, 0x01771ceaUL, 0xbfc2b154UL,
+ 0xf3562f8eUL, 0x3f888f57UL, 0xc028a723UL, 0x3fc7370fUL, 0x20b7f9f0UL,
+ 0xbf80f44cUL, 0x214368e9UL, 0xbfb6dfaaUL, 0x28891863UL, 0x3f79b4b6UL,
+ 0x172dbbf0UL, 0x3fb6cb8eUL, 0xe0553158UL, 0xbfc975f5UL, 0x593fe814UL,
+ 0xbc2ef5d3UL, 0x00000000UL, 0x3ff00000UL, 0x03dec550UL, 0x3fa44203UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x4e435f9bUL,
+ 0xbf953f83UL, 0x00000000UL, 0x00000000UL, 0x3c6e8e46UL, 0x3f9b74eaUL,
+ 0x00000000UL, 0x00000000UL, 0xda5b7511UL, 0xbf85ad63UL, 0xdc230b9bUL,
+ 0xbfb97558UL, 0x26cb3788UL, 0x3f881308UL, 0x76fc4985UL, 0x3fd62ac9UL,
+ 0x77bb08baUL, 0xbf757c85UL, 0xb6247521UL, 0xbfb1381eUL, 0x5922170cUL,
+ 0x3f754e95UL, 0x8746482dUL, 0x3fc27f83UL, 0x11055b30UL, 0xbf64e391UL,
+ 0x3e666320UL, 0xbfa3e609UL, 0x0de9dae3UL, 0x3f6301dfUL, 0x1f1dca06UL,
+ 0x3fafa8aeUL, 0x8c5b2da2UL, 0xbfb936bbUL, 0x4e88f7a5UL, 0xbc587d05UL,
+ 0x00000000UL, 0x3ff00000UL, 0xa8935dd9UL, 0x3f83dde2UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x6dc9c883UL, 0x3fe45f30UL,
+ 0x6dc9c883UL, 0x40245f30UL, 0x00000000UL, 0x43780000UL, 0x00000000UL,
+ 0x43380000UL, 0x54444000UL, 0x3fb921fbUL, 0x54440000UL, 0x3fb921fbUL,
+ 0x67674000UL, 0xbd32e7b9UL, 0x4c4c0000UL, 0x3d468c23UL, 0x3707344aUL,
+ 0x3aa8a2e0UL, 0x03707345UL, 0x3ae98a2eUL, 0x00000000UL, 0x80000000UL,
+ 0x00000000UL, 0x80000000UL, 0x676733afUL, 0x3d32e7b9UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ff00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x7ff00000UL, 0x00000000UL, 0x00000000UL, 0xfffc0000UL,
+ 0xffffffffUL, 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x43600000UL,
+ 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x3c800000UL, 0x00000000UL,
+ 0x00000000UL, 0x00000000UL, 0x3ca00000UL, 0x00000000UL, 0x00000000UL,
+ 0x00000000UL, 0x3fe00000UL, 0x00000000UL, 0x3fe00000UL, 0x00000000UL,
+ 0x40300000UL, 0x00000000UL, 0x3ff00000UL
+};
+
+void MacroAssembler::fast_tan(XMMRegister xmm0, XMMRegister xmm1, XMMRegister xmm2, XMMRegister xmm3, XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7, Register eax, Register ecx, Register edx, Register tmp) {
+
+ Label L_2TAG_PACKET_0_0_2, L_2TAG_PACKET_1_0_2, L_2TAG_PACKET_2_0_2, L_2TAG_PACKET_3_0_2;
+ Label L_2TAG_PACKET_4_0_2, L_2TAG_PACKET_5_0_2, L_2TAG_PACKET_6_0_2, L_2TAG_PACKET_7_0_2;
+ Label L_2TAG_PACKET_8_0_2, L_2TAG_PACKET_9_0_2, L_2TAG_PACKET_10_0_2, L_2TAG_PACKET_11_0_2;
+ Label L_2TAG_PACKET_12_0_2, L_2TAG_PACKET_13_0_2, B1_3, B1_5, start;
+
+ assert_different_registers(tmp, eax, ecx, edx);
+
+ address static_const_table_tan = (address)_static_const_table_tan;
+
+ bind(start);
+ subl(rsp, 120);
+ movl(Address(rsp, 56), tmp);
+ lea(tmp, ExternalAddress(static_const_table_tan));
+ movsd(xmm0, Address(rsp, 128));
+ pextrw(eax, xmm0, 3);
+ andl(eax, 32767);
+ subl(eax, 14368);
+ cmpl(eax, 2216);
+ jcc(Assembler::above, L_2TAG_PACKET_0_0_2);
+ movdqu(xmm5, Address(tmp, 5840));
+ movdqu(xmm6, Address(tmp, 5856));
+ unpcklpd(xmm0, xmm0);
+ movdqu(xmm4, Address(tmp, 5712));
+ andpd(xmm4, xmm0);
+ movdqu(xmm1, Address(tmp, 5632));
+ mulpd(xmm1, xmm0);
+ por(xmm5, xmm4);
+ addpd(xmm1, xmm5);
+ movdqu(xmm7, xmm1);
+ unpckhpd(xmm7, xmm7);
+ cvttsd2sil(edx, xmm7);
+ cvttpd2dq(xmm1, xmm1);
+ cvtdq2pd(xmm1, xmm1);
+ mulpd(xmm1, xmm6);
+ movdqu(xmm3, Address(tmp, 5664));
+ movsd(xmm5, Address(tmp, 5728));
+ addl(edx, 469248);
+ movdqu(xmm4, Address(tmp, 5680));
+ mulpd(xmm3, xmm1);
+ andl(edx, 31);
+ mulsd(xmm5, xmm1);
+ movl(ecx, edx);
+ mulpd(xmm4, xmm1);
+ shll(ecx, 1);
+ subpd(xmm0, xmm3);
+ mulpd(xmm1, Address(tmp, 5696));
+ addl(edx, ecx);
+ shll(ecx, 2);
+ addl(edx, ecx);
+ addsd(xmm5, xmm0);
+ movdqu(xmm2, xmm0);
+ subpd(xmm0, xmm4);
+ movsd(xmm6, Address(tmp, 5744));
+ shll(edx, 4);
+ lea(eax, Address(tmp, 0));
+ andpd(xmm5, Address(tmp, 5776));
+ movdqu(xmm3, xmm0);
+ addl(eax, edx);
+ subpd(xmm2, xmm0);
+ unpckhpd(xmm0, xmm0);
+ divsd(xmm6, xmm5);
+ subpd(xmm2, xmm4);
+ movdqu(xmm7, Address(eax, 16));
+ subsd(xmm3, xmm5);
+ mulpd(xmm7, xmm0);
+ subpd(xmm2, xmm1);
+ movdqu(xmm1, Address(eax, 48));
+ mulpd(xmm1, xmm0);
+ movdqu(xmm4, Address(eax, 96));
+ mulpd(xmm4, xmm0);
+ addsd(xmm2, xmm3);
+ movdqu(xmm3, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm7, Address(eax, 0));
+ addpd(xmm1, Address(eax, 32));
+ mulpd(xmm1, xmm0);
+ addpd(xmm4, Address(eax, 80));
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, Address(eax, 112));
+ mulpd(xmm1, xmm0);
+ mulpd(xmm0, xmm0);
+ addpd(xmm4, xmm1);
+ movdqu(xmm1, Address(eax, 64));
+ mulpd(xmm1, xmm0);
+ addpd(xmm7, xmm1);
+ movdqu(xmm1, xmm3);
+ mulpd(xmm3, xmm0);
+ mulsd(xmm0, xmm0);
+ mulpd(xmm1, Address(eax, 144));
+ mulpd(xmm4, xmm3);
+ movdqu(xmm3, xmm1);
+ addpd(xmm7, xmm4);
+ movdqu(xmm4, xmm1);
+ mulsd(xmm0, xmm7);
+ unpckhpd(xmm7, xmm7);
+ addsd(xmm0, xmm7);
+ unpckhpd(xmm1, xmm1);
+ addsd(xmm3, xmm1);
+ subsd(xmm4, xmm3);
+ addsd(xmm1, xmm4);
+ movdqu(xmm4, xmm2);
+ movsd(xmm7, Address(eax, 144));
+ unpckhpd(xmm2, xmm2);
+ addsd(xmm7, Address(eax, 152));
+ mulsd(xmm7, xmm2);
+ addsd(xmm7, Address(eax, 136));
+ addsd(xmm7, xmm1);
+ addsd(xmm0, xmm7);
+ movsd(xmm7, Address(tmp, 5744));
+ mulsd(xmm4, xmm6);
+ movsd(xmm2, Address(eax, 168));
+ andpd(xmm2, xmm6);
+ mulsd(xmm5, xmm2);
+ mulsd(xmm6, Address(eax, 160));
+ subsd(xmm7, xmm5);
+ subsd(xmm2, Address(eax, 128));
+ subsd(xmm7, xmm4);
+ mulsd(xmm7, xmm6);
+ movdqu(xmm4, xmm3);
+ subsd(xmm3, xmm2);
+ addsd(xmm2, xmm3);
+ subsd(xmm4, xmm2);
+ addsd(xmm0, xmm4);
+ subsd(xmm0, xmm7);
+ addsd(xmm0, xmm3);
+ movsd(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_0_0_2);
+ jcc(Assembler::greater, L_2TAG_PACKET_2_0_2);
+ shrl(eax, 4);
+ cmpl(eax, 268434558);
+ jcc(Assembler::notEqual, L_2TAG_PACKET_3_0_2);
+ movdqu(xmm3, xmm0);
+ mulsd(xmm3, Address(tmp, 5808));
+
+ bind(L_2TAG_PACKET_3_0_2);
+ movsd(xmm3, Address(tmp, 5792));
+ mulsd(xmm3, xmm0);
+ addsd(xmm3, xmm0);
+ mulsd(xmm3, Address(tmp, 5808));
+ movsd(Address(rsp, 0), xmm3);
+ fld_d(Address(rsp, 0));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_2_0_2);
+ movq(xmm7, Address(tmp, 5712));
+ andpd(xmm7, xmm0);
+ xorpd(xmm7, xmm0);
+ ucomisd(xmm7, Address(tmp, 5760));
+ jcc(Assembler::equal, L_2TAG_PACKET_4_0_2);
+ subl(rsp, 32);
+ movsd(Address(rsp, 0), xmm0);
+ lea(eax, Address(rsp, 40));
+ movl(Address(rsp, 8), eax);
+ movl(eax, 2);
+ movl(Address(rsp, 12), eax);
+ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlibm_tan_cot_huge())));
+ addl(rsp, 32);
+ fld_d(Address(rsp, 8));
+ jmp(L_2TAG_PACKET_1_0_2);
+
+ bind(L_2TAG_PACKET_4_0_2);
+ movq(Address(rsp, 0), xmm0);
+ fld_d(Address(rsp, 0));
+ fsub_d(Address(rsp, 0));
+
+ bind(L_2TAG_PACKET_1_0_2);
+ movl(tmp, Address(rsp, 56));
+}
+#endif
diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
index 3763b058b8b..a24397f4c8f 100644
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
@@ -29,9 +29,9 @@
#include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp"
#include "interpreter/interpreter.hpp"
+#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_x86.inline.hpp"
@@ -1953,7 +1953,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
__ mov_metadata(rax, method());
__ call_VM_leaf(
CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
diff --git a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
index 8fca552dd34..81ed472f462 100644
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp
@@ -32,9 +32,9 @@
#include "code/icBuffer.hpp"
#include "code/vtableStubs.hpp"
#include "interpreter/interpreter.hpp"
+#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_x86.inline.hpp"
@@ -2322,7 +2322,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
}
// RedefineClasses() tracing support for obsolete method entry
- if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
+ if (log_is_enabled(Trace, redefine, class, obsolete)) {
// protect the args we've loaded
save_args(masm, total_c_args, c_arg, out_regs);
__ mov_metadata(c_rarg1, method());
diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
index 0f11b9c0371..adcfe63b39f 100644
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,21 +63,6 @@ const int FPU_CNTRL_WRD_MASK = 0xFFFF;
// -------------------------------------------------------------------------------------------------------------------------
// Stub Code definitions
-static address handle_unsafe_access() {
- JavaThread* thread = JavaThread::current();
- address pc = thread->saved_exception_pc();
- // pc is the instruction which we must emulate
- // doing a no-op is fine: return garbage from the load
- // therefore, compute npc
- address npc = Assembler::locate_next_instruction(pc);
-
- // request an async exception
- thread->set_pending_unsafe_access_error();
-
- // return address of next instruction to execute
- return npc;
-}
-
class StubGenerator: public StubCodeGenerator {
private:
@@ -623,27 +608,6 @@ class StubGenerator: public StubCodeGenerator {
}
- //---------------------------------------------------------------------------
- // The following routine generates a subroutine to throw an asynchronous
- // UnknownError when an unsafe access gets a fault that could not be
- // reasonably prevented by the programmer. (Example: SIGBUS/OBJERR.)
- address generate_handler_for_unsafe_access() {
- StubCodeMark mark(this, "StubRoutines", "handler_for_unsafe_access");
- address start = __ pc();
-
- __ push(0); // hole for return address-to-be
- __ pusha(); // push registers
- Address next_pc(rsp, RegisterImpl::number_of_registers * BytesPerWord);
- BLOCK_COMMENT("call handle_unsafe_access");
- __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, handle_unsafe_access)));
- __ movptr(next_pc, rax); // stuff next address
- __ popa();
- __ ret(0); // jump to next address
-
- return start;
- }
-
-
//----------------------------------------------------------------------------------------------------
// Non-destructive plausibility checks for oops
@@ -2092,25 +2056,6 @@ class StubGenerator: public StubCodeGenerator {
entry_checkcast_arraycopy);
}
- void generate_math_stubs() {
- {
- StubCodeMark mark(this, "StubRoutines", "log10");
- StubRoutines::_intrinsic_log10 = (double (*)(double)) __ pc();
-
- __ fld_d(Address(rsp, 4));
- __ flog10();
- __ ret(0);
- }
- {
- StubCodeMark mark(this, "StubRoutines", "tan");
- StubRoutines::_intrinsic_tan = (double (*)(double)) __ pc();
-
- __ fld_d(Address(rsp, 4));
- __ trigfunc('t');
- __ ret(0);
- }
- }
-
// AES intrinsic stubs
enum {AESBlockSize = 16};
@@ -3533,6 +3478,31 @@ class StubGenerator: public StubCodeGenerator {
}
+ address generate_libmLog10() {
+ address start = __ pc();
+
+ const XMMRegister x0 = xmm0;
+ const XMMRegister x1 = xmm1;
+ const XMMRegister x2 = xmm2;
+ const XMMRegister x3 = xmm3;
+
+ const XMMRegister x4 = xmm4;
+ const XMMRegister x5 = xmm5;
+ const XMMRegister x6 = xmm6;
+ const XMMRegister x7 = xmm7;
+
+ const Register tmp = rbx;
+
+ BLOCK_COMMENT("Entry:");
+ __ enter(); // required for proper stackwalking of RuntimeStub frame
+ __ fast_log10(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp);
+ __ leave(); // required for proper stackwalking of RuntimeStub frame
+ __ ret(0);
+
+ return start;
+
+ }
+
address generate_libmPow() {
address start = __ pc();
@@ -3627,6 +3597,44 @@ class StubGenerator: public StubCodeGenerator {
return start;
+ }
+
+ address generate_libm_tan_cot_huge() {
+ address start = __ pc();
+
+ const XMMRegister x0 = xmm0;
+ const XMMRegister x1 = xmm1;
+
+ BLOCK_COMMENT("Entry:");
+ __ libm_tancot_huge(x0, x1, rax, rcx, rdx, rbx, rsi, rdi, rbp, rsp);
+
+ return start;
+
+ }
+
+ address generate_libmTan() {
+ address start = __ pc();
+
+ const XMMRegister x0 = xmm0;
+ const XMMRegister x1 = xmm1;
+ const XMMRegister x2 = xmm2;
+ const XMMRegister x3 = xmm3;
+
+ const XMMRegister x4 = xmm4;
+ const XMMRegister x5 = xmm5;
+ const XMMRegister x6 = xmm6;
+ const XMMRegister x7 = xmm7;
+
+ const Register tmp = rbx;
+
+ BLOCK_COMMENT("Entry:");
+ __ enter(); // required for proper stackwalking of RuntimeStub frame
+ __ fast_tan(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp);
+ __ leave(); // required for proper stackwalking of RuntimeStub frame
+ __ ret(0);
+
+ return start;
+
}
// Safefetch stubs.
@@ -3821,9 +3829,6 @@ class StubGenerator: public StubCodeGenerator {
// These are currently used by Solaris/Intel
StubRoutines::_atomic_xchg_entry = generate_atomic_xchg();
- StubRoutines::_handler_for_unsafe_access_entry =
- generate_handler_for_unsafe_access();
-
// platform dependent
create_control_words();
@@ -3852,24 +3857,25 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_crc32c_table_addr = (address)StubRoutines::x86::_crc32c_table;
StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C(supports_clmul);
}
- if (VM_Version::supports_sse2()) {
+ if (VM_Version::supports_sse2() && UseLibmIntrinsic) {
+ StubRoutines::x86::_L_2il0floatpacket_0_adr = (address)StubRoutines::x86::_L_2il0floatpacket_0;
+ StubRoutines::x86::_Pi4Inv_adr = (address)StubRoutines::x86::_Pi4Inv;
+ StubRoutines::x86::_Pi4x3_adr = (address)StubRoutines::x86::_Pi4x3;
+ StubRoutines::x86::_Pi4x4_adr = (address)StubRoutines::x86::_Pi4x4;
+ StubRoutines::x86::_ones_adr = (address)StubRoutines::x86::_ones;
StubRoutines::_dexp = generate_libmExp();
StubRoutines::_dlog = generate_libmLog();
+ StubRoutines::_dlog10 = generate_libmLog10();
StubRoutines::_dpow = generate_libmPow();
- if (UseLibmSinIntrinsic || UseLibmCosIntrinsic) {
- StubRoutines::_dlibm_reduce_pi04l = generate_libm_reduce_pi04l();
- StubRoutines::_dlibm_sin_cos_huge = generate_libm_sin_cos_huge();
- }
- if (UseLibmSinIntrinsic) {
- StubRoutines::_dsin = generate_libmSin();
- }
- if (UseLibmCosIntrinsic) {
- StubRoutines::_dcos = generate_libmCos();
- }
+ StubRoutines::_dlibm_reduce_pi04l = generate_libm_reduce_pi04l();
+ StubRoutines::_dlibm_sin_cos_huge = generate_libm_sin_cos_huge();
+ StubRoutines::_dsin = generate_libmSin();
+ StubRoutines::_dcos = generate_libmCos();
+ StubRoutines::_dlibm_tan_cot_huge = generate_libm_tan_cot_huge();
+ StubRoutines::_dtan = generate_libmTan();
}
}
-
void generate_all() {
// Generates all stubs and initializes the entry points
@@ -3888,8 +3894,6 @@ class StubGenerator: public StubCodeGenerator {
// arraycopy stubs used by compilers
generate_arraycopy_stubs();
- generate_math_stubs();
-
// don't bother generating these AES intrinsic stubs unless global flag is set
if (UseAESIntrinsics) {
StubRoutines::x86::_key_shuffle_mask_addr = generate_key_shuffle_mask(); // might be needed by the others
diff --git a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
index d51f3a696a0..768cff7c635 100644
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,21 +61,6 @@ const int MXCSR_MASK = 0xFFC0; // Mask out any pending exceptions
// Stub Code definitions
-static address handle_unsafe_access() {
- JavaThread* thread = JavaThread::current();
- address pc = thread->saved_exception_pc();
- // pc is the instruction which we must emulate
- // doing a no-op is fine: return garbage from the load
- // therefore, compute npc
- address npc = Assembler::locate_next_instruction(pc);
-
- // request an async exception
- thread->set_pending_unsafe_access_error();
-
- // return address of next instruction to execute
- return npc;
-}
-
class StubGenerator: public StubCodeGenerator {
private:
@@ -989,32 +974,6 @@ class StubGenerator: public StubCodeGenerator {
return start;
}
- // The following routine generates a subroutine to throw an
- // asynchronous UnknownError when an unsafe access gets a fault that
- // could not be reasonably prevented by the programmer. (Example:
- // SIGBUS/OBJERR.)
- address generate_handler_for_unsafe_access() {
- StubCodeMark mark(this, "StubRoutines", "handler_for_unsafe_access");
- address start = __ pc();
-
- __ push(0); // hole for return address-to-be
- __ pusha(); // push registers
- Address next_pc(rsp, RegisterImpl::number_of_registers * BytesPerWord);
-
- // FIXME: this probably needs alignment logic
-
- __ subptr(rsp, frame::arg_reg_save_area_bytes);
- BLOCK_COMMENT("call handle_unsafe_access");
- __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, handle_unsafe_access)));
- __ addptr(rsp, frame::arg_reg_save_area_bytes);
-
- __ movptr(next_pc, rax); // stuff next address
- __ popa();
- __ ret(0); // jump to next address
-
- return start;
- }
-
// Non-destructive plausibility checks for oops
//
// Arguments:
@@ -2971,35 +2930,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_arrayof_oop_arraycopy_uninit = StubRoutines::_oop_arraycopy_uninit;
}
- void generate_math_stubs() {
- {
- StubCodeMark mark(this, "StubRoutines", "log10");
- StubRoutines::_intrinsic_log10 = (double (*)(double)) __ pc();
-
- __ subq(rsp, 8);
- __ movdbl(Address(rsp, 0), xmm0);
- __ fld_d(Address(rsp, 0));
- __ flog10();
- __ fstp_d(Address(rsp, 0));
- __ movdbl(xmm0, Address(rsp, 0));
- __ addq(rsp, 8);
- __ ret(0);
- }
- {
- StubCodeMark mark(this, "StubRoutines", "tan");
- StubRoutines::_intrinsic_tan = (double (*)(double)) __ pc();
-
- __ subq(rsp, 8);
- __ movdbl(Address(rsp, 0), xmm0);
- __ fld_d(Address(rsp, 0));
- __ trigfunc('t');
- __ fstp_d(Address(rsp, 0));
- __ movdbl(xmm0, Address(rsp, 0));
- __ addq(rsp, 8);
- __ ret(0);
- }
- }
-
// AES intrinsic stubs
enum {AESBlockSize = 16};
@@ -3800,12 +3730,29 @@ class StubGenerator: public StubCodeGenerator {
address start = __ pc();
__ emit_data64(0x0405060700010203, relocInfo::none);
__ emit_data64(0x0c0d0e0f08090a0b, relocInfo::none);
+
+ if (VM_Version::supports_avx2()) {
+ __ emit_data64(0x0405060700010203, relocInfo::none); // second copy
+ __ emit_data64(0x0c0d0e0f08090a0b, relocInfo::none);
+ // _SHUF_00BA
+ __ emit_data64(0x0b0a090803020100, relocInfo::none);
+ __ emit_data64(0xFFFFFFFFFFFFFFFF, relocInfo::none);
+ __ emit_data64(0x0b0a090803020100, relocInfo::none);
+ __ emit_data64(0xFFFFFFFFFFFFFFFF, relocInfo::none);
+ // _SHUF_DC00
+ __ emit_data64(0xFFFFFFFFFFFFFFFF, relocInfo::none);
+ __ emit_data64(0x0b0a090803020100, relocInfo::none);
+ __ emit_data64(0xFFFFFFFFFFFFFFFF, relocInfo::none);
+ __ emit_data64(0x0b0a090803020100, relocInfo::none);
+ }
+
return start;
}
// ofs and limit are use for multi-block byte array.
// int com.sun.security.provider.DigestBase.implCompressMultiBlock(byte[] b, int ofs, int limit)
address generate_sha256_implCompress(bool multi_block, const char *name) {
+ assert(VM_Version::supports_sha() || VM_Version::supports_avx2(), "");
__ align(CodeEntryAlignment);
StubCodeMark mark(this, "StubRoutines", name);
address start = __ pc();
@@ -3834,16 +3781,37 @@ class StubGenerator: public StubCodeGenerator {
__ movdqu(Address(rsp, 0), xmm6);
__ movdqu(Address(rsp, 2 * wordSize), xmm7);
__ movdqu(Address(rsp, 4 * wordSize), xmm8);
+
+ if (!VM_Version::supports_sha() && VM_Version::supports_avx2()) {
+ __ subptr(rsp, 10 * wordSize);
+ __ movdqu(Address(rsp, 0), xmm9);
+ __ movdqu(Address(rsp, 2 * wordSize), xmm10);
+ __ movdqu(Address(rsp, 4 * wordSize), xmm11);
+ __ movdqu(Address(rsp, 6 * wordSize), xmm12);
+ __ movdqu(Address(rsp, 8 * wordSize), xmm13);
+ }
#endif
__ subptr(rsp, 4 * wordSize);
- __ fast_sha256(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
- buf, state, ofs, limit, rsp, multi_block, shuf_mask);
-
+ if (VM_Version::supports_sha()) {
+ __ fast_sha256(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
+ buf, state, ofs, limit, rsp, multi_block, shuf_mask);
+ } else if (VM_Version::supports_avx2()) {
+ __ sha256_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
+ buf, state, ofs, limit, rsp, multi_block, shuf_mask);
+ }
__ addptr(rsp, 4 * wordSize);
#ifdef _WIN64
// restore xmm regs belonging to calling function
+ if (!VM_Version::supports_sha() && VM_Version::supports_avx2()) {
+ __ movdqu(xmm9, Address(rsp, 0));
+ __ movdqu(xmm10, Address(rsp, 2 * wordSize));
+ __ movdqu(xmm11, Address(rsp, 4 * wordSize));
+ __ movdqu(xmm12, Address(rsp, 6 * wordSize));
+ __ movdqu(xmm13, Address(rsp, 8 * wordSize));
+ __ addptr(rsp, 10 * wordSize);
+ }
__ movdqu(xmm6, Address(rsp, 0));
__ movdqu(xmm7, Address(rsp, 2 * wordSize));
__ movdqu(xmm8, Address(rsp, 4 * wordSize));
@@ -4400,7 +4368,7 @@ class StubGenerator: public StubCodeGenerator {
* c_rarg0 - int crc
* c_rarg1 - byte* buf
* c_rarg2 - long length
- * c_rarg3 - table_start - optional (present only when doing a library_calll,
+ * c_rarg3 - table_start - optional (present only when doing a library_call,
* not used by x86 algorithm)
*
* Ouput:
@@ -4523,6 +4491,9 @@ class StubGenerator: public StubCodeGenerator {
* c_rarg1 - objb address
* c_rarg3 - length length
* c_rarg4 - scale log2_array_indxscale
+ *
+ * Output:
+ * rax - int >= mismatched index, < 0 bitwise complement of tail
*/
address generate_vectorizedMismatch() {
__ align(CodeEntryAlignment);
@@ -4730,6 +4701,46 @@ class StubGenerator: public StubCodeGenerator {
#endif
__ fast_log(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp1, tmp2);
+#ifdef _WIN64
+ // restore xmm regs belonging to calling function
+ __ movdqu(xmm6, Address(rsp, 0));
+ __ movdqu(xmm7, Address(rsp, 2 * wordSize));
+ __ addptr(rsp, 4 * wordSize);
+#endif
+
+ __ leave(); // required for proper stackwalking of RuntimeStub frame
+ __ ret(0);
+
+ return start;
+
+ }
+
+ address generate_libmLog10() {
+ address start = __ pc();
+
+ const XMMRegister x0 = xmm0;
+ const XMMRegister x1 = xmm1;
+ const XMMRegister x2 = xmm2;
+ const XMMRegister x3 = xmm3;
+
+ const XMMRegister x4 = xmm4;
+ const XMMRegister x5 = xmm5;
+ const XMMRegister x6 = xmm6;
+ const XMMRegister x7 = xmm7;
+
+ const Register tmp = r11;
+
+ BLOCK_COMMENT("Entry:");
+ __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+#ifdef _WIN64
+ // save the xmm registers which must be preserved 6-7
+ __ subptr(rsp, 4 * wordSize);
+ __ movdqu(Address(rsp, 0), xmm6);
+ __ movdqu(Address(rsp, 2 * wordSize), xmm7);
+#endif
+ __ fast_log10(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp);
+
#ifdef _WIN64
// restore xmm regs belonging to calling function
__ movdqu(xmm6, Address(rsp, 0));
@@ -4809,6 +4820,8 @@ class StubGenerator: public StubCodeGenerator {
__ enter(); // required for proper stackwalking of RuntimeStub frame
#ifdef _WIN64
+ __ push(rsi);
+ __ push(rdi);
// save the xmm registers which must be preserved 6-7
__ subptr(rsp, 4 * wordSize);
__ movdqu(Address(rsp, 0), xmm6);
@@ -4821,6 +4834,8 @@ class StubGenerator: public StubCodeGenerator {
__ movdqu(xmm6, Address(rsp, 0));
__ movdqu(xmm7, Address(rsp, 2 * wordSize));
__ addptr(rsp, 4 * wordSize);
+ __ pop(rdi);
+ __ pop(rsi);
#endif
__ leave(); // required for proper stackwalking of RuntimeStub frame
@@ -4852,6 +4867,8 @@ class StubGenerator: public StubCodeGenerator {
__ enter(); // required for proper stackwalking of RuntimeStub frame
#ifdef _WIN64
+ __ push(rsi);
+ __ push(rdi);
// save the xmm registers which must be preserved 6-7
__ subptr(rsp, 4 * wordSize);
__ movdqu(Address(rsp, 0), xmm6);
@@ -4864,6 +4881,55 @@ class StubGenerator: public StubCodeGenerator {
__ movdqu(xmm6, Address(rsp, 0));
__ movdqu(xmm7, Address(rsp, 2 * wordSize));
__ addptr(rsp, 4 * wordSize);
+ __ pop(rdi);
+ __ pop(rsi);
+#endif
+
+ __ leave(); // required for proper stackwalking of RuntimeStub frame
+ __ ret(0);
+
+ return start;
+
+ }
+
+ address generate_libmTan() {
+ address start = __ pc();
+
+ const XMMRegister x0 = xmm0;
+ const XMMRegister x1 = xmm1;
+ const XMMRegister x2 = xmm2;
+ const XMMRegister x3 = xmm3;
+
+ const XMMRegister x4 = xmm4;
+ const XMMRegister x5 = xmm5;
+ const XMMRegister x6 = xmm6;
+ const XMMRegister x7 = xmm7;
+
+ const Register tmp1 = r8;
+ const Register tmp2 = r9;
+ const Register tmp3 = r10;
+ const Register tmp4 = r11;
+
+ BLOCK_COMMENT("Entry:");
+ __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+#ifdef _WIN64
+ __ push(rsi);
+ __ push(rdi);
+ // save the xmm registers which must be preserved 6-7
+ __ subptr(rsp, 4 * wordSize);
+ __ movdqu(Address(rsp, 0), xmm6);
+ __ movdqu(Address(rsp, 2 * wordSize), xmm7);
+#endif
+ __ fast_tan(x0, x1, x2, x3, x4, x5, x6, x7, rax, rcx, rdx, tmp1, tmp2, tmp3, tmp4);
+
+#ifdef _WIN64
+ // restore xmm regs belonging to calling function
+ __ movdqu(xmm6, Address(rsp, 0));
+ __ movdqu(xmm7, Address(rsp, 2 * wordSize));
+ __ addptr(rsp, 4 * wordSize);
+ __ pop(rdi);
+ __ pop(rsi);
#endif
__ leave(); // required for proper stackwalking of RuntimeStub frame
@@ -5032,9 +5098,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_atomic_add_ptr_entry = generate_atomic_add_ptr();
StubRoutines::_fence_entry = generate_orderaccess_fence();
- StubRoutines::_handler_for_unsafe_access_entry =
- generate_handler_for_unsafe_access();
-
// platform dependent
StubRoutines::x86::_get_previous_fp_entry = generate_get_previous_fp();
StubRoutines::x86::_get_previous_sp_entry = generate_get_previous_sp();
@@ -5064,16 +5127,28 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_crc32c_table_addr = (address)StubRoutines::x86::_crc32c_table;
StubRoutines::_updateBytesCRC32C = generate_updateBytesCRC32C(supports_clmul);
}
- if (VM_Version::supports_sse2()) {
+ if (VM_Version::supports_sse2() && UseLibmIntrinsic) {
+ StubRoutines::x86::_ONEHALF_adr = (address)StubRoutines::x86::_ONEHALF;
+ StubRoutines::x86::_P_2_adr = (address)StubRoutines::x86::_P_2;
+ StubRoutines::x86::_SC_4_adr = (address)StubRoutines::x86::_SC_4;
+ StubRoutines::x86::_Ctable_adr = (address)StubRoutines::x86::_Ctable;
+ StubRoutines::x86::_SC_2_adr = (address)StubRoutines::x86::_SC_2;
+ StubRoutines::x86::_SC_3_adr = (address)StubRoutines::x86::_SC_3;
+ StubRoutines::x86::_SC_1_adr = (address)StubRoutines::x86::_SC_1;
+ StubRoutines::x86::_PI_INV_TABLE_adr = (address)StubRoutines::x86::_PI_INV_TABLE;
+ StubRoutines::x86::_PI_4_adr = (address)StubRoutines::x86::_PI_4;
+ StubRoutines::x86::_PI32INV_adr = (address)StubRoutines::x86::_PI32INV;
+ StubRoutines::x86::_SIGN_MASK_adr = (address)StubRoutines::x86::_SIGN_MASK;
+ StubRoutines::x86::_P_1_adr = (address)StubRoutines::x86::_P_1;
+ StubRoutines::x86::_P_3_adr = (address)StubRoutines::x86::_P_3;
+ StubRoutines::x86::_NEG_ZERO_adr = (address)StubRoutines::x86::_NEG_ZERO;
StubRoutines::_dexp = generate_libmExp();
StubRoutines::_dlog = generate_libmLog();
+ StubRoutines::_dlog10 = generate_libmLog10();
StubRoutines::_dpow = generate_libmPow();
- if (UseLibmSinIntrinsic) {
- StubRoutines::_dsin = generate_libmSin();
- }
- if (UseLibmCosIntrinsic) {
- StubRoutines::_dcos = generate_libmCos();
- }
+ StubRoutines::_dtan = generate_libmTan();
+ StubRoutines::_dsin = generate_libmSin();
+ StubRoutines::_dcos = generate_libmCos();
}
}
@@ -5118,8 +5193,6 @@ class StubGenerator: public StubCodeGenerator {
// arraycopy stubs used by compilers
generate_arraycopy_stubs();
- generate_math_stubs();
-
// don't bother generating these AES intrinsic stubs unless global flag is set
if (UseAESIntrinsics) {
StubRoutines::x86::_key_shuffle_mask_addr = generate_key_shuffle_mask(); // needed by the others
@@ -5141,6 +5214,13 @@ class StubGenerator: public StubCodeGenerator {
}
if (UseSHA256Intrinsics) {
StubRoutines::x86::_k256_adr = (address)StubRoutines::x86::_k256;
+ char* dst = (char*)StubRoutines::x86::_k256_W;
+ char* src = (char*)StubRoutines::x86::_k256;
+ for (int ii = 0; ii < 16; ++ii) {
+ memcpy(dst + 32 * ii, src + 16 * ii, 16);
+ memcpy(dst + 32 * ii + 16, src + 16 * ii, 16);
+ }
+ StubRoutines::x86::_k256_W_adr = (address)StubRoutines::x86::_k256_W;
StubRoutines::x86::_pshuffle_byte_flip_mask_addr = generate_pshuffle_byte_flip_mask();
StubRoutines::_sha256_implCompress = generate_sha256_implCompress(false, "sha256_implCompress");
StubRoutines::_sha256_implCompressMB = generate_sha256_implCompress(true, "sha256_implCompressMB");
@@ -5170,9 +5250,6 @@ class StubGenerator: public StubCodeGenerator {
if (UseMulAddIntrinsic) {
StubRoutines::_mulAdd = generate_mulAdd();
}
- if (UseVectorizedMismatchIntrinsic) {
- StubRoutines::_vectorizedMismatch = generate_vectorizedMismatch();
- }
#ifndef _WINDOWS
if (UseMontgomeryMultiplyIntrinsic) {
StubRoutines::_montgomeryMultiply
@@ -5184,6 +5261,10 @@ class StubGenerator: public StubCodeGenerator {
}
#endif // WINDOWS
#endif // COMPILER2
+
+ if (UseVectorizedMismatchIntrinsic) {
+ StubRoutines::_vectorizedMismatch = generate_vectorizedMismatch();
+ }
}
public:
diff --git a/hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp b/hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp
index 141fbf048eb..ea7952e9660 100644
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp
@@ -46,8 +46,34 @@ address StubRoutines::x86::_ghash_byte_swap_mask_addr = NULL;
address StubRoutines::x86::_upper_word_mask_addr = NULL;
address StubRoutines::x86::_shuffle_byte_flip_mask_addr = NULL;
address StubRoutines::x86::_k256_adr = NULL;
+#ifdef _LP64
+address StubRoutines::x86::_k256_W_adr = NULL;
+#endif
address StubRoutines::x86::_pshuffle_byte_flip_mask_addr = NULL;
+//tables common for sin and cos
+address StubRoutines::x86::_ONEHALF_adr = NULL;
+address StubRoutines::x86::_P_2_adr = NULL;
+address StubRoutines::x86::_SC_4_adr = NULL;
+address StubRoutines::x86::_Ctable_adr = NULL;
+address StubRoutines::x86::_SC_2_adr = NULL;
+address StubRoutines::x86::_SC_3_adr = NULL;
+address StubRoutines::x86::_SC_1_adr = NULL;
+address StubRoutines::x86::_PI_INV_TABLE_adr = NULL;
+address StubRoutines::x86::_PI_4_adr = NULL;
+address StubRoutines::x86::_PI32INV_adr = NULL;
+address StubRoutines::x86::_SIGN_MASK_adr = NULL;
+address StubRoutines::x86::_P_1_adr = NULL;
+address StubRoutines::x86::_P_3_adr = NULL;
+address StubRoutines::x86::_NEG_ZERO_adr = NULL;
+
+//tables common for sincos and tancot
+address StubRoutines::x86::_L_2il0floatpacket_0_adr = NULL;
+address StubRoutines::x86::_Pi4Inv_adr = NULL;
+address StubRoutines::x86::_Pi4x3_adr = NULL;
+address StubRoutines::x86::_Pi4x4_adr = NULL;
+address StubRoutines::x86::_ones_adr = NULL;
+
uint64_t StubRoutines::x86::_crc_by128_masks[] =
{
/* The fields in this structure are arranged so that they can be
@@ -266,3 +292,9 @@ ALIGNED_(64) juint StubRoutines::x86::_k256[] =
0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL
};
+
+#ifdef _LP64
+// used in MacroAssembler::sha256_AVX2
+// dynamically built from _k256
+ALIGNED_(64) juint StubRoutines::x86::_k256_W[2*sizeof(StubRoutines::x86::_k256)];
+#endif
diff --git a/hotspot/src/cpu/x86/vm/stubRoutines_x86.hpp b/hotspot/src/cpu/x86/vm/stubRoutines_x86.hpp
index 4c9ce0153fd..eeceb0169ee 100644
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86.hpp
@@ -54,9 +54,55 @@
//k256 table for sha256
static juint _k256[];
static address _k256_adr;
+#ifdef _LP64
+ static juint _k256_W[];
+ static address _k256_W_adr;
+#endif
// byte flip mask for sha256
static address _pshuffle_byte_flip_mask_addr;
+ //tables common for LIBM sin and cos
+ static juint _ONEHALF[];
+ static address _ONEHALF_adr;
+ static juint _P_2[];
+ static address _P_2_adr;
+ static juint _SC_4[];
+ static address _SC_4_adr;
+ static juint _Ctable[];
+ static address _Ctable_adr;
+ static juint _SC_2[];
+ static address _SC_2_adr;
+ static juint _SC_3[];
+ static address _SC_3_adr;
+ static juint _SC_1[];
+ static address _SC_1_adr;
+ static juint _PI_INV_TABLE[];
+ static address _PI_INV_TABLE_adr;
+ static juint _PI_4[];
+ static address _PI_4_adr;
+ static juint _PI32INV[];
+ static address _PI32INV_adr;
+ static juint _SIGN_MASK[];
+ static address _SIGN_MASK_adr;
+ static juint _P_1[];
+ static address _P_1_adr;
+ static juint _P_3[];
+ static address _P_3_adr;
+ static juint _NEG_ZERO[];
+ static address _NEG_ZERO_adr;
+
+ //tables common for LIBM sincos and tancot
+ static juint _L_2il0floatpacket_0[];
+ static address _L_2il0floatpacket_0_adr;
+ static juint _Pi4Inv[];
+ static address _Pi4Inv_adr;
+ static juint _Pi4x3[];
+ static address _Pi4x3_adr;
+ static juint _Pi4x4[];
+ static address _Pi4x4_adr;
+ static juint _ones[];
+ static address _ones_adr;
+
public:
static address verify_mxcsr_entry() { return _verify_mxcsr_entry; }
static address key_shuffle_mask_addr() { return _key_shuffle_mask_addr; }
@@ -67,6 +113,29 @@
static address upper_word_mask_addr() { return _upper_word_mask_addr; }
static address shuffle_byte_flip_mask_addr() { return _shuffle_byte_flip_mask_addr; }
static address k256_addr() { return _k256_adr; }
+#ifdef _LP64
+ static address k256_W_addr() { return _k256_W_adr; }
+#endif
static address pshuffle_byte_flip_mask_addr() { return _pshuffle_byte_flip_mask_addr; }
static void generate_CRC32C_table(bool is_pclmulqdq_supported);
+ static address _ONEHALF_addr() { return _ONEHALF_adr; }
+ static address _P_2_addr() { return _P_2_adr; }
+ static address _SC_4_addr() { return _SC_4_adr; }
+ static address _Ctable_addr() { return _Ctable_adr; }
+ static address _SC_2_addr() { return _SC_2_adr; }
+ static address _SC_3_addr() { return _SC_3_adr; }
+ static address _SC_1_addr() { return _SC_1_adr; }
+ static address _PI_INV_TABLE_addr() { return _PI_INV_TABLE_adr; }
+ static address _PI_4_addr() { return _PI_4_adr; }
+ static address _PI32INV_addr() { return _PI32INV_adr; }
+ static address _SIGN_MASK_addr() { return _SIGN_MASK_adr; }
+ static address _P_1_addr() { return _P_1_adr; }
+ static address _P_3_addr() { return _P_3_adr; }
+ static address _NEG_ZERO_addr() { return _NEG_ZERO_adr; }
+ static address _L_2il0floatpacket_0_addr() { return _L_2il0floatpacket_0_adr; }
+ static address _Pi4Inv_addr() { return _Pi4Inv_adr; }
+ static address _Pi4x3_addr() { return _Pi4x3_adr; }
+ static address _Pi4x4_addr() { return _Pi4x4_adr; }
+ static address _ones_addr() { return _ones_adr; }
+
#endif // CPU_X86_VM_STUBROUTINES_X86_32_HPP
diff --git a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
index 84d07960f24..6d07051c901 100644
--- a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
@@ -608,18 +608,13 @@ void TemplateInterpreterGenerator::lock_method() {
// get synchronization object
{
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
Label done;
__ movl(rax, access_flags);
__ testl(rax, JVM_ACC_STATIC);
// get receiver (assume this is frequent case)
__ movptr(rax, Address(rlocals, Interpreter::local_offset_in_bytes(0)));
__ jcc(Assembler::zero, done);
- __ movptr(rax, Address(rbx, Method::const_offset()));
- __ movptr(rax, Address(rax, ConstMethod::constants_offset()));
- __ movptr(rax, Address(rax,
- ConstantPool::pool_holder_offset_in_bytes()));
- __ movptr(rax, Address(rax, mirror_offset));
+ __ load_mirror(rax, rbx);
#ifdef ASSERT
{
@@ -662,6 +657,9 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
__ movptr(rbcp, Address(rbx, Method::const_offset())); // get ConstMethod*
__ lea(rbcp, Address(rbcp, ConstMethod::codes_offset())); // get codebase
__ push(rbx); // save Method*
+ // Get mirror and store it in the frame as GC root for this Method*
+ __ load_mirror(rdx, rbx);
+ __ push(rdx);
if (ProfileInterpreter) {
Label method_data_continue;
__ movptr(rdx, Address(rbx, in_bytes(Method::method_data_offset())));
@@ -999,15 +997,11 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
// pass mirror handle if static call
{
Label L;
- const int mirror_offset = in_bytes(Klass::java_mirror_offset());
__ movl(t, Address(method, Method::access_flags_offset()));
__ testl(t, JVM_ACC_STATIC);
__ jcc(Assembler::zero, L);
// get mirror
- __ movptr(t, Address(method, Method::const_offset()));
- __ movptr(t, Address(t, ConstMethod::constants_offset()));
- __ movptr(t, Address(t, ConstantPool::pool_holder_offset_in_bytes()));
- __ movptr(t, Address(t, mirror_offset));
+ __ load_mirror(t, method);
// copy mirror into activation frame
__ movptr(Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize),
t);
diff --git a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_32.cpp b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_32.cpp
index f5c286ec784..1339b1e065e 100644
--- a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_32.cpp
+++ b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_32.cpp
@@ -345,13 +345,34 @@ address TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::M
__ fld_d(Address(rsp, 1*wordSize));
switch (kind) {
case Interpreter::java_lang_math_sin :
- __ trigfunc('s');
+ __ subptr(rsp, 2 * wordSize);
+ __ fstp_d(Address(rsp, 0));
+ if (VM_Version::supports_sse2() && StubRoutines::dsin() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dsin())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dsin)));
+ }
+ __ addptr(rsp, 2 * wordSize);
break;
case Interpreter::java_lang_math_cos :
- __ trigfunc('c');
+ __ subptr(rsp, 2 * wordSize);
+ __ fstp_d(Address(rsp, 0));
+ if (VM_Version::supports_sse2() && StubRoutines::dcos() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dcos())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dcos)));
+ }
+ __ addptr(rsp, 2 * wordSize);
break;
case Interpreter::java_lang_math_tan :
- __ trigfunc('t');
+ __ subptr(rsp, 2 * wordSize);
+ __ fstp_d(Address(rsp, 0));
+ if (StubRoutines::dtan() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dtan())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtan)));
+ }
+ __ addptr(rsp, 2 * wordSize);
break;
case Interpreter::java_lang_math_sqrt:
__ fsqrt();
@@ -362,26 +383,29 @@ address TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::M
case Interpreter::java_lang_math_log:
__ subptr(rsp, 2 * wordSize);
__ fstp_d(Address(rsp, 0));
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dlog() != NULL) {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog())));
- }
- else {
+ } else {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dlog)));
}
__ addptr(rsp, 2 * wordSize);
break;
case Interpreter::java_lang_math_log10:
- __ flog10();
- // Store to stack to convert 80bit precision back to 64bits
- __ push_fTOS();
- __ pop_fTOS();
+ __ subptr(rsp, 2 * wordSize);
+ __ fstp_d(Address(rsp, 0));
+ if (StubRoutines::dlog10() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog10())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10)));
+ }
+ __ addptr(rsp, 2 * wordSize);
break;
case Interpreter::java_lang_math_pow:
__ fld_d(Address(rsp, 3*wordSize)); // second argument
__ subptr(rsp, 4 * wordSize);
__ fstp_d(Address(rsp, 0));
__ fstp_d(Address(rsp, 2 * wordSize));
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dpow() != NULL) {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dpow())));
} else {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dpow)));
@@ -391,7 +415,7 @@ address TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::M
case Interpreter::java_lang_math_exp:
__ subptr(rsp, 2*wordSize);
__ fstp_d(Address(rsp, 0));
- if (VM_Version::supports_sse2()) {
+ if (StubRoutines::dexp() != NULL) {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
} else {
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dexp)));
diff --git a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp
index 3345cfee795..a9cb7962fb1 100644
--- a/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp
+++ b/hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp
@@ -29,6 +29,7 @@
#include "interpreter/interpreterRuntime.hpp"
#include "interpreter/templateInterpreterGenerator.hpp"
#include "runtime/arguments.hpp"
+#include "runtime/sharedRuntime.hpp"
#define __ _masm->
@@ -288,9 +289,9 @@ address TemplateInterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractI
}
/**
-* Method entry for static native methods:
+* Method entry for static (non-native) methods:
* int java.util.zip.CRC32C.updateBytes(int crc, byte[] b, int off, int end)
-* int java.util.zip.CRC32C.updateByteBuffer(int crc, long address, int off, int end)
+* int java.util.zip.CRC32C.updateDirectByteBuffer(int crc, long address, int off, int end)
*/
address TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
if (UseCRC32CIntrinsics) {
@@ -305,7 +306,7 @@ address TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry(Abstract
// Arguments are reversed on java expression stack
// Calculate address of start element
if (kind == Interpreter::java_util_zip_CRC32C_updateDirectByteBuffer) {
- __ movptr(buf, Address(rsp, 3 * wordSize)); // long buf
+ __ movptr(buf, Address(rsp, 3 * wordSize)); // long address
__ movl2ptr(off, Address(rsp, 2 * wordSize)); // offset
__ addq(buf, off); // + offset
__ movl(crc, Address(rsp, 5 * wordSize)); // Initial CRC
@@ -373,32 +374,60 @@ address TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::M
__ sqrtsd(xmm0, Address(rsp, wordSize));
} else if (kind == Interpreter::java_lang_math_exp) {
__ movdbl(xmm0, Address(rsp, wordSize));
- __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
+ if (StubRoutines::dexp() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dexp())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dexp)));
+ }
} else if (kind == Interpreter::java_lang_math_log) {
__ movdbl(xmm0, Address(rsp, wordSize));
- __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog())));
+ if (StubRoutines::dlog() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dlog)));
+ }
+ } else if (kind == Interpreter::java_lang_math_log10) {
+ __ movdbl(xmm0, Address(rsp, wordSize));
+ if (StubRoutines::dlog10() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dlog10())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dlog10)));
+ }
+ } else if (kind == Interpreter::java_lang_math_sin) {
+ __ movdbl(xmm0, Address(rsp, wordSize));
+ if (StubRoutines::dsin() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dsin())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dsin)));
+ }
+ } else if (kind == Interpreter::java_lang_math_cos) {
+ __ movdbl(xmm0, Address(rsp, wordSize));
+ if (StubRoutines::dcos() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dcos())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dcos)));
+ }
} else if (kind == Interpreter::java_lang_math_pow) {
__ movdbl(xmm1, Address(rsp, wordSize));
__ movdbl(xmm0, Address(rsp, 3 * wordSize));
- __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dpow())));
+ if (StubRoutines::dpow() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dpow())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dpow)));
+ }
+ } else if (kind == Interpreter::java_lang_math_tan) {
+ __ movdbl(xmm0, Address(rsp, wordSize));
+ if (StubRoutines::dtan() != NULL) {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::dtan())));
+ } else {
+ __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtan)));
+ }
} else {
__ fld_d(Address(rsp, wordSize));
switch (kind) {
- case Interpreter::java_lang_math_sin :
- __ trigfunc('s');
- break;
- case Interpreter::java_lang_math_cos :
- __ trigfunc('c');
- break;
- case Interpreter::java_lang_math_tan :
- __ trigfunc('t');
- break;
case Interpreter::java_lang_math_abs:
__ fabs();
break;
- case Interpreter::java_lang_math_log10:
- __ flog10();
- break;
default :
ShouldNotReachHere();
}
diff --git a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp
index 6d871ce92de..65acaffe4cf 100644
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp
@@ -732,7 +732,7 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
}
- if (supports_sha()) {
+ if (supports_sha() LP64_ONLY(|| supports_avx2() && supports_bmi2())) {
if (FLAG_IS_DEFAULT(UseSHA)) {
UseSHA = true;
}
@@ -741,7 +741,7 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseSHA, false);
}
- if (UseSHA) {
+ if (supports_sha() && UseSHA) {
if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
}
diff --git a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp
index 8dca27b546b..a4c02654cad 100644
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp
@@ -844,6 +844,11 @@ public:
static uint32_t get_xsave_header_upper_segment() {
return _cpuid_info.xem_xcr0_edx;
}
+
+ // SSE2 and later processors implement a 'pause' instruction
+ // that can be used for efficient implementation of
+ // the intrinsic for java.lang.Thread.onSpinWait()
+ static bool supports_on_spin_wait() { return supports_sse2(); }
};
#endif // CPU_X86_VM_VM_VERSION_X86_HPP
diff --git a/hotspot/src/cpu/x86/vm/x86.ad b/hotspot/src/cpu/x86/vm/x86.ad
index 603e00beef4..ce14f4c742e 100644
--- a/hotspot/src/cpu/x86/vm/x86.ad
+++ b/hotspot/src/cpu/x86/vm/x86.ad
@@ -1586,6 +1586,8 @@ class HandlerImpl {
source %{
+#include "opto/addnode.hpp"
+
// Emit exception handler code.
// Stuff framesize into a register and call a VM stub routine.
int HandlerImpl::emit_exception_handler(CodeBuffer& cbuf) {
@@ -1719,6 +1721,10 @@ const bool Matcher::match_rule_supported(int opcode) {
if (!(UseSSE > 4))
ret_value = false;
break;
+ case Op_OnSpinWait:
+ if (VM_Version::supports_on_spin_wait() == false)
+ ret_value = false;
+ break;
}
return ret_value; // Per default match rules are supported.
@@ -1754,6 +1760,15 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen) {
return ret_value; // Per default match rules are supported.
}
+const bool Matcher::has_predicated_vectors(void) {
+ bool ret_value = false;
+ if (UseAVX > 2) {
+ ret_value = VM_Version::supports_avx512vl();
+ }
+
+ return ret_value;
+}
+
const int Matcher::float_pressure(int default_pressure_threshold) {
int float_pressure_threshold = default_pressure_threshold;
#ifdef _LP64
@@ -1848,6 +1863,79 @@ const bool Matcher::pass_original_key_for_aes() {
return false;
}
+
+const bool Matcher::convi2l_type_required = true;
+
+// Check for shift by small constant as well
+static bool clone_shift(Node* shift, Matcher* matcher, Matcher::MStack& mstack, VectorSet& address_visited) {
+ if (shift->Opcode() == Op_LShiftX && shift->in(2)->is_Con() &&
+ shift->in(2)->get_int() <= 3 &&
+ // Are there other uses besides address expressions?
+ !matcher->is_visited(shift)) {
+ address_visited.set(shift->_idx); // Flag as address_visited
+ mstack.push(shift->in(2), Matcher::Visit);
+ Node *conv = shift->in(1);
+#ifdef _LP64
+ // Allow Matcher to match the rule which bypass
+ // ConvI2L operation for an array index on LP64
+ // if the index value is positive.
+ if (conv->Opcode() == Op_ConvI2L &&
+ conv->as_Type()->type()->is_long()->_lo >= 0 &&
+ // Are there other uses besides address expressions?
+ !matcher->is_visited(conv)) {
+ address_visited.set(conv->_idx); // Flag as address_visited
+ mstack.push(conv->in(1), Matcher::Pre_Visit);
+ } else
+#endif
+ mstack.push(conv, Matcher::Pre_Visit);
+ return true;
+ }
+ return false;
+}
+
+// Should the Matcher clone shifts on addressing modes, expecting them
+// to be subsumed into complex addressing expressions or compute them
+// into registers?
+bool Matcher::clone_address_expressions(AddPNode* m, Matcher::MStack& mstack, VectorSet& address_visited) {
+ Node *off = m->in(AddPNode::Offset);
+ if (off->is_Con()) {
+ address_visited.test_set(m->_idx); // Flag as address_visited
+ Node *adr = m->in(AddPNode::Address);
+
+ // Intel can handle 2 adds in addressing mode
+ // AtomicAdd is not an addressing expression.
+ // Cheap to find it by looking for screwy base.
+ if (adr->is_AddP() &&
+ !adr->in(AddPNode::Base)->is_top() &&
+ // Are there other uses besides address expressions?
+ !is_visited(adr)) {
+ address_visited.set(adr->_idx); // Flag as address_visited
+ Node *shift = adr->in(AddPNode::Offset);
+ if (!clone_shift(shift, this, mstack, address_visited)) {
+ mstack.push(shift, Pre_Visit);
+ }
+ mstack.push(adr->in(AddPNode::Address), Pre_Visit);
+ mstack.push(adr->in(AddPNode::Base), Pre_Visit);
+ } else {
+ mstack.push(adr, Pre_Visit);
+ }
+
+ // Clone X+offset as it also folds into most addressing expressions
+ mstack.push(off, Visit);
+ mstack.push(m->in(AddPNode::Base), Pre_Visit);
+ return true;
+ } else if (clone_shift(off, this, mstack, address_visited)) {
+ address_visited.test_set(m->_idx); // Flag as address_visited
+ mstack.push(m->in(AddPNode::Address), Pre_Visit);
+ mstack.push(m->in(AddPNode::Base), Pre_Visit);
+ return true;
+ }
+ return false;
+}
+
+void Compile::reshape_address(AddPNode* addp) {
+}
+
// Helper methods for MachSpillCopyNode::implementation().
static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo,
int src_hi, int dst_hi, uint ireg, outputStream* st) {
@@ -1871,7 +1959,7 @@ static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo
__ vmovdqu(as_XMMRegister(Matcher::_regEncode[dst_lo]), as_XMMRegister(Matcher::_regEncode[src_lo]));
break;
case Op_VecZ:
- __ evmovdqul(as_XMMRegister(Matcher::_regEncode[dst_lo]), as_XMMRegister(Matcher::_regEncode[src_lo]), 2);
+ __ evmovdquq(as_XMMRegister(Matcher::_regEncode[dst_lo]), as_XMMRegister(Matcher::_regEncode[src_lo]), 2);
break;
default:
ShouldNotReachHere();
@@ -1926,7 +2014,7 @@ static int vec_spill_helper(CodeBuffer *cbuf, bool do_size, bool is_load,
__ vmovdqu(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset));
break;
case Op_VecZ:
- __ evmovdqul(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset), 2);
+ __ evmovdquq(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset), 2);
break;
default:
ShouldNotReachHere();
@@ -1946,7 +2034,7 @@ static int vec_spill_helper(CodeBuffer *cbuf, bool do_size, bool is_load,
__ vmovdqu(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]));
break;
case Op_VecZ:
- __ evmovdqul(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]), 2);
+ __ evmovdquq(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]), 2);
break;
default:
ShouldNotReachHere();
@@ -2172,6 +2260,19 @@ instruct ShouldNotReachHere() %{
ins_pipe(pipe_slow);
%}
+// =================================EVEX special===============================
+
+instruct setMask(rRegI dst, rRegI src) %{
+ predicate(Matcher::has_predicated_vectors());
+ match(Set dst (SetVectMaskI src));
+ effect(TEMP dst);
+ format %{ "setvectmask $dst, $src" %}
+ ins_encode %{
+ __ setvectmask($dst$$Register, $src$$Register);
+ %}
+ ins_pipe(pipe_slow);
+%}
+
// ============================================================================
instruct addF_reg(regF dst, regF src) %{
@@ -2996,6 +3097,24 @@ instruct sqrtD_imm(regD dst, immD con) %{
ins_pipe(pipe_slow);
%}
+instruct onspinwait() %{
+ match(OnSpinWait);
+ ins_cost(200);
+
+ format %{
+ $$template
+ if (os::is_MP()) {
+ $$emit$$"pause\t! membar_onspinwait"
+ } else {
+ $$emit$$"MEMBAR-onspinwait ! (empty encoding)"
+ }
+ %}
+ ins_encode %{
+ __ pause();
+ %}
+ ins_pipe(pipe_slow);
+%}
+
// ====================VECTOR INSTRUCTIONS=====================================
// Load vectors (4 bytes long)
@@ -3047,11 +3166,11 @@ instruct loadV32(vecY dst, memory mem) %{
%}
// Load vectors (64 bytes long)
-instruct loadV64(vecZ dst, memory mem) %{
- predicate(n->as_LoadVector()->memory_size() == 64);
+instruct loadV64_dword(vecZ dst, memory mem) %{
+ predicate(n->as_LoadVector()->memory_size() == 64 && n->as_LoadVector()->element_size() <= 4);
match(Set dst (LoadVector mem));
ins_cost(125);
- format %{ "vmovdqu $dst k0,$mem\t! load vector (64 bytes)" %}
+ format %{ "vmovdqul $dst k0,$mem\t! load vector (64 bytes)" %}
ins_encode %{
int vector_len = 2;
__ evmovdqul($dst$$XMMRegister, $mem$$Address, vector_len);
@@ -3059,6 +3178,19 @@ instruct loadV64(vecZ dst, memory mem) %{
ins_pipe( pipe_slow );
%}
+// Load vectors (64 bytes long)
+instruct loadV64_qword(vecZ dst, memory mem) %{
+ predicate(n->as_LoadVector()->memory_size() == 64 && n->as_LoadVector()->element_size() > 4);
+ match(Set dst (LoadVector mem));
+ ins_cost(125);
+ format %{ "vmovdquq $dst k0,$mem\t! load vector (64 bytes)" %}
+ ins_encode %{
+ int vector_len = 2;
+ __ evmovdquq($dst$$XMMRegister, $mem$$Address, vector_len);
+ %}
+ ins_pipe( pipe_slow );
+%}
+
// Store vectors
instruct storeV4(memory mem, vecS src) %{
predicate(n->as_StoreVector()->memory_size() == 4);
@@ -3104,11 +3236,11 @@ instruct storeV32(memory mem, vecY src) %{
ins_pipe( pipe_slow );
%}
-instruct storeV64(memory mem, vecZ src) %{
- predicate(n->as_StoreVector()->memory_size() == 64);
+instruct storeV64_dword(memory mem, vecZ src) %{
+ predicate(n->as_StoreVector()->memory_size() == 64 && n->as_StoreVector()->element_size() <= 4);
match(Set mem (StoreVector mem src));
ins_cost(145);
- format %{ "vmovdqu $mem k0,$src\t! store vector (64 bytes)" %}
+ format %{ "vmovdqul $mem k0,$src\t! store vector (64 bytes)" %}
ins_encode %{
int vector_len = 2;
__ evmovdqul($mem$$Address, $src$$XMMRegister, vector_len);
@@ -3116,6 +3248,18 @@ instruct storeV64(memory mem, vecZ src) %{
ins_pipe( pipe_slow );
%}
+instruct storeV64_qword(memory mem, vecZ src) %{
+ predicate(n->as_StoreVector()->memory_size() == 64 && n->as_StoreVector()->element_size() > 4);
+ match(Set mem (StoreVector mem src));
+ ins_cost(145);
+ format %{ "vmovdquq $mem k0,$src\t! store vector (64 bytes)" %}
+ ins_encode %{
+ int vector_len = 2;
+ __ evmovdquq($mem$$Address, $src$$XMMRegister, vector_len);
+ %}
+ ins_pipe( pipe_slow );
+%}
+
// ====================LEGACY REPLICATE=======================================
instruct Repl4B_mem(vecS dst, memory mem) %{
diff --git a/hotspot/src/cpu/x86/vm/x86_32.ad b/hotspot/src/cpu/x86/vm/x86_32.ad
index a7ee85d03ae..a45cb554e3c 100644
--- a/hotspot/src/cpu/x86/vm/x86_32.ad
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad
@@ -1021,10 +1021,10 @@ static int vec_stack_to_stack_helper(CodeBuffer *cbuf, bool do_size, int src_off
__ vmovdqu(xmm0, Address(rsp, -32));
break;
case Op_VecZ:
- __ evmovdqul(Address(rsp, -64), xmm0, 2);
- __ evmovdqul(xmm0, Address(rsp, src_offset), 2);
- __ evmovdqul(Address(rsp, dst_offset), xmm0, 2);
- __ evmovdqul(xmm0, Address(rsp, -64), 2);
+ __ evmovdquq(Address(rsp, -64), xmm0, 2);
+ __ evmovdquq(xmm0, Address(rsp, src_offset), 2);
+ __ evmovdquq(Address(rsp, dst_offset), xmm0, 2);
+ __ evmovdquq(xmm0, Address(rsp, -64), 2);
break;
default:
ShouldNotReachHere();
@@ -1438,11 +1438,6 @@ const int Matcher::float_cmove_cost() { return (UseSSE>=1) ? ConditionalMoveLimi
// Does the CPU require late expand (see block.cpp for description of late expand)?
const bool Matcher::require_postalloc_expand = false;
-// Should the Matcher clone shifts on addressing modes, expecting them to
-// be subsumed into complex addressing expressions or compute them into
-// registers? True for Intel but false for most RISCs
-const bool Matcher::clone_shift_expressions = true;
-
// Do we need to mask the count passed to shift instructions or does
// the cpu only look at the lower 5/6 bits anyway?
const bool Matcher::need_masked_shift_count = false;
@@ -9828,27 +9823,6 @@ instruct modD_reg(regD dst, regD src0, regD src1, eAXRegI rax, eFlagsReg cr) %{
ins_pipe( pipe_slow );
%}
-instruct tanDPR_reg(regDPR1 dst, regDPR1 src) %{
- predicate (UseSSE<=1);
- match(Set dst(TanD src));
- format %{ "DTAN $dst" %}
- ins_encode( Opcode(0xD9), Opcode(0xF2), // fptan
- Opcode(0xDD), Opcode(0xD8)); // fstp st
- ins_pipe( pipe_slow );
-%}
-
-instruct tanD_reg(regD dst, eFlagsReg cr) %{
- predicate (UseSSE>=2);
- match(Set dst(TanD dst));
- effect(KILL cr); // Push_{Src|Result}D() uses "{SUB|ADD} ESP,8"
- format %{ "DTAN $dst" %}
- ins_encode( Push_SrcD(dst),
- Opcode(0xD9), Opcode(0xF2), // fptan
- Opcode(0xDD), Opcode(0xD8), // fstp st
- Push_ResultD(dst) );
- ins_pipe( pipe_slow );
-%}
-
instruct atanDPR_reg(regDPR dst, regDPR src) %{
predicate (UseSSE<=1);
match(Set dst(AtanD dst src));
@@ -9880,41 +9854,6 @@ instruct sqrtDPR_reg(regDPR dst, regDPR src) %{
ins_pipe( pipe_slow );
%}
-instruct log10DPR_reg(regDPR1 dst, regDPR1 src) %{
- predicate (UseSSE<=1);
- // The source Double operand on FPU stack
- match(Set dst (Log10D src));
- // fldlg2 ; push log_10(2) on the FPU stack; full 80-bit number
- // fxch ; swap ST(0) with ST(1)
- // fyl2x ; compute log_10(2) * log_2(x)
- format %{ "FLDLG2 \t\t\t#Log10\n\t"
- "FXCH \n\t"
- "FYL2X \t\t\t# Q=Log10*Log_2(x)"
- %}
- ins_encode( Opcode(0xD9), Opcode(0xEC), // fldlg2
- Opcode(0xD9), Opcode(0xC9), // fxch
- Opcode(0xD9), Opcode(0xF1)); // fyl2x
-
- ins_pipe( pipe_slow );
-%}
-
-instruct log10D_reg(regD dst, regD src, eFlagsReg cr) %{
- predicate (UseSSE>=2);
- effect(KILL cr);
- match(Set dst (Log10D src));
- // fldlg2 ; push log_10(2) on the FPU stack; full 80-bit number
- // fyl2x ; compute log_10(2) * log_2(x)
- format %{ "FLDLG2 \t\t\t#Log10\n\t"
- "FYL2X \t\t\t# Q=Log10*Log_2(x)"
- %}
- ins_encode( Opcode(0xD9), Opcode(0xEC), // fldlg2
- Push_SrcD(src),
- Opcode(0xD9), Opcode(0xF1), // fyl2x
- Push_ResultD(dst));
-
- ins_pipe( pipe_slow );
-%}
-
//-------------Float Instructions-------------------------------
// Float Math
@@ -12103,6 +12042,7 @@ instruct jmpCon(cmpOp cop, eFlagsReg cr, label labl) %{
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEnd(cmpOp cop, eFlagsReg cr, label labl) %{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cr);
effect(USE labl);
@@ -12118,6 +12058,7 @@ instruct jmpLoopEnd(cmpOp cop, eFlagsReg cr, label labl) %{
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cmp);
effect(USE labl);
@@ -12132,6 +12073,7 @@ instruct jmpLoopEndU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
%}
instruct jmpLoopEndUCF(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cmp);
effect(USE labl);
@@ -12145,6 +12087,60 @@ instruct jmpLoopEndUCF(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
ins_pipe( pipe_jcc );
%}
+// mask version
+// Jump Direct Conditional - Label defines a relative address from Jcc+1
+instruct jmpLoopEnd_and_restoreMask(cmpOp cop, eFlagsReg cr, label labl) %{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cr);
+ effect(USE labl);
+
+ ins_cost(400);
+ format %{ "J$cop $labl\t# Loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe( pipe_jcc );
+%}
+
+// Jump Direct Conditional - Label defines a relative address from Jcc+1
+instruct jmpLoopEndU_and_restoreMask(cmpOpU cop, eFlagsRegU cmp, label labl) %{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cmp);
+ effect(USE labl);
+
+ ins_cost(400);
+ format %{ "J$cop,u $labl\t# Loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe( pipe_jcc );
+%}
+
+instruct jmpLoopEndUCF_and_restoreMask(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cmp);
+ effect(USE labl);
+
+ ins_cost(300);
+ format %{ "J$cop,u $labl\t# Loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe( pipe_jcc );
+%}
+
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
match(If cop cmp);
diff --git a/hotspot/src/cpu/x86/vm/x86_64.ad b/hotspot/src/cpu/x86/vm/x86_64.ad
index 9579436fb20..a680d60e994 100644
--- a/hotspot/src/cpu/x86/vm/x86_64.ad
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad
@@ -1081,10 +1081,10 @@ static void vec_stack_to_stack_helper(CodeBuffer *cbuf, int src_offset,
__ vmovdqu(xmm0, Address(rsp, -32));
break;
case Op_VecZ:
- __ evmovdqul(Address(rsp, -64), xmm0, 2);
- __ evmovdqul(xmm0, Address(rsp, src_offset), 2);
- __ evmovdqul(Address(rsp, dst_offset), xmm0, 2);
- __ evmovdqul(xmm0, Address(rsp, -64), 2);
+ __ evmovdquq(Address(rsp, -64), xmm0, 2);
+ __ evmovdquq(xmm0, Address(rsp, src_offset), 2);
+ __ evmovdquq(Address(rsp, dst_offset), xmm0, 2);
+ __ evmovdquq(xmm0, Address(rsp, -64), 2);
break;
default:
ShouldNotReachHere();
@@ -1646,11 +1646,6 @@ const int Matcher::float_cmove_cost() { return ConditionalMoveLimit; }
// Does the CPU require late expand (see block.cpp for description of late expand)?
const bool Matcher::require_postalloc_expand = false;
-// Should the Matcher clone shifts on addressing modes, expecting them
-// to be subsumed into complex addressing expressions or compute them
-// into registers? True for Intel but false for most RISCs
-const bool Matcher::clone_shift_expressions = true;
-
// Do we need to mask the count passed to shift instructions or does
// the cpu only look at the lower 5/6 bits anyway?
const bool Matcher::need_masked_shift_count = false;
@@ -9897,34 +9892,6 @@ instruct cmpD_imm(rRegI dst, regD src, immD con, rFlagsReg cr) %{
ins_pipe(pipe_slow);
%}
-// -----------Trig and Trancendental Instructions------------------------------
-instruct tanD_reg(regD dst) %{
- match(Set dst (TanD dst));
-
- format %{ "dtan $dst\n\t" %}
- ins_encode( Push_SrcXD(dst),
- Opcode(0xD9), Opcode(0xF2), //fptan
- Opcode(0xDD), Opcode(0xD8), //fstp st
- Push_ResultXD(dst) );
- ins_pipe( pipe_slow );
-%}
-
-instruct log10D_reg(regD dst) %{
- // The source and result Double operands in XMM registers
- match(Set dst (Log10D dst));
- // fldlg2 ; push log_10(2) on the FPU stack; full 80-bit number
- // fyl2x ; compute log_10(2) * log_2(x)
- format %{ "fldlg2\t\t\t#Log10\n\t"
- "fyl2x\t\t\t# Q=Log10*Log_2(x)\n\t"
- %}
- ins_encode(Opcode(0xD9), Opcode(0xEC), // fldlg2
- Push_SrcXD(dst),
- Opcode(0xD9), Opcode(0xF1), // fyl2x
- Push_ResultXD(dst));
-
- ins_pipe( pipe_slow );
-%}
-
//----------Arithmetic Conversion Instructions---------------------------------
instruct roundFloat_nop(regF dst)
@@ -11471,6 +11438,7 @@ instruct jmpCon(cmpOp cop, rFlagsReg cr, label labl)
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEnd(cmpOp cop, rFlagsReg cr, label labl)
%{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cr);
effect(USE labl);
@@ -11486,6 +11454,7 @@ instruct jmpLoopEnd(cmpOp cop, rFlagsReg cr, label labl)
// Jump Direct Conditional - Label defines a relative address from Jcc+1
instruct jmpLoopEndU(cmpOpU cop, rFlagsRegU cmp, label labl) %{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cmp);
effect(USE labl);
@@ -11500,6 +11469,7 @@ instruct jmpLoopEndU(cmpOpU cop, rFlagsRegU cmp, label labl) %{
%}
instruct jmpLoopEndUCF(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{
+ predicate(!n->has_vector_mask_set());
match(CountedLoopEnd cop cmp);
effect(USE labl);
@@ -11513,6 +11483,61 @@ instruct jmpLoopEndUCF(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{
ins_pipe(pipe_jcc);
%}
+// mask version
+// Jump Direct Conditional - Label defines a relative address from Jcc+1
+instruct jmpLoopEnd_and_restoreMask(cmpOp cop, rFlagsReg cr, label labl)
+%{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cr);
+ effect(USE labl);
+
+ ins_cost(400);
+ format %{ "j$cop $labl\t# loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe(pipe_jcc);
+%}
+
+// Jump Direct Conditional - Label defines a relative address from Jcc+1
+instruct jmpLoopEndU_and_restoreMask(cmpOpU cop, rFlagsRegU cmp, label labl) %{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cmp);
+ effect(USE labl);
+
+ ins_cost(400);
+ format %{ "j$cop,u $labl\t# loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe(pipe_jcc);
+%}
+
+instruct jmpLoopEndUCF_and_restoreMask(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{
+ predicate(n->has_vector_mask_set());
+ match(CountedLoopEnd cop cmp);
+ effect(USE labl);
+
+ ins_cost(300);
+ format %{ "j$cop,u $labl\t# loop end\n\t"
+ "restorevectmask \t# vector mask restore for loops" %}
+ size(10);
+ ins_encode %{
+ Label* L = $labl$$label;
+ __ jcc((Assembler::Condition)($cop$$cmpcode), *L, false); // Always long jump
+ __ restorevectmask();
+ %}
+ ins_pipe(pipe_jcc);
+%}
+
// Jump Direct Conditional - using unsigned comparison
instruct jmpConU(cmpOpU cop, rFlagsRegU cmp, label labl) %{
match(If cop cmp);
diff --git a/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp
index 2290f59d1b1..1dbe94d5469 100644
--- a/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp
@@ -49,6 +49,7 @@ const char *BytecodeInterpreter::name_of_field_at_address(address addr) {
DO(_locals);
DO(_constants);
DO(_method);
+ DO(_mirror);
DO(_mdx);
DO(_stack);
DO(_msg);
@@ -77,6 +78,7 @@ void BytecodeInterpreter::layout_interpreterState(interpreterState istate,
bool is_top_frame) {
istate->set_locals(locals);
istate->set_method(method);
+ istate->set_mirror(method->method_holder()->java_mirror());
istate->set_self_link(istate);
istate->set_prev_link(NULL);
// thread will be set by a hacky repurposing of frame::patch_pc()
diff --git a/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp b/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp
index f7bcb91e547..e7ef4c1a26e 100644
--- a/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp
+++ b/hotspot/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -44,6 +44,9 @@
inline void set_method(Method* new_method) {
_method = new_method;
}
+ inline void set_mirror(oop new_mirror) {
+ _mirror = new_mirror;
+ }
inline interpreterState self_link() {
return _self_link;
}
diff --git a/hotspot/src/cpu/zero/vm/compiledIC_zero.cpp b/hotspot/src/cpu/zero/vm/compiledIC_zero.cpp
index bc3e3624e3d..8f912db7bf9 100644
--- a/hotspot/src/cpu/zero/vm/compiledIC_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/compiledIC_zero.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,22 +42,6 @@
#include "utilities/events.hpp"
-// Release the CompiledICHolder* associated with this call site is there is one.
-void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- if (is_icholder_entry(call->destination())) {
- NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
- InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
- }
-}
-
-bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
- // This call site might have become stale so inspect it carefully.
- NativeCall* call = nativeCall_at(call_site->addr());
- return is_icholder_entry(call->destination());
-}
-
// ----------------------------------------------------------------------------
address CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf, address mark) {
diff --git a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
index e05e6d65bc0..9e91f22f266 100644
--- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
@@ -221,9 +221,16 @@ void CppInterpreter::main_loop(int recurse, TRAPS) {
// Push our result
for (int i = 0; i < result_slots; i++) {
// Adjust result to smaller
- intptr_t res = result[-i];
+ union {
+ intptr_t res;
+ jint res_jint;
+ };
+ res = result[-i];
if (result_slots == 1) {
- res = narrow(method->result_type(), res);
+ BasicType t = method->result_type();
+ if (is_subword_type(t)) {
+ res_jint = (jint)narrow(t, res_jint);
+ }
}
stack->push(res);
}
@@ -748,6 +755,7 @@ InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) {
istate->set_locals(locals);
istate->set_method(method);
+ istate->set_mirror(method->method_holder()->java_mirror());
istate->set_self_link(istate);
istate->set_prev_link(NULL);
istate->set_thread(thread);
diff --git a/hotspot/src/cpu/zero/vm/frame_zero.cpp b/hotspot/src/cpu/zero/vm/frame_zero.cpp
index fe1ee4f4f95..19acf03681e 100644
--- a/hotspot/src/cpu/zero/vm/frame_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp
@@ -360,7 +360,7 @@ void SharkFrame::identify_word(int frame_index,
case pc_off:
strncpy(fieldbuf, "pc", buflen);
if (method()->is_method()) {
- nmethod *code = method()->code();
+ CompiledMethod *code = method()->code();
if (code && code->pc_desc_at(pc())) {
SimpleScopeDesc ssd(code, pc());
snprintf(valuebuf, buflen, PTR_FORMAT " (bci %d)",
diff --git a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp
index f8011a25161..1ecd9db38a8 100644
--- a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp
+++ b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -59,7 +59,7 @@ inline frame::frame(ZeroFrame* zf, intptr_t* sp) {
case ZeroFrame::SHARK_FRAME: {
_pc = zero_sharkframe()->pc();
_cb = CodeCache::find_blob_unsafe(pc());
- address original_pc = nmethod::get_deopt_original_pc(this);
+ address original_pc = CompiledMethod::get_deopt_original_pc(this);
if (original_pc != NULL) {
_pc = original_pc;
_deopt_state = is_deoptimized;
@@ -115,6 +115,10 @@ inline Method** frame::interpreter_frame_method_addr() const {
return &(get_interpreterState()->_method);
}
+inline oop* frame::interpreter_frame_mirror_addr() const {
+ return &(get_interpreterState()->_mirror);
+}
+
inline intptr_t* frame::interpreter_frame_mdp_addr() const {
return (intptr_t*) &(get_interpreterState()->_mdx);
}
diff --git a/hotspot/src/cpu/zero/vm/globals_zero.hpp b/hotspot/src/cpu/zero/vm/globals_zero.hpp
index 52a3cacbd70..7ce33a94447 100644
--- a/hotspot/src/cpu/zero/vm/globals_zero.hpp
+++ b/hotspot/src/cpu/zero/vm/globals_zero.hpp
@@ -43,7 +43,12 @@ define_pd_global(intx, CodeEntryAlignment, 32);
define_pd_global(intx, OptoLoopAlignment, 16);
define_pd_global(intx, InlineFrequencyCount, 100);
define_pd_global(intx, InlineSmallCode, 1000);
-define_pd_global(intx, InitArrayShortSize, -1); // not used
+
+// not used, but must satisfy following constraints:
+// 1.) must be in the allowed range for intx *and*
+// 2.) % BytesPerLong == 0 so as to not
+// violate the constraint verifier on JVM start-up.
+define_pd_global(intx, InitArrayShortSize, 0);
#define DEFAULT_STACK_YELLOW_PAGES (2)
#define DEFAULT_STACK_RED_PAGES (1)
@@ -75,7 +80,14 @@ define_pd_global(bool, PreserveFramePointer, false);
// No performance work done here yet.
define_pd_global(bool, CompactStrings, false);
-#define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct, range, constraint) \
+#define ARCH_FLAGS(develop, \
+ product, \
+ diagnostic, \
+ experimental, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, UseFastEmptyMethods, true, \
"Use fast method entry code for empty methods") \
diff --git a/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp b/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp
index 0fb36b01b75..27b96b57bec 100644
--- a/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp
@@ -31,7 +31,6 @@
#include "code/vtableStubs.hpp"
#include "interpreter/interpreter.hpp"
#include "oops/compiledICHolder.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/vframeArray.hpp"
#include "vmreg_zero.inline.hpp"
diff --git a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp
index bdaec67cd73..9d64fb99e94 100644
--- a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp
+++ b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010, 2015 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -261,10 +261,6 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines::_atomic_add_entry = ShouldNotCallThisStub();
StubRoutines::_atomic_add_ptr_entry = ShouldNotCallThisStub();
StubRoutines::_fence_entry = ShouldNotCallThisStub();
-
- // amd64 does this here, sparc does it in generate_all()
- StubRoutines::_handler_for_unsafe_access_entry =
- ShouldNotCallThisStub();
}
void generate_all() {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java b/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java
index 85b163bcd02..65b804d0857 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java
@@ -28,7 +28,6 @@ module jdk.hotspot.agent {
requires java.desktop;
requires java.rmi;
requires java.scripting;
- requires jdk.jcmd;
requires jdk.jdi;
// RMI needs to serialize types in this package
@@ -37,13 +36,4 @@ module jdk.hotspot.agent {
provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SADebugServerAttachingConnector;
provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SAPIDAttachingConnector;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.JStack;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.JInfo;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.ClassLoaderStats;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.FinalizerInfo;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.HeapDumper;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.HeapSummary;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.ObjectHistogram;
- provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.PMap;
}
-
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java
index dfbbb6ff440..83c86051ba9 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java
@@ -73,6 +73,7 @@ public class SALauncher {
System.out.println(" \tto print same info as Solaris pmap");
System.out.println(" --heap\tto print java heap summary");
System.out.println(" --binaryheap\tto dump java heap in hprof binary format");
+ System.out.println(" --dumpfile\tname of the dump file");
System.out.println(" --histo\tto print histogram of java object heap");
System.out.println(" --clstats\tto print class loader statistics");
System.out.println(" --finalizerinfo\tto print information on objects awaiting finalization");
@@ -241,13 +242,15 @@ public class SALauncher {
private static void runJMAP(String[] oldArgs) {
SAGetopt sg = new SAGetopt(oldArgs);
String[] longOpts = {"exe=", "core=", "pid=",
- "heap", "binaryheap", "histo", "clstats", "finalizerinfo"};
+ "heap", "binaryheap", "dumpfile=", "histo", "clstats", "finalizerinfo"};
ArrayList newArgs = new ArrayList();
String pid = null;
String exe = null;
String core = null;
String s = null;
+ String dumpfile = null;
+ boolean requestHeapdump = false;
while((s = sg.next(null, longOpts)) != null) {
if (s.equals("exe")) {
@@ -267,7 +270,11 @@ public class SALauncher {
continue;
}
if (s.equals("binaryheap")) {
- newArgs.add("-heap:format=b");
+ requestHeapdump = true;
+ continue;
+ }
+ if (s.equals("dumpfile")) {
+ dumpfile = sg.getOptarg();
continue;
}
if (s.equals("histo")) {
@@ -284,6 +291,17 @@ public class SALauncher {
}
}
+ if (!requestHeapdump && (dumpfile != null)) {
+ throw new IllegalArgumentException("Unexpected argument dumpfile");
+ }
+ if (requestHeapdump) {
+ if (dumpfile == null) {
+ newArgs.add("-heap:format=b");
+ } else {
+ newArgs.add("-heap:format=b,file=" + dumpfile);
+ }
+ }
+
buildAttachArgs(newArgs, pid, exe, core, false);
JMap.main(newArgs.toArray(new String[newArgs.size()]));
}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/AdapterBlob.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/AdapterBlob.java
index 654a733bb2b..378e11858c4 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/AdapterBlob.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/AdapterBlob.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@ import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
-public class AdapterBlob extends CodeBlob {
+public class AdapterBlob extends RuntimeBlob {
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/BufferBlob.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/BufferBlob.java
index 5fa98b63fe3..d80eb9cd49e 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/BufferBlob.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/BufferBlob.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@ import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
-public class BufferBlob extends CodeBlob {
+public class BufferBlob extends RuntimeBlob {
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CodeBlob.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CodeBlob.java
index a018ab83014..89bc1fcfce2 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CodeBlob.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CodeBlob.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -19,84 +19,142 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
- *
*/
-
package sun.jvm.hotspot.code;
-import java.io.*;
-import java.util.*;
+import sun.jvm.hotspot.compiler.ImmutableOopMap;
+import sun.jvm.hotspot.compiler.ImmutableOopMapSet;
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.runtime.VMObject;
+import sun.jvm.hotspot.types.AddressField;
+import sun.jvm.hotspot.types.CIntegerField;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.utilities.Assert;
-import sun.jvm.hotspot.compiler.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-import sun.jvm.hotspot.utilities.*;
+import java.io.PrintStream;
+import java.util.Observable;
+import java.util.Observer;
public class CodeBlob extends VMObject {
- private static AddressField nameField;
+ private static AddressField nameField;
private static CIntegerField sizeField;
private static CIntegerField headerSizeField;
- private static CIntegerField relocationSizeField;
- private static CIntegerField contentOffsetField;
- private static CIntegerField codeOffsetField;
+ private static AddressField contentBeginField;
+ private static AddressField codeBeginField;
+ private static AddressField codeEndField;
+ private static AddressField dataEndField;
private static CIntegerField frameCompleteOffsetField;
private static CIntegerField dataOffsetField;
private static CIntegerField frameSizeField;
private static AddressField oopMapsField;
- // Only used by server compiler on x86; computed over in SA rather
- // than relying on computation in target VM
- private static final int NOT_YET_COMPUTED = -2;
- private static final int UNDEFINED = -1;
- private int linkOffset = NOT_YET_COMPUTED;
- private static int matcherInterpreterFramePointerReg;
-
- static {
- VM.registerVMInitializedObserver(new Observer() {
- public void update(Observable o, Object data) {
- initialize(VM.getVM().getTypeDataBase());
- }
- });
+ public CodeBlob(Address addr) {
+ super(addr);
}
+ protected static int matcherInterpreterFramePointerReg;
+
private static void initialize(TypeDataBase db) {
Type type = db.lookupType("CodeBlob");
nameField = type.getAddressField("_name");
sizeField = type.getCIntegerField("_size");
headerSizeField = type.getCIntegerField("_header_size");
- relocationSizeField = type.getCIntegerField("_relocation_size");
frameCompleteOffsetField = type.getCIntegerField("_frame_complete_offset");
- contentOffsetField = type.getCIntegerField("_content_offset");
- codeOffsetField = type.getCIntegerField("_code_offset");
+ contentBeginField = type.getAddressField("_content_begin");
+ codeBeginField = type.getAddressField("_code_begin");
+ codeEndField = type.getAddressField("_code_end");
+ dataEndField = type.getAddressField("_data_end");
dataOffsetField = type.getCIntegerField("_data_offset");
frameSizeField = type.getCIntegerField("_frame_size");
oopMapsField = type.getAddressField("_oop_maps");
if (VM.getVM().isServerCompiler()) {
matcherInterpreterFramePointerReg =
- db.lookupIntConstant("Matcher::interpreter_frame_pointer_reg").intValue();
+ db.lookupIntConstant("Matcher::interpreter_frame_pointer_reg").intValue();
}
}
- public CodeBlob(Address addr) {
- super(addr);
+ static {
+ VM.registerVMInitializedObserver(new Observer() {
+ public void update(Observable o, Object data) {
+ initialize(VM.getVM().getTypeDataBase());
+ }
+ });
}
+ public Address headerBegin() { return getAddress(); }
+
+ public Address headerEnd() { return getAddress().addOffsetTo(getHeaderSize()); }
+
+ public Address contentBegin() { return contentBeginField.getValue(addr); }
+
+ public Address contentEnd() { return headerBegin().addOffsetTo(getDataOffset()); }
+
+ public Address codeBegin() { return codeBeginField.getValue(addr); }
+
+ public Address codeEnd() { return codeEndField.getValue(addr); }
+
+ public Address dataBegin() { return headerBegin().addOffsetTo(getDataOffset()); }
+
+ public Address dataEnd() { return dataEndField.getValue(addr); }
+
+ public long getFrameCompleteOffset() { return frameCompleteOffsetField.getValue(addr); }
+
+ public int getDataOffset() { return (int) dataOffsetField.getValue(addr); }
+
+ // Sizes
+ public int getSize() { return (int) sizeField.getValue(addr); }
+
+ public int getHeaderSize() { return (int) headerSizeField.getValue(addr); }
+
+ public long getFrameSizeWords() {
+ return (int) frameSizeField.getValue(addr);
+ }
+
+ public String getName() {
+ return getName();
+ }
+
+ /** OopMap for frame; can return null if none available */
+
+ public ImmutableOopMapSet getOopMaps() {
+ Address value = oopMapsField.getValue(addr);
+ if (value == null) {
+ return null;
+ }
+ return new ImmutableOopMapSet(value);
+ }
+
+
// Typing
public boolean isBufferBlob() { return false; }
+
+ public boolean isAOT() { return false; }
+
+ public boolean isCompiled() { return false; }
+
public boolean isNMethod() { return false; }
+
public boolean isRuntimeStub() { return false; }
+
public boolean isDeoptimizationStub() { return false; }
+
public boolean isUncommonTrapStub() { return false; }
+
public boolean isExceptionStub() { return false; }
+
public boolean isSafepointStub() { return false; }
+
public boolean isAdapterBlob() { return false; }
// Fine grain nmethod support: isNmethod() == isJavaMethod() || isNativeMethod() || isOSRMethod()
public boolean isJavaMethod() { return false; }
+
public boolean isNativeMethod() { return false; }
+
/** On-Stack Replacement method */
public boolean isOSRMethod() { return false; }
@@ -105,81 +163,32 @@ public class CodeBlob extends VMObject {
return null;
}
- // Boundaries
- public Address headerBegin() {
- return addr;
- }
-
- public Address headerEnd() {
- return addr.addOffsetTo(headerSizeField.getValue(addr));
- }
-
- // FIXME: add RelocInfo
- // public RelocInfo relocationBegin();
- // public RelocInfo relocationEnd();
-
- public Address contentBegin() {
- return headerBegin().addOffsetTo(contentOffsetField.getValue(addr));
- }
-
- public Address contentEnd() {
- return headerBegin().addOffsetTo(dataOffsetField.getValue(addr));
- }
-
- public Address codeBegin() {
- return headerBegin().addOffsetTo(contentOffsetField.getValue(addr));
- }
-
- public Address codeEnd() {
- return headerBegin().addOffsetTo(dataOffsetField.getValue(addr));
- }
-
- public Address dataBegin() {
- return headerBegin().addOffsetTo(dataOffsetField.getValue(addr));
- }
-
- public Address dataEnd() {
- return headerBegin().addOffsetTo(sizeField.getValue(addr));
- }
-
- // Offsets
- public int getRelocationOffset() { return (int) headerSizeField .getValue(addr); }
- public int getContentOffset() { return (int) contentOffsetField.getValue(addr); }
- public int getCodeOffset() { return (int) codeOffsetField .getValue(addr); }
- public int getDataOffset() { return (int) dataOffsetField .getValue(addr); }
-
- // Sizes
- public int getSize() { return (int) sizeField .getValue(addr); }
- public int getHeaderSize() { return (int) headerSizeField.getValue(addr); }
// FIXME: add getRelocationSize()
public int getContentSize() { return (int) contentEnd().minus(contentBegin()); }
+
public int getCodeSize() { return (int) codeEnd() .minus(codeBegin()); }
+
public int getDataSize() { return (int) dataEnd() .minus(dataBegin()); }
// Containment
public boolean blobContains(Address addr) { return headerBegin() .lessThanOrEqual(addr) && dataEnd() .greaterThan(addr); }
+
// FIXME: add relocationContains
public boolean contentContains(Address addr) { return contentBegin().lessThanOrEqual(addr) && contentEnd().greaterThan(addr); }
+
public boolean codeContains(Address addr) { return codeBegin() .lessThanOrEqual(addr) && codeEnd() .greaterThan(addr); }
+
public boolean dataContains(Address addr) { return dataBegin() .lessThanOrEqual(addr) && dataEnd() .greaterThan(addr); }
+
public boolean contains(Address addr) { return contentContains(addr); }
- public boolean isFrameCompleteAt(Address a) { return codeContains(a) && a.minus(codeBegin()) >= frameCompleteOffsetField.getValue(addr); }
+
+ public boolean isFrameCompleteAt(Address a) { return codeContains(a) && a.minus(codeBegin()) >= getFrameCompleteOffset(); }
// Reclamation support (really only used by the nmethods, but in order to get asserts to work
// in the CodeCache they are defined virtual here)
public boolean isZombie() { return false; }
- public boolean isLockedByVM() { return false; }
- /** OopMap for frame; can return null if none available */
- public ImmutableOopMapSet getOopMaps() {
- Address oopMapsAddr = oopMapsField.getValue(addr);
- if (oopMapsAddr == null) {
- return null;
- }
- return new ImmutableOopMapSet(oopMapsAddr);
- }
- // FIXME: not yet implementable
- // void set_oop_maps(ImmutableOopMapSet* p);
+ public boolean isLockedByVM() { return false; }
public ImmutableOopMap getOopMapForReturnAddress(Address returnAddress, boolean debugging) {
Address pc = returnAddress;
@@ -189,25 +198,14 @@ public class CodeBlob extends VMObject {
return getOopMaps().findMapAtOffset(pc.minus(codeBegin()), debugging);
}
- // virtual void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, void f(oop*)) { ShouldNotReachHere(); }
- // FIXME;
-
/** NOTE: this returns a size in BYTES in this system! */
public long getFrameSize() {
- return VM.getVM().getAddressSize() * frameSizeField.getValue(addr);
+ return VM.getVM().getAddressSize() * getFrameSizeWords();
}
// Returns true, if the next frame is responsible for GC'ing oops passed as arguments
public boolean callerMustGCArguments() { return false; }
- public String getName() {
- return CStringUtilities.getString(nameField.getValue(addr));
- }
-
- // FIXME: NOT FINISHED
-
- // FIXME: add more accessors
-
public void print() {
printOn(System.out);
}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CompiledMethod.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CompiledMethod.java
new file mode 100644
index 00000000000..9f883360be9
--- /dev/null
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CompiledMethod.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package sun.jvm.hotspot.code;
+
+import java.util.*;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.utilities.*;
+
+public abstract class CompiledMethod extends CodeBlob {
+ private static AddressField methodField;
+ private static AddressField deoptHandlerBeginField;
+ private static AddressField deoptMhHandlerBeginField;
+ private static AddressField scopesDataBeginField;
+
+ static {
+ VM.registerVMInitializedObserver(new Observer() {
+ public void update(Observable o, Object data) {
+ initialize(VM.getVM().getTypeDataBase());
+ }
+ });
+ }
+
+ private static void initialize(TypeDataBase db) {
+ Type type = db.lookupType("CompiledMethod");
+
+ methodField = type.getAddressField("_method");
+ deoptHandlerBeginField = type.getAddressField("_deopt_handler_begin");
+ deoptMhHandlerBeginField = type.getAddressField("_deopt_mh_handler_begin");
+ scopesDataBeginField = type.getAddressField("_scopes_data_begin");
+ }
+
+ public CompiledMethod(Address addr) {
+ super(addr);
+ }
+
+ public Method getMethod() {
+ return (Method)Metadata.instantiateWrapperFor(methodField.getValue(addr));
+ }
+
+ public Address deoptHandlerBegin() { return deoptHandlerBeginField.getValue(addr); }
+ public Address deoptMhHandlerBegin() { return deoptMhHandlerBeginField.getValue(addr); }
+ public Address scopesDataBegin() { return scopesDataBeginField.getValue(addr); }
+
+ public static int getMethodOffset() { return (int) methodField.getOffset(); }
+
+ @Override
+ public boolean isCompiled() {
+ return true;
+ }
+}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/NMethod.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/NMethod.java
index df8202dbd41..f2ae000b8df 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/NMethod.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/NMethod.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,15 +27,13 @@ package sun.jvm.hotspot.code;
import java.io.*;
import java.util.*;
import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
import sun.jvm.hotspot.utilities.*;
-public class NMethod extends CodeBlob {
+public class NMethod extends CompiledMethod {
private static long pcDescSize;
- private static AddressField methodField;
/** != InvocationEntryBci if this nmethod is an on-stack replacement method */
private static CIntegerField entryBCIField;
/** To support simple linked-list chaining of nmethods */
@@ -45,13 +43,10 @@ public class NMethod extends CodeBlob {
/** Offsets for different nmethod parts */
private static CIntegerField exceptionOffsetField;
- private static CIntegerField deoptOffsetField;
- private static CIntegerField deoptMhOffsetField;
private static CIntegerField origPCOffsetField;
private static CIntegerField stubOffsetField;
private static CIntegerField oopsOffsetField;
private static CIntegerField metadataOffsetField;
- private static CIntegerField scopesDataOffsetField;
private static CIntegerField scopesPCsOffsetField;
private static CIntegerField dependenciesOffsetField;
private static CIntegerField handlerTableOffsetField;
@@ -91,20 +86,16 @@ public class NMethod extends CodeBlob {
private static void initialize(TypeDataBase db) {
Type type = db.lookupType("nmethod");
- methodField = type.getAddressField("_method");
entryBCIField = type.getCIntegerField("_entry_bci");
osrLinkField = type.getAddressField("_osr_link");
scavengeRootLinkField = type.getAddressField("_scavenge_root_link");
scavengeRootStateField = type.getJByteField("_scavenge_root_state");
exceptionOffsetField = type.getCIntegerField("_exception_offset");
- deoptOffsetField = type.getCIntegerField("_deoptimize_offset");
- deoptMhOffsetField = type.getCIntegerField("_deoptimize_mh_offset");
origPCOffsetField = type.getCIntegerField("_orig_pc_offset");
stubOffsetField = type.getCIntegerField("_stub_offset");
oopsOffsetField = type.getCIntegerField("_oops_offset");
metadataOffsetField = type.getCIntegerField("_metadata_offset");
- scopesDataOffsetField = type.getCIntegerField("_scopes_data_offset");
scopesPCsOffsetField = type.getCIntegerField("_scopes_pcs_offset");
dependenciesOffsetField = type.getCIntegerField("_dependencies_offset");
handlerTableOffsetField = type.getCIntegerField("_handler_table_offset");
@@ -123,16 +114,11 @@ public class NMethod extends CodeBlob {
super(addr);
}
-
// Accessors
public Address getAddress() {
return addr;
}
- public Method getMethod() {
- return (Method)Metadata.instantiateWrapperFor(methodField.getValue(addr));
- }
-
// Type info
public boolean isNMethod() { return true; }
public boolean isJavaMethod() { return !getMethod().isNative(); }
@@ -145,15 +131,12 @@ public class NMethod extends CodeBlob {
public Address instsBegin() { return codeBegin(); }
public Address instsEnd() { return headerBegin().addOffsetTo(getStubOffset()); }
public Address exceptionBegin() { return headerBegin().addOffsetTo(getExceptionOffset()); }
- public Address deoptHandlerBegin() { return headerBegin().addOffsetTo(getDeoptOffset()); }
- public Address deoptMhHandlerBegin() { return headerBegin().addOffsetTo(getDeoptMhOffset()); }
public Address stubBegin() { return headerBegin().addOffsetTo(getStubOffset()); }
public Address stubEnd() { return headerBegin().addOffsetTo(getOopsOffset()); }
public Address oopsBegin() { return headerBegin().addOffsetTo(getOopsOffset()); }
public Address oopsEnd() { return headerBegin().addOffsetTo(getMetadataOffset()); }
public Address metadataBegin() { return headerBegin().addOffsetTo(getMetadataOffset()); }
- public Address metadataEnd() { return headerBegin().addOffsetTo(getScopesDataOffset()); }
- public Address scopesDataBegin() { return headerBegin().addOffsetTo(getScopesDataOffset()); }
+ public Address metadataEnd() { return scopesDataBegin(); }
public Address scopesDataEnd() { return headerBegin().addOffsetTo(getScopesPCsOffset()); }
public Address scopesPCsBegin() { return headerBegin().addOffsetTo(getScopesPCsOffset()); }
public Address scopesPCsEnd() { return headerBegin().addOffsetTo(getDependenciesOffset()); }
@@ -462,8 +445,6 @@ public class NMethod extends CodeBlob {
public static int getVerifiedEntryPointOffset() { return (int) verifiedEntryPointField.getOffset(); }
public static int getOSREntryPointOffset() { return (int) osrEntryPointField.getOffset(); }
public static int getEntryBCIOffset() { return (int) entryBCIField.getOffset(); }
- /** NOTE: renamed from "method_offset_in_bytes" */
- public static int getMethodOffset() { return (int) methodField.getOffset(); }
public void print() {
printOn(System.out);
@@ -541,12 +522,9 @@ public class NMethod extends CodeBlob {
private int getEntryBCI() { return (int) entryBCIField .getValue(addr); }
private int getExceptionOffset() { return (int) exceptionOffsetField .getValue(addr); }
- private int getDeoptOffset() { return (int) deoptOffsetField .getValue(addr); }
- private int getDeoptMhOffset() { return (int) deoptMhOffsetField .getValue(addr); }
private int getStubOffset() { return (int) stubOffsetField .getValue(addr); }
private int getOopsOffset() { return (int) oopsOffsetField .getValue(addr); }
private int getMetadataOffset() { return (int) metadataOffsetField .getValue(addr); }
- private int getScopesDataOffset() { return (int) scopesDataOffsetField .getValue(addr); }
private int getScopesPCsOffset() { return (int) scopesPCsOffsetField .getValue(addr); }
private int getDependenciesOffset() { return (int) dependenciesOffsetField.getValue(addr); }
private int getHandlerTableOffset() { return (int) handlerTableOffsetField.getValue(addr); }
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeBlob.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeBlob.java
new file mode 100644
index 00000000000..c4077f995b0
--- /dev/null
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeBlob.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.code;
+
+import java.util.*;
+
+import sun.jvm.hotspot.compiler.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.utilities.*;
+
+public class RuntimeBlob extends CodeBlob {
+
+ // Only used by server compiler on x86; computed over in SA rather
+ // than relying on computation in target VM
+ private static final int NOT_YET_COMPUTED = -2;
+ private static final int UNDEFINED = -1;
+ private int linkOffset = NOT_YET_COMPUTED;
+
+ static {
+ VM.registerVMInitializedObserver(new Observer() {
+ public void update(Observable o, Object data) {
+ initialize(VM.getVM().getTypeDataBase());
+ }
+ });
+ }
+
+ private static void initialize(TypeDataBase db) {
+ Type type = db.lookupType("RuntimeBlob");
+ }
+
+ public RuntimeBlob(Address addr) {
+ super(addr);
+ }
+}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeStub.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeStub.java
index fd0d72aaace..98e3dc0cf81 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeStub.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/RuntimeStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@ import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
-public class RuntimeStub extends CodeBlob {
+public class RuntimeStub extends RuntimeBlob {
private static CIntegerField callerMustGCArgumentsField;
static {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/SingletonBlob.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/SingletonBlob.java
index 32614929813..6d56f485a34 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/SingletonBlob.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/SingletonBlob.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@ import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
-public class SingletonBlob extends CodeBlob {
+public class SingletonBlob extends RuntimeBlob {
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java
index cefdcf2aa30..46d087332ac 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/SymbolTable.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,6 +85,12 @@ public class SymbolTable extends sun.jvm.hotspot.utilities.Hashtable {
tables. */
public Symbol probe(byte[] name) {
long hashValue = hashSymbol(name);
+
+ Symbol s = sharedTable.probe(name, hashValue);
+ if (s != null) {
+ return s;
+ }
+
for (HashtableEntry e = (HashtableEntry) bucket(hashToIndex(hashValue)); e != null; e = (HashtableEntry) e.next()) {
if (e.hash() == hashValue) {
Symbol sym = Symbol.create(e.literalValue());
@@ -94,7 +100,7 @@ public class SymbolTable extends sun.jvm.hotspot.utilities.Hashtable {
}
}
- return sharedTable.probe(name, hashValue);
+ return null;
}
public interface SymbolVisitor {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/BreakpointInfo.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/BreakpointInfo.java
index af62d291e46..207810dd99b 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/BreakpointInfo.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/BreakpointInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,6 +46,11 @@ public class BreakpointInfo extends VMObject {
}
private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+ if (!VM.getVM().isJvmtiSupported()) {
+ // no BreakpointInfo support without JVMTI
+ return;
+ }
+
Type type = db.lookupType("BreakpointInfo");
origBytecodeField = type.getCIntegerField("_orig_bytecode");
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
index d2f15f0c606..de1221628ad 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
@@ -85,7 +85,9 @@ public class InstanceKlass extends Klass {
isMarkedDependent = new CIntField(type.getCIntegerField("_is_marked_dependent"), 0);
initState = new CIntField(type.getCIntegerField("_init_state"), 0);
itableLen = new CIntField(type.getCIntegerField("_itable_len"), 0);
- breakpoints = type.getAddressField("_breakpoints");
+ if (VM.getVM().isJvmtiSupported()) {
+ breakpoints = type.getAddressField("_breakpoints");
+ }
genericSignatureIndex = new CIntField(type.getCIntegerField("_generic_signature_index"), 0);
majorVersion = new CIntField(type.getCIntegerField("_major_version"), 0);
minorVersion = new CIntField(type.getCIntegerField("_minor_version"), 0);
@@ -837,6 +839,9 @@ public class InstanceKlass extends Klass {
/** Breakpoint support (see methods on Method* for details) */
public BreakpointInfo getBreakpoints() {
+ if (!VM.getVM().isJvmtiSupported()) {
+ return null;
+ }
Address addr = getAddress().getAddressAt(breakpoints.getOffset());
return (BreakpointInfo) VMObjectFactory.newObject(BreakpointInfo.class, addr);
}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java
index 09bb426cfb3..a69b3ceb0b8 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -87,6 +87,8 @@ public class VM {
private StubRoutines stubRoutines;
private Bytes bytes;
+ /** Flag indicating if JVMTI support is included in the build */
+ private boolean isJvmtiSupported;
/** Flags indicating whether we are attached to a core, C1, or C2 build */
private boolean usingClientCompiler;
private boolean usingServerCompiler;
@@ -324,8 +326,9 @@ public class VM {
Address vmInternalInfoAddr = vmVersion.getAddressField("_s_internal_vm_info_string").getValue();
vmInternalInfo = CStringUtilities.getString(vmInternalInfoAddr);
+ Type threadLocalAllocBuffer = db.lookupType("ThreadLocalAllocBuffer");
CIntegerType intType = (CIntegerType) db.lookupType("int");
- CIntegerField reserveForAllocationPrefetchField = vmVersion.getCIntegerField("_reserve_for_allocation_prefetch");
+ CIntegerField reserveForAllocationPrefetchField = threadLocalAllocBuffer.getCIntegerField("_reserve_for_allocation_prefetch");
reserveForAllocationPrefetch = (int)reserveForAllocationPrefetchField.getCInteger(intType);
} catch (Exception exp) {
throw new RuntimeException("can't determine target's VM version : " + exp.getMessage());
@@ -336,6 +339,16 @@ public class VM {
stackBias = db.lookupIntConstant("STACK_BIAS").intValue();
invocationEntryBCI = db.lookupIntConstant("InvocationEntryBci").intValue();
+ // We infer the presence of JVMTI from the presence of the InstanceKlass::_breakpoints field.
+ {
+ Type type = db.lookupType("InstanceKlass");
+ if (type.getField("_breakpoints", false, false) == null) {
+ isJvmtiSupported = false;
+ } else {
+ isJvmtiSupported = true;
+ }
+ }
+
// We infer the presence of C1 or C2 from a couple of fields we
// already have present in the type database
{
@@ -701,6 +714,11 @@ public class VM {
return isBigEndian;
}
+ /** Returns true if JVMTI is supported, false otherwise */
+ public boolean isJvmtiSupported() {
+ return isJvmtiSupported;
+ }
+
/** Returns true if this is a "core" build, false if either C1 or C2
is present */
public boolean isCore() {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java
index 558117e30ca..80b6c79e608 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java
@@ -49,11 +49,12 @@ public class AARCH64Frame extends Frame {
private static final int SENDER_SP_OFFSET = 2;
// Interpreter frames
- private static final int INTERPRETER_FRAME_MIRROR_OFFSET = 2; // for native calls only
private static final int INTERPRETER_FRAME_SENDER_SP_OFFSET = -1;
private static final int INTERPRETER_FRAME_LAST_SP_OFFSET = INTERPRETER_FRAME_SENDER_SP_OFFSET - 1;
private static final int INTERPRETER_FRAME_METHOD_OFFSET = INTERPRETER_FRAME_LAST_SP_OFFSET - 1;
private static int INTERPRETER_FRAME_MDX_OFFSET; // Non-core builds only
+ private static int INTERPRETER_FRAME_PADDING_OFFSET;
+ private static int INTERPRETER_FRAME_MIRROR_OFFSET;
private static int INTERPRETER_FRAME_CACHE_OFFSET;
private static int INTERPRETER_FRAME_LOCALS_OFFSET;
private static int INTERPRETER_FRAME_BCX_OFFSET;
@@ -79,7 +80,9 @@ public class AARCH64Frame extends Frame {
private static synchronized void initialize(TypeDataBase db) {
INTERPRETER_FRAME_MDX_OFFSET = INTERPRETER_FRAME_METHOD_OFFSET - 1;
- INTERPRETER_FRAME_CACHE_OFFSET = INTERPRETER_FRAME_MDX_OFFSET - 1;
+ INTERPRETER_FRAME_PADDING_OFFSET = INTERPRETER_FRAME_MDX_OFFSET - 1;
+ INTERPRETER_FRAME_MIRROR_OFFSET = INTERPRETER_FRAME_PADDING_OFFSET - 1;
+ INTERPRETER_FRAME_CACHE_OFFSET = INTERPRETER_FRAME_MIRROR_OFFSET - 1;
INTERPRETER_FRAME_LOCALS_OFFSET = INTERPRETER_FRAME_CACHE_OFFSET - 1;
INTERPRETER_FRAME_BCX_OFFSET = INTERPRETER_FRAME_LOCALS_OFFSET - 1;
INTERPRETER_FRAME_INITIAL_SP_OFFSET = INTERPRETER_FRAME_BCX_OFFSET - 1;
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java
index 34f5bfbefef..8dac3a84656 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java
@@ -32,13 +32,12 @@ import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.utilities.*;
-import jdk.internal.vm.agent.spi.ToolProvider;
/**
A command line tool to print class loader statistics.
*/
-public class ClassLoaderStats extends Tool implements ToolProvider {
+public class ClassLoaderStats extends Tool {
boolean verbose = true;
public ClassLoaderStats() {
@@ -54,11 +53,6 @@ public class ClassLoaderStats extends Tool implements ToolProvider {
return "classLoaderStats";
}
- @Override
- public void run(String... arguments) {
- execute(arguments);
- }
-
public static void main(String[] args) {
ClassLoaderStats cls = new ClassLoaderStats();
cls.execute(args);
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java
index 9da8e523afb..3f5c55a46d6 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java
@@ -28,7 +28,6 @@ import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.utilities.SystemDictionaryHelper;
-import jdk.internal.vm.agent.spi.ToolProvider;
import java.util.ArrayList;
import java.util.Collections;
@@ -39,7 +38,7 @@ import java.util.HashMap;
* Iterates over the queue of object pending finalization and prints a
* summary of these objects in the form of a histogram.
*/
-public class FinalizerInfo extends Tool implements ToolProvider {
+public class FinalizerInfo extends Tool {
public FinalizerInfo() {
super();
@@ -54,11 +53,6 @@ public class FinalizerInfo extends Tool implements ToolProvider {
return "finalizerInfo";
}
- @Override
- public void run(String... arguments) {
- execute(arguments);
- }
-
public static void main(String[] args) {
FinalizerInfo finfo = new FinalizerInfo();
finfo.execute(args);
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapDumper.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapDumper.java
index d0a11abd095..b2cf190bf3b 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapDumper.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapDumper.java
@@ -26,7 +26,6 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.utilities.HeapHprofBinWriter;
import sun.jvm.hotspot.debugger.JVMDebugger;
-import jdk.internal.vm.agent.spi.ToolProvider;
import java.io.IOException;
@@ -35,7 +34,7 @@ import java.io.IOException;
* process/core as a HPROF binary file. It can also be used as a standalone
* tool if required.
*/
-public class HeapDumper extends Tool implements ToolProvider {
+public class HeapDumper extends Tool {
private static String DEFAULT_DUMP_FILE = "heap.bin";
@@ -81,11 +80,10 @@ public class HeapDumper extends Tool implements ToolProvider {
// HeapDumper -f
public static void main(String args[]) {
HeapDumper dumper = new HeapDumper();
- dumper.run(args);
+ dumper.runWithArgs(args);
}
- @Override
- public void run(String... args) {
+ public void runWithArgs(String... args) {
if (args.length > 2) {
if (args[0].equals("-f")) {
this.dumpFile = args[1];
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java
index 5c1012bf644..643109bc1e9 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java
@@ -33,9 +33,8 @@ import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
-import jdk.internal.vm.agent.spi.ToolProvider;
-public class HeapSummary extends Tool implements ToolProvider {
+public class HeapSummary extends Tool {
public HeapSummary() {
super();
@@ -55,11 +54,6 @@ public class HeapSummary extends Tool implements ToolProvider {
return "heapSummary";
}
- @Override
- public void run(String... arguments) {
- execute(arguments);
- }
-
public void run() {
CollectedHeap heap = VM.getVM().getUniverse().heap();
VM.Flag[] flags = VM.getVM().getCommandLineFlags();
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java
index 50f9c30975b..3e724b979a0 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java
@@ -27,9 +27,8 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.runtime.Arguments;
import sun.jvm.hotspot.runtime.VM;
-import jdk.internal.vm.agent.spi.ToolProvider;
-public class JInfo extends Tool implements ToolProvider {
+public class JInfo extends Tool {
public JInfo() {
super();
}
@@ -46,6 +45,7 @@ public class JInfo extends Tool implements ToolProvider {
return false;
}
+ @Override
public String getName() {
return "jinfo";
}
@@ -95,8 +95,7 @@ public class JInfo extends Tool implements ToolProvider {
tool.run();
}
- @Override
- public void run(String... args) {
+ public void runWithArgs(String... args) {
int mode = -1;
switch (args.length) {
case 1:
@@ -142,7 +141,7 @@ public class JInfo extends Tool implements ToolProvider {
public static void main(String[] args) {
JInfo jinfo = new JInfo();
- jinfo.run(args);
+ jinfo.runWithArgs(args);
}
private void printVMFlags() {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JMap.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JMap.java
index 847eac19468..21842a88a8f 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JMap.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JMap.java
@@ -71,6 +71,8 @@ public class JMap extends Tool {
public static final int MODE_HEAP_GRAPH_GXL = 5;
public static final int MODE_FINALIZERINFO = 6;
+ private static String dumpfile = "heap.bin";
+
public void run() {
Tool tool = null;
switch (mode) {
@@ -92,11 +94,11 @@ public class JMap extends Tool {
break;
case MODE_HEAP_GRAPH_HPROF_BIN:
- writeHeapHprofBin();
+ writeHeapHprofBin(dumpfile);
return;
case MODE_HEAP_GRAPH_GXL:
- writeHeapGXL();
+ writeHeapGXL(dumpfile);
return;
case MODE_FINALIZERINFO:
@@ -127,18 +129,34 @@ public class JMap extends Tool {
} else if (modeFlag.equals("-finalizerinfo")) {
mode = MODE_FINALIZERINFO;
} else {
- int index = modeFlag.indexOf("-heap:format=");
+ int index = modeFlag.indexOf("-heap:");
if (index != -1) {
- String format = modeFlag.substring(1 + modeFlag.indexOf('='));
- if (format.equals("b")) {
- mode = MODE_HEAP_GRAPH_HPROF_BIN;
- } else if (format.equals("x")) {
- mode = MODE_HEAP_GRAPH_GXL;
- } else {
- System.err.println("unknown heap format:" + format);
+ String[] options = modeFlag.substring(6).split(",");
+ for (String option : options) {
+ String[] keyValue = option.split("=");
+ if (keyValue[0].equals("format")) {
+ if (keyValue[1].equals("b")) {
+ mode = MODE_HEAP_GRAPH_HPROF_BIN;
+ } else if (keyValue[1].equals("x")) {
+ mode = MODE_HEAP_GRAPH_GXL;
+ } else {
+ System.err.println("unknown heap format:" + keyValue[0]);
- // Exit with error status
- System.exit(1);
+ // Exit with error status
+ System.exit(1);
+ }
+ } else if (keyValue[0].equals("file")) {
+ if ((keyValue[1] == null) || keyValue[1].equals("")) {
+ System.err.println("File name must be set.");
+ System.exit(1);
+ }
+ dumpfile = keyValue[1];
+ } else {
+ System.err.println("unknown option:" + keyValue[0]);
+
+ // Exit with error status
+ System.exit(1);
+ }
}
} else {
copyArgs = false;
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JStack.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JStack.java
index 821ed388853..65757702645 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JStack.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JStack.java
@@ -25,9 +25,8 @@
package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.JVMDebugger;
-import jdk.internal.vm.agent.spi.ToolProvider;
-public class JStack extends Tool implements ToolProvider {
+public class JStack extends Tool {
public JStack(boolean mixedMode, boolean concurrentLocks) {
this.mixedMode = mixedMode;
this.concurrentLocks = concurrentLocks;
@@ -45,6 +44,7 @@ public class JStack extends Tool implements ToolProvider {
return false;
}
+ @Override
public String getName() {
return "jstack";
}
@@ -67,8 +67,7 @@ public class JStack extends Tool implements ToolProvider {
tool.run();
}
- @Override
- public void run(String... args) {
+ public void runWithArgs(String... args) {
int used = 0;
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-m")) {
@@ -93,7 +92,7 @@ public class JStack extends Tool implements ToolProvider {
public static void main(String[] args) {
JStack jstack = new JStack();
- jstack.run(args);
+ jstack.runWithArgs(args);
}
private boolean mixedMode;
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java
index 0dc100eebe5..414f857df35 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java
@@ -27,52 +27,46 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
-import jdk.internal.vm.agent.spi.ToolProvider;
import java.io.PrintStream;
/** A sample tool which uses the Serviceability Agent's APIs to obtain
an object histogram from a remote or crashed VM. */
-public class ObjectHistogram extends Tool implements ToolProvider {
+public class ObjectHistogram extends Tool {
public ObjectHistogram() {
- super();
+ super();
}
public ObjectHistogram(JVMDebugger d) {
- super(d);
+ super(d);
}
@Override
public String getName() {
- return "objectHistogram";
+ return "objectHistogram";
}
- @Override
- public void run(String... arguments) {
- execute(arguments);
+ public void run() {
+ run(System.out, System.err);
}
- public void run() {
- run(System.out, System.err);
- }
-
- public void run(PrintStream out, PrintStream err) {
- // Ready to go with the database...
- ObjectHeap heap = VM.getVM().getObjectHeap();
- sun.jvm.hotspot.oops.ObjectHistogram histogram =
+ public void run(PrintStream out, PrintStream err) {
+ // Ready to go with the database...
+ ObjectHeap heap = VM.getVM().getObjectHeap();
+ sun.jvm.hotspot.oops.ObjectHistogram histogram =
new sun.jvm.hotspot.oops.ObjectHistogram();
- err.println("Iterating over heap. This may take a while...");
- long startTime = System.currentTimeMillis();
- heap.iterate(histogram);
- long endTime = System.currentTimeMillis();
- histogram.printOn(out);
- float secs = (float) (endTime - startTime) / 1000.0f;
- err.println("Heap traversal took " + secs + " seconds.");
- }
+ err.println("Iterating over heap. This may take a while...");
+ long startTime = System.currentTimeMillis();
+ heap.iterate(histogram);
+ long endTime = System.currentTimeMillis();
+ histogram.printOn(out);
+ float secs = (float) (endTime - startTime) / 1000.0f;
+ err.println("Heap traversal took " + secs + " seconds.");
+ }
- public static void main(String[] args) {
- ObjectHistogram oh = new ObjectHistogram();
- oh.execute(args);
- }
+ public static void main(String[] args) {
+ ObjectHistogram oh = new ObjectHistogram();
+ oh.execute(args);
+ }
}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PMap.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PMap.java
index 0c0ccbf6c8c..484994c666e 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PMap.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PMap.java
@@ -28,9 +28,8 @@ import java.io.*;
import java.util.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
-import jdk.internal.vm.agent.spi.ToolProvider;
-public class PMap extends Tool implements ToolProvider {
+public class PMap extends Tool {
public PMap() {
super();
@@ -45,11 +44,6 @@ public class PMap extends Tool implements ToolProvider {
return "pmap";
}
- @Override
- public void run(String... arguments) {
- execute(arguments);
- }
-
public void run() {
run(System.out);
}
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/ui/JavaThreadsPanel.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/ui/JavaThreadsPanel.java
index 6316d3538ce..a9397001b84 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/ui/JavaThreadsPanel.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/ui/JavaThreadsPanel.java
@@ -39,6 +39,7 @@ import javax.swing.table.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
import sun.jvm.hotspot.ui.action.*;
@@ -55,9 +56,19 @@ public class JavaThreadsPanel extends SAPanel implements ActionListener {
private JavaThreadsTableModel dataModel;
private StatusBar statusBar;
private JTable threadTable;
- private java.util.List cachedThreads = new ArrayList();
+ private java.util.List cachedThreads = new ArrayList();
+ private static AddressField crashThread;
+ static {
+ VM.registerVMInitializedObserver(
+ (o, a) -> initialize(VM.getVM().getTypeDataBase()));
+ }
+
+ private static void initialize(TypeDataBase db) {
+ crashThread = db.lookupType("VMError").getAddressField("_thread");
+ }
+
/** Constructor assumes the threads panel is created while the VM is
suspended. Subsequent resume and suspend operations of the VM
will cause the threads panel to clear and fill itself back in,
@@ -437,21 +448,14 @@ public class JavaThreadsPanel extends SAPanel implements ActionListener {
* @return a flag which indicates if crashes were encountered.
*/
private boolean fireShowThreadCrashes() {
- boolean crash = false;
- for (Iterator iter = cachedThreads.iterator(); iter.hasNext(); ) {
- JavaThread t = (JavaThread) ((CachedThread) iter.next()).getThread();
- sun.jvm.hotspot.runtime.Frame tmpFrame = t.getCurrentFrameGuess();
- RegisterMap tmpMap = t.newRegisterMap(false);
- while ((tmpFrame != null) && (!tmpFrame.isFirstFrame())) {
- if (tmpFrame.isSignalHandlerFrameDbg()) {
- showThreadStackMemory(t);
- crash = true;
- break;
- }
- tmpFrame = tmpFrame.sender(tmpMap);
- }
- }
- return crash;
+ Optional crashed =
+ cachedThreads.stream()
+ .map(t -> t.getThread())
+ .filter(t -> t.getAddress().equals(
+ crashThread.getValue()))
+ .findAny();
+ crashed.ifPresent(this::showThreadStackMemory);
+ return crashed.isPresent();
}
private void cache() {
diff --git a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/CompactHashTable.java b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/CompactHashTable.java
index e5eefb0daa6..e03a85531fe 100644
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/CompactHashTable.java
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/CompactHashTable.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,21 +44,23 @@ public class CompactHashTable extends VMObject {
Type type = db.lookupType("SymbolCompactHashTable");
baseAddressField = type.getAddressField("_base_address");
bucketCountField = type.getCIntegerField("_bucket_count");
- tableEndOffsetField = type.getCIntegerField("_table_end_offset");
+ entryCountField = type.getCIntegerField("_entry_count");
bucketsField = type.getAddressField("_buckets");
- uintSize = db.lookupType("juint").getSize();
+ entriesField = type.getAddressField("_entries");
+ uintSize = db.lookupType("u4").getSize();
}
// Fields
private static CIntegerField bucketCountField;
- private static CIntegerField tableEndOffsetField;
+ private static CIntegerField entryCountField;
private static AddressField baseAddressField;
private static AddressField bucketsField;
+ private static AddressField entriesField;
private static long uintSize;
private static int BUCKET_OFFSET_MASK = 0x3FFFFFFF;
private static int BUCKET_TYPE_SHIFT = 30;
- private static int COMPACT_BUCKET_TYPE = 1;
+ private static int VALUE_ONLY_BUCKET_TYPE = 1;
public CompactHashTable(Address addr) {
super(addr);
@@ -68,12 +70,8 @@ public class CompactHashTable extends VMObject {
return (int)bucketCountField.getValue(addr);
}
- private int tableEndOffset() {
- return (int)tableEndOffsetField.getValue(addr);
- }
-
- private boolean isCompactBucket(int bucket_info) {
- return (bucket_info >> BUCKET_TYPE_SHIFT) == COMPACT_BUCKET_TYPE;
+ private boolean isValueOnlyBucket(int bucket_info) {
+ return (bucket_info >> BUCKET_TYPE_SHIFT) == VALUE_ONLY_BUCKET_TYPE;
}
private int bucketOffset(int bucket_info) {
@@ -81,9 +79,8 @@ public class CompactHashTable extends VMObject {
}
public Symbol probe(byte[] name, long hash) {
-
- if (bucketCount() == 0) {
- // The table is invalid, so don't try to lookup
+ if (bucketCount() <= 0) {
+ // This CompactHashTable is not in use
return null;
}
@@ -91,34 +88,33 @@ public class CompactHashTable extends VMObject {
Symbol sym;
Address baseAddress = baseAddressField.getValue(addr);
Address bucket = bucketsField.getValue(addr);
- Address bucketEnd = bucket;
long index = hash % bucketCount();
int bucketInfo = (int)bucket.getCIntegerAt(index * uintSize, uintSize, true);
int bucketOffset = bucketOffset(bucketInfo);
int nextBucketInfo = (int)bucket.getCIntegerAt((index+1) * uintSize, uintSize, true);
int nextBucketOffset = bucketOffset(nextBucketInfo);
- bucket = bucket.addOffsetTo(bucketOffset * uintSize);
+ Address entry = entriesField.getValue(addr).addOffsetTo(bucketOffset * uintSize);
- if (isCompactBucket(bucketInfo)) {
- symOffset = bucket.getCIntegerAt(0, uintSize, true);
+ if (isValueOnlyBucket(bucketInfo)) {
+ symOffset = entry.getCIntegerAt(0, uintSize, true);
sym = Symbol.create(baseAddress.addOffsetTo(symOffset));
if (sym.equals(name)) {
return sym;
}
} else {
- bucketEnd = bucket.addOffsetTo(nextBucketOffset * uintSize);
- while (bucket.lessThan(bucketEnd)) {
- long symHash = bucket.getCIntegerAt(0, uintSize, true);
+ Address entryMax = entriesField.getValue(addr).addOffsetTo(nextBucketOffset * uintSize);
+ while (entry.lessThan(entryMax)) {
+ long symHash = entry.getCIntegerAt(0, uintSize, true);
if (symHash == hash) {
- symOffset = bucket.getCIntegerAt(uintSize, uintSize, true);
+ symOffset = entry.getCIntegerAt(uintSize, uintSize, true);
Address symAddr = baseAddress.addOffsetTo(symOffset);
sym = Symbol.create(symAddr);
if (sym.equals(name)) {
return sym;
}
}
- bucket = bucket.addOffsetTo(2 * uintSize);
+ entry = entry.addOffsetTo(2 * uintSize);
}
}
return null;
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.common/src/jdk/vm/ci/common/UnsafeUtil.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.common/src/jdk/vm/ci/common/UnsafeUtil.java
index 7668759da84..9b8f75511c4 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.common/src/jdk/vm/ci/common/UnsafeUtil.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.common/src/jdk/vm/ci/common/UnsafeUtil.java
@@ -22,7 +22,7 @@
*/
package jdk.vm.ci.common;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Utilities for operating on raw memory with {@link Unsafe}.
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java
index 09901998ffb..6f2d8c5e6aa 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java
@@ -39,7 +39,7 @@ import jdk.vm.ci.inittimer.InitTimer;
import jdk.vm.ci.meta.JavaType;
import jdk.vm.ci.meta.ResolvedJavaMethod;
import jdk.vm.ci.meta.ResolvedJavaType;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Calls from Java into HotSpot. The behavior of all the methods in this class that take a native
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
index a01a304d2a8..dac0fb3a553 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
@@ -120,7 +120,9 @@ public class HotSpotCodeCacheProvider implements CodeCacheProvider {
resultInstalledCode = installedCode;
}
- int result = runtime.getCompilerToVM().installCode(target, (HotSpotCompiledCode) compiledCode, resultInstalledCode, (HotSpotSpeculationLog) log);
+ HotSpotSpeculationLog speculationLog = (log != null && log.hasSpeculations()) ? (HotSpotSpeculationLog) log : null;
+
+ int result = runtime.getCompilerToVM().installCode(target, (HotSpotCompiledCode) compiledCode, resultInstalledCode, speculationLog);
if (result != config.codeInstallResultOk) {
String resultDesc = config.getCodeInstallResultDescription(result);
if (compiledCode instanceof HotSpotCompiledNmethod) {
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotInstalledCode.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotInstalledCode.java
index aa8368d9777..98fa1816065 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotInstalledCode.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotInstalledCode.java
@@ -25,7 +25,7 @@ package jdk.vm.ci.hotspot;
import static jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE;
import jdk.vm.ci.code.InstalledCode;
import jdk.vm.ci.inittimer.SuppressFBWarnings;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Implementation of {@link InstalledCode} for HotSpot.
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider.java
index 12cc5255ead..7d6b4b287ae 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider.java
@@ -30,7 +30,7 @@ import jdk.vm.ci.meta.JavaKind;
import jdk.vm.ci.meta.JavaType;
import jdk.vm.ci.meta.ResolvedJavaType;
import jdk.vm.ci.runtime.JVMCIRuntime;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
//JaCoCo Exclude
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java
index b824f0cd8d3..6914926d661 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl.java
@@ -146,6 +146,9 @@ class HotSpotMemoryAccessProviderImpl implements HotSpotMemoryAccessProvider, Ho
@Override
public JavaConstant readUnsafeConstant(JavaKind kind, JavaConstant baseConstant, long displacement) {
+ if (kind == null) {
+ throw new IllegalArgumentException("null JavaKind");
+ }
if (kind == JavaKind.Object) {
Object o = readRawObject(baseConstant, displacement, runtime.getConfig().useCompressedOops);
return HotSpotObjectConstantImpl.forObject(o);
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java
index f42f9aff6ab..dfdc3ebf3f6 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java
@@ -39,7 +39,7 @@ import jdk.vm.ci.meta.JavaTypeProfile.ProfiledType;
import jdk.vm.ci.meta.ResolvedJavaMethod;
import jdk.vm.ci.meta.ResolvedJavaType;
import jdk.vm.ci.meta.TriState;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Access to a HotSpot MethodData structure (defined in methodData.hpp).
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider.java
index 87cf467f6d7..1293a1083d7 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider.java
@@ -130,7 +130,7 @@ public class HotSpotMethodHandleAccessProvider implements MethodHandleAccessProv
/* Load non-public field: LambdaForm MethodHandle.form */
JavaConstant lambdaForm = constantReflection.readFieldValue(LazyInitialization.methodHandleFormField, methodHandle);
- if (lambdaForm.isNull()) {
+ if (lambdaForm == null || lambdaForm.isNull()) {
return null;
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
index 6d192ef8a86..75a76e82240 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java
@@ -392,18 +392,13 @@ final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implem
return JavaKind.Object;
}
- @Override
- public ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
- ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType);
- if (resolvedMethod == null || resolvedMethod.isAbstract()) {
- return null;
- }
- return resolvedMethod;
- }
-
@Override
public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
assert !callerType.isArray();
+ if (isInterface()) {
+ // Methods can only be resolved against concrete types
+ return null;
+ }
if (method.isConcrete() && method.getDeclaringClass().equals(this) && method.isPublic()) {
return method;
}
@@ -887,4 +882,9 @@ final class HotSpotResolvedObjectTypeImpl extends HotSpotResolvedJavaType implem
public boolean isTrustedInterfaceType() {
return TrustedInterface.class.isAssignableFrom(mirror());
}
+
+ @Override
+ public boolean isCloneableWithAllocation() {
+ return (getAccessFlags() & config().jvmAccIsCloneableFast) != 0;
+ }
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java
index 06e03ae69f2..64f9027fe66 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java
@@ -168,11 +168,6 @@ public final class HotSpotResolvedPrimitiveType extends HotSpotResolvedJavaType
return false;
}
- @Override
- public ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
- return null;
- }
-
@Override
public ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
return null;
@@ -272,4 +267,9 @@ public final class HotSpotResolvedPrimitiveType extends HotSpotResolvedJavaType
public boolean isTrustedInterfaceType() {
return false;
}
+
+ @Override
+ public boolean isCloneableWithAllocation() {
+ return false;
+ }
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java
index e619fb45ee7..0cd643fa3ca 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java
@@ -38,7 +38,7 @@ public class HotSpotSpeculationLog implements SpeculationLog {
/** All speculations that have been a deoptimization reason. */
private Set failedSpeculations;
- /** Strong references to all reasons embededded in the current nmethod. */
+ /** Strong references to all reasons embedded in the current nmethod. */
private volatile Collection speculations;
@Override
@@ -81,4 +81,9 @@ public class HotSpotSpeculationLog implements SpeculationLog {
return HotSpotObjectConstantImpl.forObject(reason);
}
+
+ @Override
+ public synchronized boolean hasSpeculations() {
+ return speculations != null && !speculations.isEmpty();
+ }
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java
index 72c2552adf3..1f7ffc18a71 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java
@@ -38,7 +38,7 @@ import jdk.vm.ci.hotspotvmconfig.HotSpotVMData;
import jdk.vm.ci.hotspotvmconfig.HotSpotVMField;
import jdk.vm.ci.hotspotvmconfig.HotSpotVMFlag;
import jdk.vm.ci.hotspotvmconfig.HotSpotVMType;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
//JaCoCo Exclude
@@ -1077,6 +1077,7 @@ public class HotSpotVMConfig {
@HotSpotVMConstant(name = "JVM_ACC_FIELD_STABLE") @Stable public int jvmAccFieldStable;
@HotSpotVMConstant(name = "JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE") @Stable public int jvmAccFieldHasGenericSignature;
@HotSpotVMConstant(name = "JVM_ACC_WRITTEN_FLAGS") @Stable public int jvmAccWrittenFlags;
+ @HotSpotVMConstant(name = "JVM_ACC_IS_CLONEABLE_FAST") @Stable public int jvmAccIsCloneableFast;
// Modifier.SYNTHETIC is not public so we get it via vmStructs.
@HotSpotVMConstant(name = "JVM_ACC_SYNTHETIC") @Stable public int jvmAccSynthetic;
@@ -1230,7 +1231,7 @@ public class HotSpotVMConfig {
@HotSpotVMField(name = "Method::_method_counters", type = "MethodCounters*", get = HotSpotVMField.Type.OFFSET) @Stable public int methodCountersOffset;
@HotSpotVMField(name = "Method::_method_data", type = "MethodData*", get = HotSpotVMField.Type.OFFSET) @Stable public int methodDataOffset;
@HotSpotVMField(name = "Method::_from_compiled_entry", type = "address", get = HotSpotVMField.Type.OFFSET) @Stable public int methodCompiledEntryOffset;
- @HotSpotVMField(name = "Method::_code", type = "nmethod*", get = HotSpotVMField.Type.OFFSET) @Stable public int methodCodeOffset;
+ @HotSpotVMField(name = "Method::_code", type = "CompiledMethod*", get = HotSpotVMField.Type.OFFSET) @Stable public int methodCodeOffset;
@HotSpotVMConstant(name = "Method::_jfr_towrite") @Stable public int methodFlagsJfrTowrite;
@HotSpotVMConstant(name = "Method::_caller_sensitive") @Stable public int methodFlagsCallerSensitive;
@@ -1558,13 +1559,13 @@ public class HotSpotVMConfig {
@HotSpotVMAddress(name = "os::javaTimeMillis") @Stable public long javaTimeMillisAddress;
@HotSpotVMAddress(name = "os::javaTimeNanos") @Stable public long javaTimeNanosAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dsin") @Stable public long arithmeticSinAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dcos") @Stable public long arithmeticCosAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dtan") @Stable public long arithmeticTanAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dexp") @Stable public long arithmeticExpAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dlog") @Stable public long arithmeticLogAddress;
- @HotSpotVMAddress(name = "SharedRuntime::dlog10") @Stable public long arithmeticLog10Address;
- @HotSpotVMAddress(name = "SharedRuntime::dpow") @Stable public long arithmeticPowAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dsin", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticSinAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dcos", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticCosAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dtan", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticTanAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dexp", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticExpAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dlog", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticLogAddress;
+ @HotSpotVMField(name = "CompilerToVM::Data::dlog10", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticLog10Address;
+ @HotSpotVMField(name = "CompilerToVM::Data::dpow", type = "address", get = HotSpotVMField.Type.VALUE) @Stable public long arithmeticPowAddress;
@HotSpotVMFlag(name = "JVMCICounterSize") @Stable public int jvmciCountersSize;
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigVerifier.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigVerifier.java
index 5f82244d055..8995bd60797 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigVerifier.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigVerifier.java
@@ -40,7 +40,7 @@ import jdk.internal.org.objectweb.asm.Label;
import jdk.internal.org.objectweb.asm.MethodVisitor;
import jdk.internal.org.objectweb.asm.Opcodes;
import jdk.internal.org.objectweb.asm.Type;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* A {@link ClassVisitor} that verifies {@link HotSpotVMConfig} does not access {@link Unsafe} from
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVmSymbols.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVmSymbols.java
index 0e1398eeaea..bcc2b8f99eb 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVmSymbols.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVmSymbols.java
@@ -24,7 +24,7 @@ package jdk.vm.ci.hotspot;
import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.runtime;
import static jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Class to access the C++ {@code vmSymbols} table.
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/UnsafeAccess.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/UnsafeAccess.java
index cff2ced4100..c75c449f9dd 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/UnsafeAccess.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/UnsafeAccess.java
@@ -24,7 +24,7 @@ package jdk.vm.ci.hotspot;
import java.lang.reflect.Field;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Package private access to the {@link Unsafe} capability.
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/MemoryAccessProvider.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/MemoryAccessProvider.java
index 2f10d1073c6..f98461d45e8 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/MemoryAccessProvider.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/MemoryAccessProvider.java
@@ -35,8 +35,8 @@ public interface MemoryAccessProvider {
* @param displacement the displacement within the object in bytes
* @return the read value encapsulated in a {@link JavaConstant} object, or {@code null} if the
* value cannot be read.
- * @throws IllegalArgumentException if {@code kind} is {@link JavaKind#Void} or not
- * {@linkplain JavaKind#isPrimitive() primitive} kind
+ * @throws IllegalArgumentException if {@code kind} is {@code null}, {@link JavaKind#Void} or
+ * not {@linkplain JavaKind#isPrimitive() primitive} kind
*/
JavaConstant readUnsafeConstant(JavaKind kind, JavaConstant base, long displacement) throws IllegalArgumentException;
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java
index 3be863e751e..9a882975984 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ResolvedJavaType.java
@@ -217,27 +217,34 @@ public interface ResolvedJavaType extends JavaType, ModifiersProvider {
/**
* Resolves the method implementation for virtual dispatches on objects of this dynamic type.
- * This resolution process only searches "up" the class hierarchy of this type.
+ * This resolution process only searches "up" the class hierarchy of this type. A broader search
+ * that also walks "down" the hierarchy is implemented by
+ * {@link #findUniqueConcreteMethod(ResolvedJavaMethod)}. For interface types it returns null
+ * since no concrete object can be an interface.
*
* @param method the method to select the implementation of
* @param callerType the caller or context type used to perform access checks
- * @return the link-time resolved method (might be abstract) or {@code null} if it can not be
- * linked
+ * @return the method that would be selected at runtime (might be abstract) or {@code null} if
+ * it can not be resolved
*/
ResolvedJavaMethod resolveMethod(ResolvedJavaMethod method, ResolvedJavaType callerType);
/**
- * Resolves the method implementation for virtual dispatches on objects of this dynamic type.
- * This resolution process only searches "up" the class hierarchy of this type. A broader search
- * that also walks "down" the hierarchy is implemented by
- * {@link #findUniqueConcreteMethod(ResolvedJavaMethod)}.
+ * A convenience wrapper for {@link #resolveMethod(ResolvedJavaMethod, ResolvedJavaType)} that
+ * only returns non-abstract methods.
*
* @param method the method to select the implementation of
* @param callerType the caller or context type used to perform access checks
* @return the concrete method that would be selected at runtime, or {@code null} if there is no
* concrete implementation of {@code method} in this type or any of its superclasses
*/
- ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType);
+ default ResolvedJavaMethod resolveConcreteMethod(ResolvedJavaMethod method, ResolvedJavaType callerType) {
+ ResolvedJavaMethod resolvedMethod = resolveMethod(method, callerType);
+ if (resolvedMethod == null || resolvedMethod.isAbstract()) {
+ return null;
+ }
+ return resolvedMethod;
+ }
/**
* Given a {@link ResolvedJavaMethod} A, returns a concrete {@link ResolvedJavaMethod} B that is
@@ -352,4 +359,12 @@ public interface ResolvedJavaType extends JavaType, ModifiersProvider {
}
return null;
}
+
+ /**
+ * Returns true if this type is {@link Cloneable} and can be safely cloned by creating a normal
+ * Java allocation and populating it from the fields returned by
+ * {@link #getInstanceFields(boolean)}. Some types may require special handling by the platform
+ * so they would to go through the normal {@link Object#clone} path.
+ */
+ boolean isCloneableWithAllocation();
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/SpeculationLog.java b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/SpeculationLog.java
index 4330e65715e..b81f5f25a53 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/SpeculationLog.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/SpeculationLog.java
@@ -56,4 +56,11 @@ public interface SpeculationLog {
* argument to the deoptimization function.
*/
JavaConstant speculate(SpeculationReason reason);
+
+ /**
+ * Returns if this log has speculations.
+ *
+ * @return true if there are speculations, false otherwise
+ */
+ boolean hasSpeculations();
}
diff --git a/hotspot/src/jdk.vm.ci/share/classes/module-info.java b/hotspot/src/jdk.vm.ci/share/classes/module-info.java
index e105f01e10a..a59a37d56e2 100644
--- a/hotspot/src/jdk.vm.ci/share/classes/module-info.java
+++ b/hotspot/src/jdk.vm.ci/share/classes/module-info.java
@@ -24,9 +24,6 @@
*/
module jdk.vm.ci {
- // 8153756
- requires jdk.unsupported;
-
uses jdk.vm.ci.hotspot.HotSpotVMEventListener;
uses jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory;
uses jdk.vm.ci.runtime.JVMCICompilerFactory;
diff --git a/hotspot/src/os/aix/vm/globals_aix.hpp b/hotspot/src/os/aix/vm/globals_aix.hpp
index bfd244eb6fc..21f250bd161 100644
--- a/hotspot/src/os/aix/vm/globals_aix.hpp
+++ b/hotspot/src/os/aix/vm/globals_aix.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -30,7 +30,15 @@
// Defines Aix specific flags. They are not available on other platforms.
//
// (Please keep the switches sorted alphabetically.)
-#define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, range, constraint) \
+#define RUNTIME_OS_FLAGS(develop, \
+ develop_pd, \
+ product, \
+ product_pd, \
+ diagnostic, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
/* Whether to allow the VM to run if EXTSHM=ON. EXTSHM is an environment */ \
/* variable used on AIX to activate certain hacks which allow more shm segments */\
diff --git a/hotspot/src/os/aix/vm/os_aix.cpp b/hotspot/src/os/aix/vm/os_aix.cpp
index 22e016b65f2..20e3770af33 100644
--- a/hotspot/src/os/aix/vm/os_aix.cpp
+++ b/hotspot/src/os/aix/vm/os_aix.cpp
@@ -777,7 +777,7 @@ bool os::Aix::get_meminfo(meminfo_t* pmi) {
// create new thread
// Thread start routine for all newly created threads
-static void *java_start(Thread *thread) {
+static void *thread_native_entry(Thread *thread) {
// find out my own stack dimensions
{
@@ -838,6 +838,15 @@ static void *java_start(Thread *thread) {
log_info(os, thread)("Thread finished (tid: " UINTX_FORMAT ", kernel thread id: " UINTX_FORMAT ").",
os::current_thread_id(), (uintx) kernel_thread_id);
+ // If a thread has not deleted itself ("delete this") as part of its
+ // termination sequence, we have to ensure thread-local-storage is
+ // cleared before we actually terminate. No threads should ever be
+ // deleted asynchronously with respect to their termination.
+ if (Thread::current_or_null_safe() != NULL) {
+ assert(Thread::current_or_null_safe() == thread, "current thread is wrong");
+ thread->clear_thread_current();
+ }
+
return 0;
}
@@ -902,7 +911,7 @@ bool os::create_thread(Thread* thread, ThreadType thr_type, size_t stack_size) {
pthread_attr_setstacksize(&attr, stack_size);
pthread_t tid;
- int ret = pthread_create(&tid, &attr, (void* (*)(void*)) java_start, thread);
+ int ret = pthread_create(&tid, &attr, (void* (*)(void*)) thread_native_entry, thread);
char buf[64];
@@ -993,11 +1002,14 @@ void os::pd_start_thread(Thread* thread) {
void os::free_thread(OSThread* osthread) {
assert(osthread != NULL, "osthread not set");
- if (Thread::current()->osthread() == osthread) {
- // Restore caller's signal mask
- sigset_t sigmask = osthread->caller_sigmask();
- pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
- }
+ // We are told to free resources of the argument thread,
+ // but we can only really operate on the current thread.
+ assert(Thread::current()->osthread() == osthread,
+ "os::free_thread but not current thread");
+
+ // Restore caller's signal mask
+ sigset_t sigmask = osthread->caller_sigmask();
+ pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
delete osthread;
}
@@ -4875,3 +4887,16 @@ bool os::start_debugging(char *buf, int buflen) {
}
return yes;
}
+
+static inline time_t get_mtime(const char* filename) {
+ struct stat st;
+ int ret = os::stat(filename, &st);
+ assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+ return st.st_mtime;
+}
+
+int os::compare_file_modified_times(const char* file1, const char* file2) {
+ time_t t1 = get_mtime(file1);
+ time_t t2 = get_mtime(file2);
+ return t1 - t2;
+}
diff --git a/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp b/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp
index 6e012a9bee1..111f64491ab 100644
--- a/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp
+++ b/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -256,8 +256,9 @@ int generateJvmOffsets(GEN_variant gen_variant) {
GEN_OFFS(CodeBlob, _name);
GEN_OFFS(CodeBlob, _header_size);
- GEN_OFFS(CodeBlob, _content_offset);
- GEN_OFFS(CodeBlob, _code_offset);
+ GEN_OFFS(CodeBlob, _content_begin);
+ GEN_OFFS(CodeBlob, _code_begin);
+ GEN_OFFS(CodeBlob, _code_end);
GEN_OFFS(CodeBlob, _data_offset);
GEN_OFFS(CodeBlob, _frame_size);
printf("\n");
@@ -265,10 +266,10 @@ int generateJvmOffsets(GEN_variant gen_variant) {
GEN_OFFS(nmethod, _method);
GEN_OFFS(nmethod, _dependencies_offset);
GEN_OFFS(nmethod, _metadata_offset);
- GEN_OFFS(nmethod, _scopes_data_offset);
+ GEN_OFFS(nmethod, _scopes_data_begin);
GEN_OFFS(nmethod, _scopes_pcs_offset);
GEN_OFFS(nmethod, _handler_table_offset);
- GEN_OFFS(nmethod, _deoptimize_offset);
+ GEN_OFFS(nmethod, _deopt_handler_begin);
GEN_OFFS(nmethod, _orig_pc_offset);
GEN_OFFS(PcDesc, _pc_offset);
diff --git a/hotspot/src/os/bsd/dtrace/libjvm_db.c b/hotspot/src/os/bsd/dtrace/libjvm_db.c
index 7a7105c1b25..d68436c3f3c 100644
--- a/hotspot/src/os/bsd/dtrace/libjvm_db.c
+++ b/hotspot/src/os/bsd/dtrace/libjvm_db.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -124,10 +124,10 @@ typedef struct Nmethod_t {
uint64_t pc_desc;
int32_t orig_pc_offset; /* _orig_pc_offset */
- int32_t instrs_beg; /* _code_offset */
- int32_t instrs_end;
- int32_t deopt_beg; /* _deoptimize_offset */
- int32_t scopes_data_beg; /* _scopes_data_offset */
+ uint64_t instrs_beg; /* _code_offset */
+ uint64_t instrs_end;
+ uint64_t deopt_beg; /* _deoptimize_offset */
+ uint64_t scopes_data_beg; /* _scopes_data_offset */
int32_t scopes_data_end;
int32_t metadata_beg; /* _metadata_offset */
int32_t metadata_end;
@@ -617,11 +617,12 @@ static int nmethod_info(Nmethod_t *N)
fprintf(stderr, "\t nmethod_info: BEGIN \n");
/* Instructions */
- err = ps_pread(J->P, nm + OFFSET_CodeBlob_code_offset, &N->instrs_beg, SZ32);
+ err = read_pointer(J, base + OFFSET_VMStructEntryaddress, &vmp->address);
+ err = read_pointer(J, nm + OFFSET_CodeBlob_code_begin, &N->instrs_beg);
CHECK_FAIL(err);
- err = ps_pread(J->P, nm + OFFSET_CodeBlob_data_offset, &N->instrs_end, SZ32);
+ err = read_pointer(J, nm + OFFSET_CodeBlob_code_end, &N->instrs_end);
CHECK_FAIL(err);
- err = ps_pread(J->P, nm + OFFSET_nmethod_deoptimize_offset, &N->deopt_beg, SZ32);
+ err = read_pointer(J, nm + OFFSET_nmethod_deopt_handler_begin, &N->deopt_beg);
CHECK_FAIL(err);
err = ps_pread(J->P, nm + OFFSET_nmethod_orig_pc_offset, &N->orig_pc_offset, SZ32);
CHECK_FAIL(err);
@@ -639,7 +640,7 @@ static int nmethod_info(Nmethod_t *N)
CHECK_FAIL(err);
/* scopes_data */
- err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->scopes_data_beg, SZ32);
+ err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_begin, &N->scopes_data_beg, POINTER_SIZE);
CHECK_FAIL(err);
if (debug > 2 ) {
@@ -868,7 +869,7 @@ get_real_pc(Nmethod_t *N, uint64_t pc_desc, uint64_t *real_pc)
err = ps_pread(N->J->P, pc_desc + OFFSET_PcDesc_pc_offset, &pc_offset, SZ32);
CHECK_FAIL(err);
- *real_pc = N->nm + N->instrs_beg + pc_offset;
+ *real_pc = N->instrs_beg + pc_offset;
if (debug > 2) {
fprintf(stderr, "\t\t get_real_pc: pc_offset: %lx, real_pc: %llx\n",
pc_offset, *real_pc);
@@ -942,7 +943,7 @@ scope_desc_at(Nmethod_t *N, int32_t decode_offset, Vframe_t *vf)
fprintf(stderr, "\t\t scope_desc_at: BEGIN \n");
}
- buffer = N->nm + N->scopes_data_beg + decode_offset;
+ buffer = N->scopes_data_beg + decode_offset;
err = raw_read_int(N->J, &buffer, &vf->sender_decode_offset);
CHECK_FAIL(err);
@@ -1052,11 +1053,11 @@ name_for_nmethod(jvm_agent_t* J,
CHECK_FAIL(err);
if (debug) {
fprintf(stderr, "name_for_nmethod: pc: %#llx, deopt_pc: %#llx\n",
- pc, N->nm + N->deopt_beg);
+ pc, N->deopt_beg);
}
/* check for a deoptimized frame */
- if ( pc == N->nm + N->deopt_beg) {
+ if ( pc == N->deopt_beg) {
uint64_t base;
if (debug) {
fprintf(stderr, "name_for_nmethod: found deoptimized frame\n");
diff --git a/hotspot/src/os/bsd/vm/globals_bsd.hpp b/hotspot/src/os/bsd/vm/globals_bsd.hpp
index a085cbe5114..f3b076e825e 100644
--- a/hotspot/src/os/bsd/vm/globals_bsd.hpp
+++ b/hotspot/src/os/bsd/vm/globals_bsd.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,15 @@
//
// Defines Bsd specific flags. They are not available on other platforms.
//
-#define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, range, constraint) \
+#define RUNTIME_OS_FLAGS(develop, \
+ develop_pd, \
+ product, \
+ product_pd, \
+ diagnostic, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, UseOprofile, false, \
"enable support for Oprofile profiler") \
diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp
index 78def166e58..6de75924e8d 100644
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp
@@ -665,7 +665,7 @@ static uint64_t locate_unique_thread_id(mach_port_t mach_thread_port) {
#endif
// Thread start routine for all newly created threads
-static void *java_start(Thread *thread) {
+static void *thread_native_entry(Thread *thread) {
// Try to randomize the cache line index of hot stack frames.
// This helps when threads of the same stack traces evict each other's
// cache lines. The threads can be either from the same JVM instance, or
@@ -723,6 +723,15 @@ static void *java_start(Thread *thread) {
log_info(os, thread)("Thread finished (tid: " UINTX_FORMAT ", pthread id: " UINTX_FORMAT ").",
os::current_thread_id(), (uintx) pthread_self());
+ // If a thread has not deleted itself ("delete this") as part of its
+ // termination sequence, we have to ensure thread-local-storage is
+ // cleared before we actually terminate. No threads should ever be
+ // deleted asynchronously with respect to their termination.
+ if (Thread::current_or_null_safe() != NULL) {
+ assert(Thread::current_or_null_safe() == thread, "current thread is wrong");
+ thread->clear_thread_current();
+ }
+
return 0;
}
@@ -781,7 +790,7 @@ bool os::create_thread(Thread* thread, ThreadType thr_type, size_t stack_size) {
{
pthread_t tid;
- int ret = pthread_create(&tid, &attr, (void* (*)(void*)) java_start, thread);
+ int ret = pthread_create(&tid, &attr, (void* (*)(void*)) thread_native_entry, thread);
char buf[64];
if (ret == 0) {
@@ -889,11 +898,14 @@ void os::pd_start_thread(Thread* thread) {
void os::free_thread(OSThread* osthread) {
assert(osthread != NULL, "osthread not set");
- if (Thread::current()->osthread() == osthread) {
- // Restore caller's signal mask
- sigset_t sigmask = osthread->caller_sigmask();
- pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
- }
+ // We are told to free resources of the argument thread,
+ // but we can only really operate on the current thread.
+ assert(Thread::current()->osthread() == osthread,
+ "os::free_thread but not current thread");
+
+ // Restore caller's signal mask
+ sigset_t sigmask = osthread->caller_sigmask();
+ pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
delete osthread;
}
diff --git a/hotspot/src/os/linux/vm/globals_linux.hpp b/hotspot/src/os/linux/vm/globals_linux.hpp
index 05f4c181336..39bedf3ff59 100644
--- a/hotspot/src/os/linux/vm/globals_linux.hpp
+++ b/hotspot/src/os/linux/vm/globals_linux.hpp
@@ -28,7 +28,15 @@
//
// Defines Linux specific flags. They are not available on other platforms.
//
-#define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, range, constraint) \
+#define RUNTIME_OS_FLAGS(develop, \
+ develop_pd, \
+ product, \
+ product_pd, \
+ diagnostic, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, UseOprofile, false, \
"enable support for Oprofile profiler") \
diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp
index 4889870e8f4..3becb38278b 100644
--- a/hotspot/src/os/linux/vm/os_linux.cpp
+++ b/hotspot/src/os/linux/vm/os_linux.cpp
@@ -638,7 +638,7 @@ bool os::Linux::manually_expand_stack(JavaThread * t, address addr) {
// create new thread
// Thread start routine for all newly created threads
-static void *java_start(Thread *thread) {
+static void *thread_native_entry(Thread *thread) {
// Try to randomize the cache line index of hot stack frames.
// This helps when threads of the same stack traces evict each other's
// cache lines. The threads can be either from the same JVM instance, or
@@ -690,6 +690,15 @@ static void *java_start(Thread *thread) {
log_info(os, thread)("Thread finished (tid: " UINTX_FORMAT ", pthread id: " UINTX_FORMAT ").",
os::current_thread_id(), (uintx) pthread_self());
+ // If a thread has not deleted itself ("delete this") as part of its
+ // termination sequence, we have to ensure thread-local-storage is
+ // cleared before we actually terminate. No threads should ever be
+ // deleted asynchronously with respect to their termination.
+ if (Thread::current_or_null_safe() != NULL) {
+ assert(Thread::current_or_null_safe() == thread, "current thread is wrong");
+ thread->clear_thread_current();
+ }
+
return 0;
}
@@ -753,7 +762,7 @@ bool os::create_thread(Thread* thread, ThreadType thr_type,
{
pthread_t tid;
- int ret = pthread_create(&tid, &attr, (void* (*)(void*)) java_start, thread);
+ int ret = pthread_create(&tid, &attr, (void* (*)(void*)) thread_native_entry, thread);
char buf[64];
if (ret == 0) {
@@ -881,18 +890,21 @@ void os::pd_start_thread(Thread* thread) {
void os::free_thread(OSThread* osthread) {
assert(osthread != NULL, "osthread not set");
- if (Thread::current()->osthread() == osthread) {
+ // We are told to free resources of the argument thread,
+ // but we can only really operate on the current thread.
+ assert(Thread::current()->osthread() == osthread,
+ "os::free_thread but not current thread");
+
#ifdef ASSERT
- sigset_t current;
- sigemptyset(¤t);
- pthread_sigmask(SIG_SETMASK, NULL, ¤t);
- assert(!sigismember(¤t, SR_signum), "SR signal should not be blocked!");
+ sigset_t current;
+ sigemptyset(¤t);
+ pthread_sigmask(SIG_SETMASK, NULL, ¤t);
+ assert(!sigismember(¤t, SR_signum), "SR signal should not be blocked!");
#endif
- // Restore caller's signal mask
- sigset_t sigmask = osthread->caller_sigmask();
- pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
- }
+ // Restore caller's signal mask
+ sigset_t sigmask = osthread->caller_sigmask();
+ pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
delete osthread;
}
@@ -2013,8 +2025,8 @@ void os::print_os_info(outputStream* st) {
// their own specific XXX-release file as well as a redhat-release file.
// Because of this the XXX-release file needs to be searched for before the
// redhat-release file.
-// Since Red Hat has a lsb-release file that is not very descriptive the
-// search for redhat-release needs to be before lsb-release.
+// Since Red Hat and SuSE have an lsb-release file that is not very descriptive the
+// search for redhat-release / SuSE-release needs to be before lsb-release.
// Since the lsb-release file is the new standard it needs to be searched
// before the older style release files.
// Searching system-release (Red Hat) and os-release (other Linuxes) are a
@@ -2031,8 +2043,8 @@ const char* distro_files[] = {
"/etc/mandrake-release",
"/etc/sun-release",
"/etc/redhat-release",
- "/etc/lsb-release",
"/etc/SuSE-release",
+ "/etc/lsb-release",
"/etc/turbolinux-release",
"/etc/gentoo-release",
"/etc/ltib-release",
@@ -2062,14 +2074,11 @@ void os::Linux::print_distro_info(outputStream* st) {
st->cr();
}
-static void parse_os_info(char* distro, size_t length, const char* file) {
- FILE* fp = fopen(file, "r");
- if (fp != NULL) {
- char buf[256];
- // get last line of the file.
- while (fgets(buf, sizeof(buf), fp)) { }
- // Edit out extra stuff in expected ubuntu format
- if (strstr(buf, "DISTRIB_DESCRIPTION=") != NULL) {
+static void parse_os_info_helper(FILE* fp, char* distro, size_t length, bool get_first_line) {
+ char buf[256];
+ while (fgets(buf, sizeof(buf), fp)) {
+ // Edit out extra stuff in expected format
+ if (strstr(buf, "DISTRIB_DESCRIPTION=") != NULL || strstr(buf, "PRETTY_NAME=") != NULL) {
char* ptr = strstr(buf, "\""); // the name is in quotes
if (ptr != NULL) {
ptr++; // go beyond first quote
@@ -2083,13 +2092,26 @@ static void parse_os_info(char* distro, size_t length, const char* file) {
if (nl != NULL) *nl = '\0';
strncpy(distro, ptr, length);
}
- } else {
- // if not in expected Ubuntu format, print out whole line minus \n
+ return;
+ } else if (get_first_line) {
char* nl = strchr(buf, '\n');
if (nl != NULL) *nl = '\0';
strncpy(distro, buf, length);
+ return;
}
- // close distro file
+ }
+ // print last line and close
+ char* nl = strchr(buf, '\n');
+ if (nl != NULL) *nl = '\0';
+ strncpy(distro, buf, length);
+}
+
+static void parse_os_info(char* distro, size_t length, const char* file) {
+ FILE* fp = fopen(file, "r");
+ if (fp != NULL) {
+ // if suse format, print out first line
+ bool get_first_line = (strcmp(file, "/etc/SuSE-release") == 0);
+ parse_os_info_helper(fp, distro, length, get_first_line);
fclose(fp);
}
}
@@ -3041,6 +3063,48 @@ static char* anon_mmap(char* requested_addr, size_t bytes, bool fixed) {
return addr == MAP_FAILED ? NULL : addr;
}
+// Allocate (using mmap, NO_RESERVE, with small pages) at either a given request address
+// (req_addr != NULL) or with a given alignment.
+// - bytes shall be a multiple of alignment.
+// - req_addr can be NULL. If not NULL, it must be a multiple of alignment.
+// - alignment sets the alignment at which memory shall be allocated.
+// It must be a multiple of allocation granularity.
+// Returns address of memory or NULL. If req_addr was not NULL, will only return
+// req_addr or NULL.
+static char* anon_mmap_aligned(size_t bytes, size_t alignment, char* req_addr) {
+
+ size_t extra_size = bytes;
+ if (req_addr == NULL && alignment > 0) {
+ extra_size += alignment;
+ }
+
+ char* start = (char*) ::mmap(req_addr, extra_size, PROT_NONE,
+ MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
+ -1, 0);
+ if (start == MAP_FAILED) {
+ start = NULL;
+ } else {
+ if (req_addr != NULL) {
+ if (start != req_addr) {
+ ::munmap(start, extra_size);
+ start = NULL;
+ }
+ } else {
+ char* const start_aligned = (char*) align_ptr_up(start, alignment);
+ char* const end_aligned = start_aligned + bytes;
+ char* const end = start + extra_size;
+ if (start_aligned > start) {
+ ::munmap(start, start_aligned - start);
+ }
+ if (end_aligned < end) {
+ ::munmap(end_aligned, end - end_aligned);
+ }
+ start = start_aligned;
+ }
+ }
+ return start;
+}
+
static int anon_munmap(char * addr, size_t size) {
return ::munmap(addr, size) == 0;
}
@@ -3317,29 +3381,113 @@ void os::large_page_init() {
#define SHM_HUGETLB 04000
#endif
+#define shm_warning_format(format, ...) \
+ do { \
+ if (UseLargePages && \
+ (!FLAG_IS_DEFAULT(UseLargePages) || \
+ !FLAG_IS_DEFAULT(UseSHM) || \
+ !FLAG_IS_DEFAULT(LargePageSizeInBytes))) { \
+ warning(format, __VA_ARGS__); \
+ } \
+ } while (0)
+
+#define shm_warning(str) shm_warning_format("%s", str)
+
+#define shm_warning_with_errno(str) \
+ do { \
+ int err = errno; \
+ shm_warning_format(str " (error = %d)", err); \
+ } while (0)
+
+static char* shmat_with_alignment(int shmid, size_t bytes, size_t alignment) {
+ assert(is_size_aligned(bytes, alignment), "Must be divisible by the alignment");
+
+ if (!is_size_aligned(alignment, SHMLBA)) {
+ assert(false, "Code below assumes that alignment is at least SHMLBA aligned");
+ return NULL;
+ }
+
+ // To ensure that we get 'alignment' aligned memory from shmat,
+ // we pre-reserve aligned virtual memory and then attach to that.
+
+ char* pre_reserved_addr = anon_mmap_aligned(bytes, alignment, NULL);
+ if (pre_reserved_addr == NULL) {
+ // Couldn't pre-reserve aligned memory.
+ shm_warning("Failed to pre-reserve aligned memory for shmat.");
+ return NULL;
+ }
+
+ // SHM_REMAP is needed to allow shmat to map over an existing mapping.
+ char* addr = (char*)shmat(shmid, pre_reserved_addr, SHM_REMAP);
+
+ if ((intptr_t)addr == -1) {
+ int err = errno;
+ shm_warning_with_errno("Failed to attach shared memory.");
+
+ assert(err != EACCES, "Unexpected error");
+ assert(err != EIDRM, "Unexpected error");
+ assert(err != EINVAL, "Unexpected error");
+
+ // Since we don't know if the kernel unmapped the pre-reserved memory area
+ // we can't unmap it, since that would potentially unmap memory that was
+ // mapped from other threads.
+ return NULL;
+ }
+
+ return addr;
+}
+
+static char* shmat_at_address(int shmid, char* req_addr) {
+ if (!is_ptr_aligned(req_addr, SHMLBA)) {
+ assert(false, "Requested address needs to be SHMLBA aligned");
+ return NULL;
+ }
+
+ char* addr = (char*)shmat(shmid, req_addr, 0);
+
+ if ((intptr_t)addr == -1) {
+ shm_warning_with_errno("Failed to attach shared memory.");
+ return NULL;
+ }
+
+ return addr;
+}
+
+static char* shmat_large_pages(int shmid, size_t bytes, size_t alignment, char* req_addr) {
+ // If a req_addr has been provided, we assume that the caller has already aligned the address.
+ if (req_addr != NULL) {
+ assert(is_ptr_aligned(req_addr, os::large_page_size()), "Must be divisible by the large page size");
+ assert(is_ptr_aligned(req_addr, alignment), "Must be divisible by given alignment");
+ return shmat_at_address(shmid, req_addr);
+ }
+
+ // Since shmid has been setup with SHM_HUGETLB, shmat will automatically
+ // return large page size aligned memory addresses when req_addr == NULL.
+ // However, if the alignment is larger than the large page size, we have
+ // to manually ensure that the memory returned is 'alignment' aligned.
+ if (alignment > os::large_page_size()) {
+ assert(is_size_aligned(alignment, os::large_page_size()), "Must be divisible by the large page size");
+ return shmat_with_alignment(shmid, bytes, alignment);
+ } else {
+ return shmat_at_address(shmid, NULL);
+ }
+}
+
char* os::Linux::reserve_memory_special_shm(size_t bytes, size_t alignment,
char* req_addr, bool exec) {
// "exec" is passed in but not used. Creating the shared image for
// the code cache doesn't have an SHM_X executable permission to check.
assert(UseLargePages && UseSHM, "only for SHM large pages");
assert(is_ptr_aligned(req_addr, os::large_page_size()), "Unaligned address");
+ assert(is_ptr_aligned(req_addr, alignment), "Unaligned address");
- if (!is_size_aligned(bytes, os::large_page_size()) || alignment > os::large_page_size()) {
+ if (!is_size_aligned(bytes, os::large_page_size())) {
return NULL; // Fallback to small pages.
}
- key_t key = IPC_PRIVATE;
- char *addr;
-
- bool warn_on_failure = UseLargePages &&
- (!FLAG_IS_DEFAULT(UseLargePages) ||
- !FLAG_IS_DEFAULT(UseSHM) ||
- !FLAG_IS_DEFAULT(LargePageSizeInBytes));
- char msg[128];
-
// Create a large shared memory region to attach to based on size.
- // Currently, size is the total size of the heap
- int shmid = shmget(key, bytes, SHM_HUGETLB|IPC_CREAT|SHM_R|SHM_W);
+ // Currently, size is the total size of the heap.
+ int shmid = shmget(IPC_PRIVATE, bytes, SHM_HUGETLB|IPC_CREAT|SHM_R|SHM_W);
if (shmid == -1) {
// Possible reasons for shmget failure:
// 1. shmmax is too small for Java heap.
@@ -3355,16 +3503,12 @@ char* os::Linux::reserve_memory_special_shm(size_t bytes, size_t alignment,
// they are so fragmented after a long run that they can't
// coalesce into large pages. Try to reserve large pages when
// the system is still "fresh".
- if (warn_on_failure) {
- jio_snprintf(msg, sizeof(msg), "Failed to reserve shared memory (errno = %d).", errno);
- warning("%s", msg);
- }
+ shm_warning_with_errno("Failed to reserve shared memory.");
return NULL;
}
- // attach to the region
- addr = (char*)shmat(shmid, req_addr, 0);
- int err = errno;
+ // Attach to the region.
+ char* addr = shmat_large_pages(shmid, bytes, alignment, req_addr);
// Remove shmid. If shmat() is successful, the actual shared memory segment
// will be deleted when it's detached by shmdt() or when the process
@@ -3372,14 +3516,6 @@ char* os::Linux::reserve_memory_special_shm(size_t bytes, size_t alignment,
// segment immediately.
shmctl(shmid, IPC_RMID, NULL);
- if ((intptr_t)addr == -1) {
- if (warn_on_failure) {
- jio_snprintf(msg, sizeof(msg), "Failed to attach shared memory (errno = %d).", err);
- warning("%s", msg);
- }
- return NULL;
- }
-
return addr;
}
@@ -3422,50 +3558,6 @@ char* os::Linux::reserve_memory_special_huge_tlbfs_only(size_t bytes,
return addr;
}
-// Helper for os::Linux::reserve_memory_special_huge_tlbfs_mixed().
-// Allocate (using mmap, NO_RESERVE, with small pages) at either a given request address
-// (req_addr != NULL) or with a given alignment.
-// - bytes shall be a multiple of alignment.
-// - req_addr can be NULL. If not NULL, it must be a multiple of alignment.
-// - alignment sets the alignment at which memory shall be allocated.
-// It must be a multiple of allocation granularity.
-// Returns address of memory or NULL. If req_addr was not NULL, will only return
-// req_addr or NULL.
-static char* anon_mmap_aligned(size_t bytes, size_t alignment, char* req_addr) {
-
- size_t extra_size = bytes;
- if (req_addr == NULL && alignment > 0) {
- extra_size += alignment;
- }
-
- char* start = (char*) ::mmap(req_addr, extra_size, PROT_NONE,
- MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
- -1, 0);
- if (start == MAP_FAILED) {
- start = NULL;
- } else {
- if (req_addr != NULL) {
- if (start != req_addr) {
- ::munmap(start, extra_size);
- start = NULL;
- }
- } else {
- char* const start_aligned = (char*) align_ptr_up(start, alignment);
- char* const end_aligned = start_aligned + bytes;
- char* const end = start + extra_size;
- if (start_aligned > start) {
- ::munmap(start, start_aligned - start);
- }
- if (end_aligned < end) {
- ::munmap(end_aligned, end - end_aligned);
- }
- start = start_aligned;
- }
- }
- return start;
-
-}
-
// Reserve memory using mmap(MAP_HUGETLB).
// - bytes shall be a multiple of alignment.
// - req_addr can be NULL. If not NULL, it must be a multiple of alignment.
diff --git a/hotspot/src/os/posix/vm/os_posix.cpp b/hotspot/src/os/posix/vm/os_posix.cpp
index 1c6efe5b513..ad10c82a5b2 100644
--- a/hotspot/src/os/posix/vm/os_posix.cpp
+++ b/hotspot/src/os/posix/vm/os_posix.cpp
@@ -47,6 +47,12 @@
// Check core dump limit and report possible place where core can be found
void os::check_dump_limit(char* buffer, size_t bufferSize) {
+ if (!FLAG_IS_DEFAULT(CreateCoredumpOnCrash) && !CreateCoredumpOnCrash) {
+ jio_snprintf(buffer, bufferSize, "CreateCoredumpOnCrash is disabled from command line");
+ VMError::record_coredump_status(buffer, false);
+ return;
+ }
+
int n;
struct rlimit rlim;
bool success;
@@ -181,8 +187,8 @@ int os::log_vsnprintf(char* buf, size_t len, const char* fmt, va_list args) {
return vsnprintf(buf, len, fmt, args);
}
-int os::fileno(FILE* fp) {
- return ::fileno(fp);
+int os::get_fileno(FILE* fp) {
+ return NOT_AIX(::)fileno(fp);
}
void os::Posix::print_load_average(outputStream* st) {
@@ -321,6 +327,14 @@ FILE* os::open(int fd, const char* mode) {
return ::fdopen(fd, mode);
}
+void os::flockfile(FILE* fp) {
+ ::flockfile(fp);
+}
+
+void os::funlockfile(FILE* fp) {
+ ::funlockfile(fp);
+}
+
// Builds a platform dependent Agent_OnLoad_ function name
// which is used to find statically linked in agents.
// Parameters:
diff --git a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp
index ddd74b16d9e..7d23282b412 100644
--- a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp
+++ b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -251,8 +251,9 @@ int generateJvmOffsets(GEN_variant gen_variant) {
GEN_OFFS(CodeBlob, _name);
GEN_OFFS(CodeBlob, _header_size);
- GEN_OFFS(CodeBlob, _content_offset);
- GEN_OFFS(CodeBlob, _code_offset);
+ GEN_OFFS(CodeBlob, _content_begin);
+ GEN_OFFS(CodeBlob, _code_begin);
+ GEN_OFFS(CodeBlob, _code_end);
GEN_OFFS(CodeBlob, _data_offset);
GEN_OFFS(CodeBlob, _frame_size);
printf("\n");
@@ -260,10 +261,10 @@ int generateJvmOffsets(GEN_variant gen_variant) {
GEN_OFFS(nmethod, _method);
GEN_OFFS(nmethod, _dependencies_offset);
GEN_OFFS(nmethod, _metadata_offset);
- GEN_OFFS(nmethod, _scopes_data_offset);
+ GEN_OFFS(nmethod, _scopes_data_begin);
GEN_OFFS(nmethod, _scopes_pcs_offset);
GEN_OFFS(nmethod, _handler_table_offset);
- GEN_OFFS(nmethod, _deoptimize_offset);
+ GEN_OFFS(nmethod, _deopt_handler_begin);
GEN_OFFS(nmethod, _orig_pc_offset);
GEN_OFFS(PcDesc, _pc_offset);
diff --git a/hotspot/src/os/solaris/dtrace/libjvm_db.c b/hotspot/src/os/solaris/dtrace/libjvm_db.c
index e00284532a6..73b26bcb9d5 100644
--- a/hotspot/src/os/solaris/dtrace/libjvm_db.c
+++ b/hotspot/src/os/solaris/dtrace/libjvm_db.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -124,10 +124,10 @@ typedef struct Nmethod_t {
uint64_t pc_desc;
int32_t orig_pc_offset; /* _orig_pc_offset */
- int32_t instrs_beg; /* _code_offset */
- int32_t instrs_end;
- int32_t deopt_beg; /* _deoptimize_offset */
- int32_t scopes_data_beg; /* _scopes_data_offset */
+ uint64_t instrs_beg; /* _code_offset */
+ uint64_t instrs_end;
+ uint64_t deopt_beg; /* _deoptimize_offset */
+ uint64_t scopes_data_beg; /* _scopes_data_begin */
int32_t scopes_data_end;
int32_t metadata_beg; /* _metadata_offset */
int32_t metadata_end;
@@ -617,11 +617,11 @@ static int nmethod_info(Nmethod_t *N)
fprintf(stderr, "\t nmethod_info: BEGIN \n");
/* Instructions */
- err = ps_pread(J->P, nm + OFFSET_CodeBlob_code_offset, &N->instrs_beg, SZ32);
+ err = read_pointer(J, nm + OFFSET_CodeBlob_code_begin, &N->instrs_beg);
CHECK_FAIL(err);
- err = ps_pread(J->P, nm + OFFSET_CodeBlob_data_offset, &N->instrs_end, SZ32);
+ err = read_pointer(J, nm + OFFSET_CodeBlob_code_end, &N->instrs_end);
CHECK_FAIL(err);
- err = ps_pread(J->P, nm + OFFSET_nmethod_deoptimize_offset, &N->deopt_beg, SZ32);
+ err = read_pointer(J, nm + OFFSET_nmethod_deopt_handler_begin, &N->deopt_beg);
CHECK_FAIL(err);
err = ps_pread(J->P, nm + OFFSET_nmethod_orig_pc_offset, &N->orig_pc_offset, SZ32);
CHECK_FAIL(err);
@@ -629,7 +629,7 @@ static int nmethod_info(Nmethod_t *N)
/* Metadata */
err = ps_pread(J->P, nm + OFFSET_nmethod_metadata_offset, &N->metadata_beg, SZ32);
CHECK_FAIL(err);
- err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->metadata_end, SZ32);
+ err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_begin, &N->metadata_end, SZ32);
CHECK_FAIL(err);
/* scopes_pcs */
@@ -639,7 +639,7 @@ static int nmethod_info(Nmethod_t *N)
CHECK_FAIL(err);
/* scopes_data */
- err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->scopes_data_beg, SZ32);
+ err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_begin, &N->scopes_data_beg, POINTER_SIZE);
CHECK_FAIL(err);
if (debug > 2 ) {
@@ -868,7 +868,7 @@ get_real_pc(Nmethod_t *N, uint64_t pc_desc, uint64_t *real_pc)
err = ps_pread(N->J->P, pc_desc + OFFSET_PcDesc_pc_offset, &pc_offset, SZ32);
CHECK_FAIL(err);
- *real_pc = N->nm + N->instrs_beg + pc_offset;
+ *real_pc = N->instrs_beg + pc_offset;
if (debug > 2) {
fprintf(stderr, "\t\t get_real_pc: pc_offset: %lx, real_pc: %llx\n",
pc_offset, *real_pc);
@@ -942,7 +942,7 @@ scope_desc_at(Nmethod_t *N, int32_t decode_offset, Vframe_t *vf)
fprintf(stderr, "\t\t scope_desc_at: BEGIN \n");
}
- buffer = N->nm + N->scopes_data_beg + decode_offset;
+ buffer = N->scopes_data_beg + decode_offset;
err = raw_read_int(N->J, &buffer, &vf->sender_decode_offset);
CHECK_FAIL(err);
@@ -1052,11 +1052,11 @@ name_for_nmethod(jvm_agent_t* J,
CHECK_FAIL(err);
if (debug) {
fprintf(stderr, "name_for_nmethod: pc: %#llx, deopt_pc: %#llx\n",
- pc, N->nm + N->deopt_beg);
+ pc, N->deopt_beg);
}
/* check for a deoptimized frame */
- if ( pc == N->nm + N->deopt_beg) {
+ if ( pc == N->deopt_beg) {
uint64_t base;
if (debug) {
fprintf(stderr, "name_for_nmethod: found deoptimized frame\n");
diff --git a/hotspot/src/os/solaris/vm/globals_solaris.hpp b/hotspot/src/os/solaris/vm/globals_solaris.hpp
index 4e6d8182533..b3e2e34a314 100644
--- a/hotspot/src/os/solaris/vm/globals_solaris.hpp
+++ b/hotspot/src/os/solaris/vm/globals_solaris.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,15 @@
//
// Defines Solaris specific flags. They are not available on other platforms.
//
-#define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, range, constraint) \
+#define RUNTIME_OS_FLAGS(develop, \
+ develop_pd, \
+ product, \
+ product_pd, \
+ diagnostic, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, UseExtendedFileIO, true, \
"Enable workaround for limitations of stdio FILE structure")
diff --git a/hotspot/src/os/solaris/vm/os_solaris.cpp b/hotspot/src/os/solaris/vm/os_solaris.cpp
index 1d68dcc7721..1b02694822e 100644
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp
@@ -725,8 +725,8 @@ extern "C" void breakpoint() {
static thread_t main_thread;
-// Thread start routine for all new Java threads
-extern "C" void* java_start(void* thread_addr) {
+// Thread start routine for all newly created threads
+extern "C" void* thread_native_entry(void* thread_addr) {
// Try to randomize the cache line index of hot stack frames.
// This helps when threads of the same stack traces evict each other's
// cache lines. The threads can be either from the same JVM instance, or
@@ -796,6 +796,15 @@ extern "C" void* java_start(void* thread_addr) {
log_info(os, thread)("Thread finished (tid: " UINTX_FORMAT ").", os::current_thread_id());
+ // If a thread has not deleted itself ("delete this") as part of its
+ // termination sequence, we have to ensure thread-local-storage is
+ // cleared before we actually terminate. No threads should ever be
+ // deleted asynchronously with respect to their termination.
+ if (Thread::current_or_null_safe() != NULL) {
+ assert(Thread::current_or_null_safe() == thread, "current thread is wrong");
+ thread->clear_thread_current();
+ }
+
if (UseDetachedThreads) {
thr_exit(NULL);
ShouldNotReachHere();
@@ -1009,7 +1018,7 @@ bool os::create_thread(Thread* thread, ThreadType thr_type,
osthread->set_lwp_id(-1);
osthread->set_thread_id(-1);
- status = thr_create(NULL, stack_size, java_start, thread, flags, &tid);
+ status = thr_create(NULL, stack_size, thread_native_entry, thread, flags, &tid);
char buf[64];
if (status == 0) {
@@ -1221,18 +1230,15 @@ void os::initialize_thread(Thread* thr) {
void os::free_thread(OSThread* osthread) {
assert(osthread != NULL, "os::free_thread but osthread not set");
-
// We are told to free resources of the argument thread,
// but we can only really operate on the current thread.
- // The main thread must take the VMThread down synchronously
- // before the main thread exits and frees up CodeHeap
- guarantee((Thread::current()->osthread() == osthread
- || (osthread == VMThread::vm_thread()->osthread())), "os::free_thread but not current thread");
- if (Thread::current()->osthread() == osthread) {
- // Restore caller's signal mask
- sigset_t sigmask = osthread->caller_sigmask();
- pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
- }
+ assert(Thread::current()->osthread() == osthread,
+ "os::free_thread but not current thread");
+
+ // Restore caller's signal mask
+ sigset_t sigmask = osthread->caller_sigmask();
+ pthread_sigmask(SIG_SETMASK, &sigmask, NULL);
+
delete osthread;
}
@@ -1351,24 +1357,29 @@ double os::elapsedVTime() {
return (double)gethrvtime() / (double)hrtime_hz;
}
-// Used internally for comparisons only
-// getTimeMillis guaranteed to not move backwards on Solaris
-jlong getTimeMillis() {
- jlong nanotime = getTimeNanos();
- return (jlong)(nanotime / NANOSECS_PER_MILLISEC);
-}
+// in-memory timestamp support - has update accuracy of 1ms
+typedef void (*_get_nsec_fromepoch_func_t)(hrtime_t*);
+static _get_nsec_fromepoch_func_t _get_nsec_fromepoch = NULL;
// Must return millis since Jan 1 1970 for JVM_CurrentTimeMillis
jlong os::javaTimeMillis() {
- timeval t;
- if (gettimeofday(&t, NULL) == -1) {
- fatal("os::javaTimeMillis: gettimeofday (%s)", os::strerror(errno));
+ if (_get_nsec_fromepoch != NULL) {
+ hrtime_t now;
+ _get_nsec_fromepoch(&now);
+ return now / NANOSECS_PER_MILLISEC;
+ }
+ else {
+ timeval t;
+ if (gettimeofday(&t, NULL) == -1) {
+ fatal("os::javaTimeMillis: gettimeofday (%s)", os::strerror(errno));
+ }
+ return jlong(t.tv_sec) * 1000 + jlong(t.tv_usec) / 1000;
}
- return jlong(t.tv_sec) * 1000 + jlong(t.tv_usec) / 1000;
}
void os::javaTimeSystemUTC(jlong &seconds, jlong &nanos) {
timeval t;
+ // can't use get_nsec_fromepoch here as we need better accuracy than 1ms
if (gettimeofday(&t, NULL) == -1) {
fatal("os::javaTimeSystemUTC: gettimeofday (%s)", os::strerror(errno));
}
@@ -4432,11 +4443,15 @@ void os::init(void) {
// enough to allow the thread to get to user bytecode execution.
Solaris::min_stack_allowed = MAX2(thr_min_stack(), Solaris::min_stack_allowed);
- // retrieve entry point for pthread_setname_np
+ // dynamic lookup of functions that may not be available in our lowest
+ // supported Solaris release
void * handle = dlopen("libc.so.1", RTLD_LAZY);
if (handle != NULL) {
- Solaris::_pthread_setname_np =
+ Solaris::_pthread_setname_np = // from 11.3
(Solaris::pthread_setname_np_func_t)dlsym(handle, "pthread_setname_np");
+
+ _get_nsec_fromepoch = // from 11.3.6
+ (_get_nsec_fromepoch_func_t) dlsym(handle, "get_nsec_fromepoch");
}
}
diff --git a/hotspot/src/os/windows/vm/globals_windows.hpp b/hotspot/src/os/windows/vm/globals_windows.hpp
index 1a2eb4fdd4a..3d831ec1257 100644
--- a/hotspot/src/os/windows/vm/globals_windows.hpp
+++ b/hotspot/src/os/windows/vm/globals_windows.hpp
@@ -28,7 +28,15 @@
//
// Defines Windows specific flags. They are not available on other platforms.
//
-#define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, range, constraint) \
+#define RUNTIME_OS_FLAGS(develop, \
+ develop_pd, \
+ product, \
+ product_pd, \
+ diagnostic, \
+ notproduct, \
+ range, \
+ constraint, \
+ writeable) \
\
product(bool, UseUTCFileTimestamp, true, \
"Adjust the timestamp returned from stat() to be UTC")
diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp
index fa401527ed7..7c3b6da4ed4 100644
--- a/hotspot/src/os/windows/vm/os_windows.cpp
+++ b/hotspot/src/os/windows/vm/os_windows.cpp
@@ -409,8 +409,8 @@ struct tm* os::localtime_pd(const time_t* clock, struct tm* res) {
LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo);
-// Thread start routine for all new Java threads
-static unsigned __stdcall java_start(Thread* thread) {
+// Thread start routine for all newly created threads
+static unsigned __stdcall thread_native_entry(Thread* thread) {
// Try to randomize the cache line index of hot stack frames.
// This helps when threads of the same stack traces evict each other's
// cache lines. The threads can be either from the same JVM instance, or
@@ -459,6 +459,15 @@ static unsigned __stdcall java_start(Thread* thread) {
Atomic::dec_ptr((intptr_t*)&os::win32::_os_thread_count);
}
+ // If a thread has not deleted itself ("delete this") as part of its
+ // termination sequence, we have to ensure thread-local-storage is
+ // cleared before we actually terminate. No threads should ever be
+ // deleted asynchronously with respect to their termination.
+ if (Thread::current_or_null_safe() != NULL) {
+ assert(Thread::current_or_null_safe() == thread, "current thread is wrong");
+ thread->clear_thread_current();
+ }
+
// Thread must not return from exit_process_or_thread(), but if it does,
// let it proceed to exit normally
return (unsigned)os::win32::exit_process_or_thread(os::win32::EPT_THREAD, res);
@@ -631,7 +640,7 @@ bool os::create_thread(Thread* thread, ThreadType thr_type,
HANDLE thread_handle =
(HANDLE)_beginthreadex(NULL,
(unsigned)stack_size,
- (unsigned (__stdcall *)(void*)) java_start,
+ (unsigned (__stdcall *)(void*)) thread_native_entry,
thread,
initflag,
&thread_id);
@@ -670,6 +679,12 @@ bool os::create_thread(Thread* thread, ThreadType thr_type,
// Free Win32 resources related to the OSThread
void os::free_thread(OSThread* osthread) {
assert(osthread != NULL, "osthread not set");
+
+ // We are told to free resources of the argument thread,
+ // but we can only really operate on the current thread.
+ assert(Thread::current()->osthread() == osthread,
+ "os::free_thread but not current thread");
+
CloseHandle(osthread->thread_handle());
CloseHandle(osthread->interrupt_event());
delete osthread;
@@ -4602,7 +4617,7 @@ int os::ftruncate(int fd, jlong length) {
return 0;
}
-int os::fileno(FILE* fp) {
+int os::get_fileno(FILE* fp) {
return _fileno(fp);
}
@@ -4661,6 +4676,14 @@ int os::available(int fd, jlong *bytes) {
}
}
+void os::flockfile(FILE* fp) {
+ _lock_file(fp);
+}
+
+void os::funlockfile(FILE* fp) {
+ _unlock_file(fp);
+}
+
// This code is a copy of JDK's nonSeekAvailable
// from src/windows/hpi/src/sys_api_md.c
diff --git a/hotspot/src/os/windows/vm/os_windows.hpp b/hotspot/src/os/windows/vm/os_windows.hpp
index 5bef412f904..9170dfe1665 100644
--- a/hotspot/src/os/windows/vm/os_windows.hpp
+++ b/hotspot/src/os/windows/vm/os_windows.hpp
@@ -36,7 +36,7 @@ static const char* path_separator() { return ";"; }
class win32 {
friend class os;
- friend unsigned __stdcall java_start(class Thread*);
+ friend unsigned __stdcall thread_native_entry(class Thread*);
protected:
static int _vm_page_size;
diff --git a/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp b/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
index 537595f95ad..211a2dc3323 100644
--- a/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
+++ b/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
@@ -390,13 +390,11 @@ JVM_handle_aix_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrec
// BugId 4454115: A read from a MappedByteBuffer can fault here if the
// underlying file has been truncated. Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = cb->as_compiled_method_or_null();
if (nm != NULL && nm->has_unsafe_access()) {
- // We don't really need a stub here! Just set the pending exeption and
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
- os::Aix::ucontext_set_pc(uc, pc + 4);
+ address next_pc = pc + 4;
+ next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc);
+ os::Aix::ucontext_set_pc(uc, next_pc);
return 1;
}
}
@@ -415,11 +413,9 @@ JVM_handle_aix_signal(int sig, siginfo_t* info, void* ucVoid, int abort_if_unrec
}
else if (thread->thread_state() == _thread_in_vm &&
sig == SIGBUS && thread->doing_unsafe_access()) {
- // We don't really need a stub here! Just set the pending exeption and
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
- os::Aix::ucontext_set_pc(uc, pc + 4);
+ address next_pc = pc + 4;
+ next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc);
+ os::Aix::ucontext_set_pc(uc, next_pc);
return 1;
}
}
diff --git a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
index 73acdebfb47..9fe34fc1770 100644
--- a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
+++ b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
@@ -582,9 +582,10 @@ JVM_handle_bsd_signal(int sig,
// here if the underlying file has been truncated.
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = (cb != NULL && cb->is_nmethod()) ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
if (nm != NULL && nm->has_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
}
else
@@ -655,7 +656,8 @@ JVM_handle_bsd_signal(int sig,
} else if (thread->thread_state() == _thread_in_vm &&
sig == SIGBUS && /* info->si_code == BUS_OBJERR && */
thread->doing_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
// jni_fast_GetField can trap at certain pc's if a GC kicks in
diff --git a/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp b/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
index 2a354fbb72c..04179925e67 100644
--- a/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
+++ b/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
@@ -226,23 +226,6 @@ extern "C" void FetchNPFI () ;
extern "C" void FetchNResume () ;
#endif
-// An operation in Unsafe has faulted. We're going to return to the
-// instruction after the faulting load or store. We also set
-// pending_unsafe_access_error so that at some point in the future our
-// user will get a helpful message.
-static address handle_unsafe_access(JavaThread* thread, address pc) {
- // pc is the instruction which we must emulate
- // doing a no-op is fine: return garbage from the load
- // therefore, compute npc
- address npc = pc + NativeCall::instruction_size;
-
- // request an async exception
- thread->set_pending_unsafe_access_error();
-
- // return address of next instruction to execute
- return npc;
-}
-
extern "C" JNIEXPORT int
JVM_handle_linux_signal(int sig,
siginfo_t* info,
@@ -385,9 +368,10 @@ JVM_handle_linux_signal(int sig,
// here if the underlying file has been truncated.
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = (cb != NULL && cb->is_nmethod()) ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
if (nm != NULL && nm->has_unsafe_access()) {
- stub = handle_unsafe_access(thread, pc);
+ address next_pc = pc + NativeCall::instruction_size;
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
}
else
@@ -408,7 +392,8 @@ JVM_handle_linux_signal(int sig,
} else if (thread->thread_state() == _thread_in_vm &&
sig == SIGBUS && /* info->si_code == BUS_OBJERR && */
thread->doing_unsafe_access()) {
- stub = handle_unsafe_access(thread, pc);
+ address next_pc = pc + NativeCall::instruction_size;
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
// jni_fast_GetField can trap at certain pc's if a GC kicks in
diff --git a/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp b/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
index 117bf1067f3..8cd04dce290 100644
--- a/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+++ b/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
@@ -315,7 +315,7 @@ JVM_handle_linux_signal(int sig,
((NativeInstruction*)pc)->is_safepoint_poll() &&
CodeCache::contains((void*) pc) &&
((cb = CodeCache::find_blob(pc)) != NULL) &&
- cb->is_nmethod()) {
+ cb->is_compiled()) {
if (TraceTraps) {
tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));
}
@@ -364,13 +364,11 @@ JVM_handle_linux_signal(int sig,
// BugId 4454115: A read from a MappedByteBuffer can fault here if the
// underlying file has been truncated. Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = (cb != NULL && cb->is_nmethod()) ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
if (nm != NULL && nm->has_unsafe_access()) {
- // We don't really need a stub here! Just set the pending exeption and
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
- os::Linux::ucontext_set_pc(uc, pc + 4);
+ address next_pc = pc + 4;
+ next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc);
+ os::Linux::ucontext_set_pc(uc, next_pc);
return true;
}
}
@@ -385,10 +383,8 @@ JVM_handle_linux_signal(int sig,
}
else if (thread->thread_state() == _thread_in_vm &&
sig == SIGBUS && thread->doing_unsafe_access()) {
- // We don't really need a stub here! Just set the pending exeption and
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
+ address next_pc = pc + 4;
+ next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc);
os::Linux::ucontext_set_pc(uc, pc + 4);
return true;
}
diff --git a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
index 44a5a7df1f9..4a0da12c498 100644
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
@@ -433,14 +433,14 @@ inline static bool checkPollingPage(address pc, address fault, address* stub) {
return false;
}
-inline static bool checkByteBuffer(address pc, address* stub) {
+inline static bool checkByteBuffer(address pc, address npc, address* stub) {
// BugId 4454115: A read from a MappedByteBuffer can fault
// here if the underlying file has been truncated.
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = cb->as_compiled_method_or_null();
if (nm != NULL && nm->has_unsafe_access()) {
- *stub = StubRoutines::handler_for_unsafe_access();
+ *stub = SharedRuntime::handle_unsafe_access(thread, npc);
return true;
}
return false;
@@ -613,7 +613,7 @@ JVM_handle_linux_signal(int sig,
if (sig == SIGBUS &&
thread->thread_state() == _thread_in_vm &&
thread->doing_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ stub = SharedRuntime::handle_unsafe_access(thread, npc);
}
if (thread->thread_state() == _thread_in_Java) {
@@ -625,7 +625,7 @@ JVM_handle_linux_signal(int sig,
break;
}
- if ((sig == SIGBUS) && checkByteBuffer(pc, &stub)) {
+ if ((sig == SIGBUS) && checkByteBuffer(pc, npc, &stub)) {
break;
}
diff --git a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
index 0eb7a9e511f..b73658ed036 100644
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
@@ -418,9 +418,10 @@ JVM_handle_linux_signal(int sig,
// here if the underlying file has been truncated.
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = (cb != NULL && cb->is_nmethod()) ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
if (nm != NULL && nm->has_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
}
else
@@ -469,7 +470,8 @@ JVM_handle_linux_signal(int sig,
} else if (thread->thread_state() == _thread_in_vm &&
sig == SIGBUS && /* info->si_code == BUS_OBJERR && */
thread->doing_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
// jni_fast_GetField can trap at certain pc's if a GC kicks in
diff --git a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
index 389f2b3a59d..39663ed0e74 100644
--- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
@@ -441,7 +441,7 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
if (thread->thread_state() == _thread_in_vm) {
if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ stub = SharedRuntime::handle_unsafe_access(thread, npc);
}
}
@@ -478,9 +478,9 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
// here if the underlying file has been truncated.
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
- nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = cb->as_compiled_method_or_null();
if (nm != NULL && nm->has_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ stub = SharedRuntime::handle_unsafe_access(thread, npc);
}
}
diff --git a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
index 0784f3f25f7..695fc127835 100644
--- a/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
@@ -503,7 +503,8 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
if (thread->thread_state() == _thread_in_vm) {
if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
}
@@ -518,9 +519,10 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
// Do not crash the VM in such a case.
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
if (cb != NULL) {
- nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL;
+ CompiledMethod* nm = cb->as_compiled_method_or_null();
if (nm != NULL && nm->has_unsafe_access()) {
- stub = StubRoutines::handler_for_unsafe_access();
+ address next_pc = Assembler::locate_next_instruction(pc);
+ stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
}
}
}
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java
index 713d7a1d80f..8b526cf6b64 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/FolderNode.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,11 +25,13 @@ package com.sun.hotspot.igv.coordinator;
import com.sun.hotspot.igv.coordinator.actions.RemoveCookie;
import com.sun.hotspot.igv.data.*;
+import com.sun.hotspot.igv.util.PropertiesSheet;
import java.awt.Image;
import java.util.List;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
+import org.openide.nodes.Sheet;
import org.openide.util.ImageUtilities;
import org.openide.util.lookup.AbstractLookup;
import org.openide.util.lookup.InstanceContent;
@@ -74,6 +76,16 @@ public class FolderNode extends AbstractNode {
}
}
+ @Override
+ protected Sheet createSheet() {
+ Sheet s = super.createSheet();
+ if (children.folder instanceof Properties.Entity) {
+ Properties.Entity p = (Properties.Entity) children.folder;
+ PropertiesSheet.initializeSheet(p.getProperties(), s);
+ }
+ return s;
+ }
+
@Override
public Image getIcon(int i) {
return ImageUtilities.loadImage("com/sun/hotspot/igv/coordinator/images/folder.png");
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/OutlineTopComponent.java b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/OutlineTopComponent.java
index 292dcd4b6fb..ad43e6f8949 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/OutlineTopComponent.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/OutlineTopComponent.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -124,6 +124,8 @@ public final class OutlineTopComponent extends TopComponent implements ExplorerM
public void clear() {
document.clear();
+ root = new FolderNode(document);
+ manager.setRootContext(root);
}
@Override
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/ImportAction.java b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/ImportAction.java
index 5bd6c199bf5..ee643b23cc0 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/ImportAction.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/ImportAction.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,31 +31,47 @@ import com.sun.hotspot.igv.data.serialization.GraphParser;
import com.sun.hotspot.igv.data.serialization.ParseMonitor;
import com.sun.hotspot.igv.data.serialization.Parser;
import com.sun.hotspot.igv.settings.Settings;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
+import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.StandardOpenOption;
-import javax.swing.Action;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.swing.JFileChooser;
-import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileFilter;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.util.Exceptions;
+import org.openide.util.RequestProcessor;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.awt.ActionReferences;
+import org.openide.awt.ActionRegistration;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
-import org.openide.util.RequestProcessor;
-import org.openide.util.actions.CallableSystemAction;
+import org.openide.util.actions.SystemAction;
/**
*
* @author Thomas Wuerthinger
*/
-public final class ImportAction extends CallableSystemAction {
+
+@ActionID(
+ category = "File",
+ id = "com.sun.hotspot.igv.coordinator.actions.ImportAction"
+)
+@ActionRegistration(
+ iconBase = "com/sun/hotspot/igv/coordinator/images/import.png",
+ displayName = "#CTL_ImportAction"
+)
+@ActionReferences({
+ @ActionReference(path = "Menu/File", position = 0),
+ @ActionReference(path = "Shortcuts", name = "C-O")
+})
+public final class ImportAction extends SystemAction {
private static final int WORKUNITS = 10000;
public static FileFilter getFileFilter() {
@@ -74,74 +90,77 @@ public final class ImportAction extends CallableSystemAction {
}
@Override
- public void performAction() {
-
+ public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.setFileFilter(ImportAction.getFileFilter());
fc.setCurrentDirectory(new File(Settings.get().get(Settings.DIRECTORY, Settings.DIRECTORY_DEFAULT)));
+ fc.setMultiSelectionEnabled(true);
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
- File file = fc.getSelectedFile();
-
- File dir = file;
- if (!dir.isDirectory()) {
- dir = dir.getParentFile();
- }
-
- Settings.get().put(Settings.DIRECTORY, dir.getAbsolutePath());
- try {
- final FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.READ);
- final ProgressHandle handle = ProgressHandleFactory.createHandle("Opening file " + file.getName());
- handle.start(WORKUNITS);
- final long start = channel.size();
- ParseMonitor monitor = new ParseMonitor() {
- @Override
- public void updateProgress() {
- try {
- int prog = (int) (WORKUNITS * (double) channel.position() / (double) start);
- handle.progress(prog);
- } catch (IOException ex) {
- }
- }
- @Override
- public void setState(String state) {
- updateProgress();
- handle.progress(state);
- }
- };
- final GraphParser parser;
- final OutlineTopComponent component = OutlineTopComponent.findInstance();
- if (file.getName().endsWith(".xml")) {
- parser = new Parser(channel, monitor, null);
- } else if (file.getName().endsWith(".bgv")) {
- parser = new BinaryParser(channel, monitor, component.getDocument(), null);
- } else {
- parser = null;
+ for (final File file : fc.getSelectedFiles()) {
+ File dir = file;
+ if (!dir.isDirectory()) {
+ dir = dir.getParentFile();
}
- RequestProcessor.getDefault().post(new Runnable() {
- @Override
- public void run() {
- try {
- final GraphDocument document = parser.parse();
- if (document != null) {
- SwingUtilities.invokeLater(new Runnable(){
- @Override
- public void run() {
- component.requestActive();
- component.getDocument().addGraphDocument(document);
- }
- });
+
+ Settings.get().put(Settings.DIRECTORY, dir.getAbsolutePath());
+ try {
+ final FileChannel channel = FileChannel.open(file.toPath(), StandardOpenOption.READ);
+ final ProgressHandle handle = ProgressHandleFactory.createHandle("Opening file " + file.getName());
+ handle.start(WORKUNITS);
+ final long startTime = System.currentTimeMillis();
+ final long start = channel.size();
+ ParseMonitor monitor = new ParseMonitor() {
+ @Override
+ public void updateProgress() {
+ try {
+ int prog = (int) (WORKUNITS * (double) channel.position() / (double) start);
+ handle.progress(prog);
+ } catch (IOException ex) {
+ }
}
- } catch (IOException ex) {
- Exceptions.printStackTrace(ex);
- }
- handle.finish();
+ @Override
+ public void setState(String state) {
+ updateProgress();
+ handle.progress(state);
+ }
+ };
+ final GraphParser parser;
+ final OutlineTopComponent component = OutlineTopComponent.findInstance();
+ if (file.getName().endsWith(".xml")) {
+ parser = new Parser(channel, monitor, null);
+ } else if (file.getName().endsWith(".bgv")) {
+ parser = new BinaryParser(channel, monitor, component.getDocument(), null);
+ } else {
+ parser = null;
}
- });
- } catch (FileNotFoundException ex) {
- Exceptions.printStackTrace(ex);
- } catch (IOException ex) {
- Exceptions.printStackTrace(ex);
+ RequestProcessor.getDefault().post(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ final GraphDocument document = parser.parse();
+ if (document != null) {
+ SwingUtilities.invokeLater(new Runnable(){
+ @Override
+ public void run() {
+ component.requestActive();
+ component.getDocument().addGraphDocument(document);
+ }
+ });
+ }
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ handle.finish();
+ long stop = System.currentTimeMillis();
+ Logger.getLogger(getClass().getName()).log(Level.INFO, "Loaded in " + file + " in " + ((stop - startTime) / 1000.0) + " seconds");
+ }
+ });
+ } catch (FileNotFoundException ex) {
+ Exceptions.printStackTrace(ex);
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
}
}
}
@@ -151,11 +170,6 @@ public final class ImportAction extends CallableSystemAction {
return NbBundle.getMessage(ImportAction.class, "CTL_ImportAction");
}
- public ImportAction() {
- putValue(Action.SHORT_DESCRIPTION, "Open XML graph document...");
- putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
- }
-
@Override
protected String iconResource() {
return "com/sun/hotspot/igv/coordinator/images/import.png";
@@ -165,9 +179,4 @@ public final class ImportAction extends CallableSystemAction {
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
-
- @Override
- protected boolean asynchronous() {
- return false;
- }
}
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/SaveAllAction.java b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/SaveAllAction.java
index eb75dd9753a..df1ed46a003 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/SaveAllAction.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/SaveAllAction.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,14 +29,30 @@ import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.Action;
import javax.swing.KeyStroke;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.awt.ActionReferences;
+import org.openide.awt.ActionRegistration;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
+import org.openide.util.NbBundle.Messages;
import org.openide.util.actions.CallableSystemAction;
/**
*
* @author Thomas Wuerthinger
*/
+@ActionID(
+ category = "File",
+ id = "com.sun.hotspot.igv.coordinator.actions.SaveAllAction"
+)
+@ActionRegistration(
+ displayName = "#CTL_SaveAllAction"
+)
+@ActionReferences({
+ @ActionReference(path = "Menu/File", position = 0),
+ @ActionReference(path = "Shortcuts", name = "C-S")
+})
public final class SaveAllAction extends CallableSystemAction {
@Override
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml
index 49fbe2fd330..ef808eed53c 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/layer.xml
@@ -18,6 +18,8 @@
+
+
@@ -43,11 +45,11 @@
-
+
-
+
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java
index 8c62573b2d4..85a0494658c 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,11 +51,13 @@ public class GraphDocument extends Properties.Entity implements ChangedEventProv
}
public void addGraphDocument(GraphDocument document) {
- for (FolderElement e : document.elements) {
- e.setParent(this);
- this.addElement(e);
+ if (document != this) {
+ for (FolderElement e : document.elements) {
+ e.setParent(this);
+ this.addElement(e);
+ }
+ document.clear();
}
- document.clear();
getChangedEvent().fire();
}
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java
index 2626e51e734..242623d7ada 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -90,7 +90,9 @@ public class InputBlock {
public void addNode(int id) {
InputNode node = graph.getNode(id);
assert node != null;
- assert !nodes.contains(node) : "duplicate : " + node;
+ // nodes.contains(node) is too expensive for large graphs so
+ // just make sure the Graph doesn't know it yet.
+ assert graph.getBlock(id) == null : "duplicate : " + node;
graph.setBlock(node, this);
nodes.add(node);
}
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java
index 2646231bfab..d0499c23524 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/Properties.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,9 @@
package com.sun.hotspot.igv.data;
import java.io.Serializable;
+import java.lang.ref.WeakReference;
import java.util.*;
+import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
@@ -36,7 +38,7 @@ import java.util.regex.PatternSyntaxException;
public class Properties implements Serializable, Iterable {
public static final long serialVersionUID = 1L;
- private String[] map = new String[4];
+ protected String[] map = new String[4];
public Properties() {
}
@@ -102,6 +104,59 @@ public class Properties implements Serializable, Iterable {
System.arraycopy(p.map, 0, map, 0, p.map.length);
}
+ protected Properties(String[] map) {
+ this.map = map;
+ }
+
+ static class SharedProperties extends Properties {
+ int hashCode;
+
+ SharedProperties(String[] map) {
+ super(map);
+ this.hashCode = Arrays.hashCode(map);
+ }
+
+ @Override
+ protected void setPropertyInternal(String name, String value) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof SharedProperties)) {
+ return super.equals(other);
+ }
+ SharedProperties props2 = (SharedProperties) other;
+ return Arrays.equals(map, props2.map);
+ }
+
+ @Override
+ public int hashCode() {
+ return hashCode;
+ }
+ }
+
+ private static class PropertyCache {
+ static WeakHashMap> immutableCache = new WeakHashMap<>();
+
+ static synchronized SharedProperties intern(Properties properties) {
+ String[] map = properties.map;
+ SharedProperties key = new SharedProperties(map);
+ WeakReference entry = immutableCache.get(key);
+ if (entry != null) {
+ SharedProperties props = entry.get();
+ if (props != null) {
+ return props;
+ }
+ }
+ immutableCache.put(key, new WeakReference<>(key));
+ return key;
+ }
+ }
+
public static class Entity implements Provider {
private Properties properties;
@@ -118,6 +173,10 @@ public class Properties implements Serializable, Iterable {
public Properties getProperties() {
return properties;
}
+
+ public void internProperties() {
+ properties = PropertyCache.intern(properties);
+ }
}
public interface PropertyMatcher {
@@ -322,8 +381,8 @@ public class Properties implements Serializable, Iterable {
public void setProperty(String name, String value) {
setPropertyInternal(name.intern(), value != null ? value.intern() : null);
}
- private void setPropertyInternal(String name, String value) {
+ protected void setPropertyInternal(String name, String value) {
for (int i = 0; i < map.length; i += 2) {
if (map[i] != null && map[i].equals(name)) {
String p = map[i + 1];
diff --git a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/BinaryParser.java b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/BinaryParser.java
index 5529701b979..52d5a7174f1 100644
--- a/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/BinaryParser.java
+++ b/hotspot/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/serialization/BinaryParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@ import java.io.EOFException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel;
+import java.nio.charset.Charset;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -68,6 +69,8 @@ public class BinaryParser implements GraphParser {
private static final String NO_BLOCK = "noBlock";
+ private static final Charset utf8 = Charset.forName("UTF-8");
+
private final GroupCallback callback;
private final List