Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new configure option --with-mixedrefs for mixed pointer mode #359

Merged
merged 1 commit into from
Nov 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions closed/OpenJ9.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ ifeq (true,$(OPENJ9_ENABLE_CMAKE))
-DJ9VM_OMR_DIR="$(OPENJ9OMR_TOPDIR)" \
-DJAVA_SPEC_VERSION=$(VERSION_FEATURE) \
-DOMR_DDR=$(OPENJ9_ENABLE_DDR) \
-DOMR_MIXED_REFERENCES_MODE=$(OMR_MIXED_REFERENCES_MODE) \
-DOPENJ9_BUILD=true \
-DOPENJ9_SHA=$(OPENJ9_SHA) \
-DOPENJDK_VERSION_NUMBER_FOUR_POSITIONS=$(VERSION_NUMBER_FOUR_POSITIONS) \
Expand Down
74 changes: 48 additions & 26 deletions closed/autoconf/custom-hook.m4
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ AC_DEFUN([OPENJ9_CONFIGURE_CMAKE],
[
AC_ARG_WITH(cmake, [AS_HELP_STRING([--with-cmake], [enable building openJ9 with CMake])],
[
if test "x$with_cmake" == xyes -o "x$with_cmake" == x ; then
if test "x$with_cmake" = xyes -o "x$with_cmake" = x ; then
with_cmake=cmake
fi
],
Expand All @@ -75,6 +75,11 @@ AC_DEFUN([OPENJ9_CONFIGURE_CMAKE],
# at this point with_cmake should either be no, or the name of the cmake command
if test "x$with_cmake" = xno ; then
OPENJ9_ENABLE_CMAKE=false

# Currently, mixedrefs mode is only available with CMake enabled
if test "x$OMR_MIXED_REFERENCES_MODE" != xoff ; then
AC_MSG_ERROR([[--with-mixedrefs=[static|dynamic] requires --with-cmake]])
fi
else
OPENJ9_ENABLE_CMAKE=true
if AS_EXECUTABLE_P(["$with_cmake"]) ; then
Expand Down Expand Up @@ -342,70 +347,87 @@ AC_DEFUN([OPENJ9_PLATFORM_SETUP],
AC_ARG_WITH(noncompressedrefs, [AS_HELP_STRING([--with-noncompressedrefs],
[build non-compressedrefs vm (large heap)])])

AC_ARG_WITH(mixedrefs, [AS_HELP_STRING([--with-mixedrefs],
[build mixedrefs vm (--with-mixedrefs=static or --with-mixedrefs=dynamic)])])

# When compiling natively host_cpu and build_cpu are the same. But when
# cross compiling we need to work with the host_cpu (which is where the final
# JVM will run).
OPENJ9_PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)

if test "x$with_noncompressedrefs" = x ; then
OPENJ9_BUILDSPEC="${OPENJDK_BUILD_OS}_${OPENJ9_CPU}_cmprssptrs"
OPENJ9_LIBS_SUBDIR=compressedrefs
else
OPENJ9_BUILDSPEC="${OPENJDK_BUILD_OS}_${OPENJ9_CPU}"
# Default OPENJ9_BUILD_OS=OPENJDK_BUILD_OS, but override with OpenJ9 equivalent as appropriate
OPENJ9_BUILD_OS="${OPENJDK_BUILD_OS}"

OMR_MIXED_REFERENCES_MODE=off
if test "x$with_mixedrefs" != x -a "x$with_mixedrefs" != xno; then
if test "x$with_mixedrefs" = xyes -o "x$with_mixedrefs" = xstatic; then
OMR_MIXED_REFERENCES_MODE=static
elif test "x$with_mixedrefs" = xdynamic; then
OMR_MIXED_REFERENCES_MODE=dynamic
else
AC_MSG_ERROR([OpenJ9 supports --with-mixedrefs=static and --with-mixedrefs=dynamic])
fi
OPENJ9_BUILD_MODE_ARCH="${OPENJ9_CPU}_mxdptrs"
OPENJ9_LIBS_SUBDIR=default
elif test "x$with_noncompressedrefs" = xyes ; then
OPENJ9_BUILD_MODE_ARCH="${OPENJ9_CPU}"
OPENJ9_LIBS_SUBDIR=default
else
OPENJ9_BUILD_MODE_ARCH="${OPENJ9_CPU}_cmprssptrs"
OPENJ9_LIBS_SUBDIR=compressedrefs
fi

if test "x$OPENJ9_CPU" = xx86-64 ; then
if test "x$OPENJDK_BUILD_OS" = xlinux ; then
if test "x$OPENJ9_BUILD_OS" = xlinux ; then
OPENJ9_PLATFORM_CODE=xa64
elif test "x$OPENJDK_BUILD_OS" = xwindows ; then
elif test "x$OPENJ9_BUILD_OS" = xwindows ; then
OPENJ9_PLATFORM_CODE=wa64
if test "x$OPENJ9_LIBS_SUBDIR" = xdefault ; then
OPENJ9_BUILDSPEC=win_x86-64
else
OPENJ9_BUILDSPEC=win_x86-64_cmprssptrs
fi
elif test "x$OPENJDK_BUILD_OS" = xmacosx ; then
OPENJ9_BUILD_OS=win
elif test "x$OPENJ9_BUILD_OS" = xmacosx ; then
OPENJ9_PLATFORM_CODE=oa64
if test "x$OPENJ9_LIBS_SUBDIR" = xdefault ; then
OPENJ9_BUILDSPEC=osx_x86-64
else
OPENJ9_BUILDSPEC=osx_x86-64_cmprssptrs
fi
OPENJ9_BUILD_OS=osx
else
AC_MSG_ERROR([Unsupported OpenJ9 platform ${OPENJDK_BUILD_OS}!])
AC_MSG_ERROR([Unsupported OpenJ9 platform ${OPENJ9_BUILD_OS}!])
fi
elif test "x$OPENJ9_CPU" = xppc-64_le ; then
OPENJ9_PLATFORM_CODE=xl64
if test "x$OPENJ9_LIBS_SUBDIR" != xdefault ; then
OPENJ9_BUILDSPEC="${OPENJDK_BUILD_OS}_ppc-64_cmprssptrs_le"
if test "x$OMR_MIXED_REFERENCES_MODE" = xoff ; then
if test "x$OPENJ9_LIBS_SUBDIR" != xdefault ; then
OPENJ9_BUILD_MODE_ARCH="ppc-64_cmprssptrs_le"
fi
else
OPENJ9_BUILD_MODE_ARCH="ppc-64_mxdptrs_le"
fi
elif test "x$OPENJ9_CPU" = x390-64 ; then
OPENJ9_PLATFORM_CODE=xz64
elif test "x$OPENJ9_CPU" = xppc-64 ; then
OPENJ9_PLATFORM_CODE=ap64
elif test "x$OPENJ9_CPU" = xarm ; then
OPENJ9_PLATFORM_CODE=xr32
OPENJ9_BUILDSPEC=linux_arm_linaro
OPENJ9_BUILD_OS=linux
OPENJ9_BUILD_MODE_ARCH=arm_linaro
OPENJ9_LIBS_SUBDIR=default
elif test "x$OPENJ9_CPU" = xaarch64 ; then
OPENJ9_PLATFORM_CODE=xr64
if test "x$COMPILE_TYPE" = xcross ; then
OPENJ9_BUILDSPEC="${OPENJ9_BUILDSPEC}_cross"
OPENJ9_BUILD_MODE_ARCH="${OPENJ9_BUILD_MODE_ARCH}_cross"
fi
elif test "x$OPENJ9_CPU" = xriscv64 ; then
OPENJ9_PLATFORM_CODE=rv64
if test "x$COMPILE_TYPE" = xcross ; then
OPENJ9_BUILDSPEC="${OPENJ9_BUILDSPEC}_cross"
OPENJ9_BUILD_MODE_ARCH="${OPENJ9_BUILD_MODE_ARCH}_cross"
fi
else
AC_MSG_ERROR([Unsupported OpenJ9 cpu ${OPENJ9_CPU}!])
fi

OPENJ9_BUILDSPEC="${OPENJ9_BUILD_OS}_${OPENJ9_BUILD_MODE_ARCH}"

AC_SUBST(OPENJ9_BUILDSPEC)
AC_SUBST(OPENJ9_PLATFORM_CODE)
AC_SUBST(COMPILER_VERSION_STRING)
AC_SUBST(OPENJ9_LIBS_SUBDIR)
AC_SUBST(OMR_MIXED_REFERENCES_MODE)
])

AC_DEFUN([OPENJ9_CHECK_NASM_VERSION],
Expand Down Expand Up @@ -452,7 +474,7 @@ AC_DEFUN([OPENJ9_THIRD_PARTY_REQUIREMENTS],
FREEMARKER_JAR=
if test "x$OPENJ9_ENABLE_CMAKE" != xtrue ; then
AC_MSG_CHECKING([that freemarker location is set])
if test "x$with_freemarker_jar" == x -o "x$with_freemarker_jar" == xno ; then
if test "x$with_freemarker_jar" = x -o "x$with_freemarker_jar" = xno ; then
AC_MSG_RESULT([no])
printf "\n"
printf "The FreeMarker library is required to build the OpenJ9 build tools\n"
Expand Down
3 changes: 3 additions & 0 deletions closed/autoconf/custom-spec.gmk.in
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ OPENJ9_PLATFORM_CODE := @OPENJ9_PLATFORM_CODE@

OPENJ9_LIBS_SUBDIR := @OPENJ9_LIBS_SUBDIR@

# Mixed References Mode
OMR_MIXED_REFERENCES_MODE := @OMR_MIXED_REFERENCES_MODE@

# Export autoconf cache variables for CC/CXX.
# This is for the case where ccache is enabled.
# It ensures that OMR autoconf uses the compiler, not ccache.
Expand Down
2 changes: 2 additions & 0 deletions closed/custom/copy/Copy-java.base.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ $(call openj9_copy_shlibs, \
$(if $(filter zos,$(OPENJDK_TARGET_OS)),j9a2e) \
j9dmp29 \
j9gc29 \
$(if $(filter static,$(OMR_MIXED_REFERENCES_MODE)),j9gc_full29) \
j9gcchk29 \
$(if $(filter static,$(OMR_MIXED_REFERENCES_MODE)),j9gcchk_full29) \
j9hookable29 \
$(if $(filter zos,$(OPENJDK_TARGET_OS)),j9ifa29) \
$(if $(filter $(NO_JIT_CPUS),$(OPENJDK_TARGET_CPU)),,j9jit29) \
Expand Down