8152666: The new Hotspot Build System
Co-authored-by: Magnus Ihse Bursie <magnus.ihse.bursie@oracle.com>
Co-authored-by: Ingemar Aberg <ingemar.aberg@oracle.com>
Reviewed-by: ihse, dcubed, erikj
diff --git a/hotspot/make/Makefile b/hotspot/make/Makefile
index 4312c79..db2b96e 100644
--- a/hotspot/make/Makefile
+++ b/hotspot/make/Makefile
@@ -237,19 +237,21 @@
$(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)
+#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
+# 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)
diff --git a/hotspot/make/aix/makefiles/trace.make b/hotspot/make/aix/makefiles/trace.make
index f4f9e7f..f17e75e 100644
--- a/hotspot/make/aix/makefiles/trace.make
+++ b/hotspot/make/aix/makefiles/trace.make
@@ -53,13 +53,13 @@
TraceGeneratedNames = \
traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
+ traceEventIds.hpp \
+ traceTypes.hpp
ifeq ($(HAS_ALT_SRC), true)
- TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
+TraceGeneratedNames += \
+ traceRequestables.hpp \
+ traceEventControl.hpp
endif
TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
diff --git a/hotspot/make/bsd/makefiles/trace.make b/hotspot/make/bsd/makefiles/trace.make
index af46df5..37df442 100644
--- a/hotspot/make/bsd/makefiles/trace.make
+++ b/hotspot/make/bsd/makefiles/trace.make
@@ -53,13 +53,13 @@
TraceGeneratedNames = \
traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
+ traceEventIds.hpp \
+ traceTypes.hpp
ifeq ($(HAS_ALT_SRC), true)
- TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
+TraceGeneratedNames += \
+ traceRequestables.hpp \
+ traceEventControl.hpp
endif
TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
diff --git a/hotspot/make/linux/makefiles/gcc.make b/hotspot/make/linux/makefiles/gcc.make
index a2e5c6c..75dcaeb 100644
--- a/hotspot/make/linux/makefiles/gcc.make
+++ b/hotspot/make/linux/makefiles/gcc.make
@@ -221,7 +221,7 @@
ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
# GCC < 4.3
WARNING_FLAGS += -Wconversion
- endif
+ 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
@@ -260,7 +260,7 @@
OPT_CFLAGS = $(OPT_CFLAGS/$(OPT_CFLAGS_DEFAULT)) $(OPT_EXTRAS)
-# Variable tracking size limit exceeded for VMStructs::init()
+# 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.
diff --git a/hotspot/make/linux/makefiles/trace.make b/hotspot/make/linux/makefiles/trace.make
index 09cb921..2209716 100644
--- a/hotspot/make/linux/makefiles/trace.make
+++ b/hotspot/make/linux/makefiles/trace.make
@@ -53,13 +53,13 @@
TraceGeneratedNames = \
traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
+ traceEventIds.hpp \
+ traceTypes.hpp
ifeq ($(HAS_ALT_SRC), true)
- TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
+TraceGeneratedNames += \
+ traceRequestables.hpp \
+ traceEventControl.hpp
endif
TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
diff --git a/hotspot/make/linux/makefiles/zero.make b/hotspot/make/linux/makefiles/zero.make
index 0270711..622710f 100644
--- a/hotspot/make/linux/makefiles/zero.make
+++ b/hotspot/make/linux/makefiles/zero.make
@@ -30,3 +30,8 @@
# 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/solaris/makefiles/dtrace.make b/hotspot/make/solaris/makefiles/dtrace.make
index 376732d..2c65059 100644
--- a/hotspot/make/solaris/makefiles/dtrace.make
+++ b/hotspot/make/solaris/makefiles/dtrace.make
@@ -270,7 +270,7 @@
@echo $(LOG_INFO) Compiling $(DTRACE).d
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \
- $(DTraced_Files) ||\
+ $(sort $(DTraced_Files)) ||\
STATUS=$$?;\
if [ x"$$STATUS" = x"1" ]; then \
if [ x`uname -r` = x"5.10" -a \
diff --git a/hotspot/make/solaris/makefiles/trace.make b/hotspot/make/solaris/makefiles/trace.make
index ed70462..effe340 100644
--- a/hotspot/make/solaris/makefiles/trace.make
+++ b/hotspot/make/solaris/makefiles/trace.make
@@ -53,13 +53,13 @@
TraceGeneratedNames = \
traceEventClasses.hpp \
- traceEventIds.hpp \
- traceTypes.hpp
+ traceEventIds.hpp \
+ traceTypes.hpp
ifeq ($(HAS_ALT_SRC), true)
- TraceGeneratedNames += \
- traceRequestables.hpp \
- traceEventControl.hpp
+TraceGeneratedNames += \
+ traceRequestables.hpp \
+ traceEventControl.hpp
endif
TraceGeneratedFiles = $(TraceGeneratedNames:%=$(TraceOutDir)/%)
diff --git a/hotspot/make/windows/makefiles/debug.make b/hotspot/make/windows/makefiles/debug.make
index f2ecd26..3ad4562 100644
--- a/hotspot/make/windows/makefiles/debug.make
+++ b/hotspot/make/windows/makefiles/debug.make
@@ -48,10 +48,10 @@
# 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)
-<<
+ $(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
diff --git a/hotspot/make/windows/makefiles/fastdebug.make b/hotspot/make/windows/makefiles/fastdebug.make
index cbcfd5a..ea6fc41 100644
--- a/hotspot/make/windows/makefiles/fastdebug.make
+++ b/hotspot/make/windows/makefiles/fastdebug.make
@@ -47,10 +47,10 @@
# 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)
-<<
+ $(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
diff --git a/hotspot/make/windows/makefiles/product.make b/hotspot/make/windows/makefiles/product.make
index cd3a4e7..09e750a 100644
--- a/hotspot/make/windows/makefiles/product.make
+++ b/hotspot/make/windows/makefiles/product.make
@@ -51,10 +51,11 @@
# 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)
-<<
+ $(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
diff --git a/hotspot/make/windows/makefiles/trace.make b/hotspot/make/windows/makefiles/trace.make
index eecc890..d523913 100644
--- a/hotspot/make/windows/makefiles/trace.make
+++ b/hotspot/make/windows/makefiles/trace.make
@@ -41,6 +41,12 @@
!endif
!endif
+!ifndef OPENJDK
+!if EXISTS($(TraceAltSrcDir))
+HAS_ALT_SRC = true
+!endif
+!endif
+
TraceGeneratedNames = \
traceEventClasses.hpp \
traceEventIds.hpp \
diff --git a/hotspot/make/windows/makefiles/vm.make b/hotspot/make/windows/makefiles/vm.make
index fd42111..a1391a0 100644
--- a/hotspot/make/windows/makefiles/vm.make
+++ b/hotspot/make/windows/makefiles/vm.make
@@ -305,8 +305,10 @@
# 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"$@" $<
+ $(RC) $(RC_FLAGS) /fo"$@" $<
{$(COMMONSRC)\cpu\$(Platform_arch)\vm}.cpp.obj::
$(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
diff --git a/hotspot/makefiles/BuildHotspot.gmk b/hotspot/makefiles/BuildHotspot.gmk
new file mode 100644
index 0000000..4ae7b84
--- /dev/null
+++ b/hotspot/makefiles/BuildHotspot.gmk
@@ -0,0 +1,54 @@
+#
+# 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+VARIANT_TARGETS := $(foreach v, $(JVM_VARIANTS), variant-$v)
+VARIANT_GENSRC_TARGETS := $(addsuffix -gensrc, $(VARIANT_TARGETS))
+VARIANT_LIBS_TARGETS := $(addsuffix -libs, $(VARIANT_TARGETS))
+
+$(VARIANT_GENSRC_TARGETS): variant-%-gensrc:
+ $(call LogWarn, Building JVM variant '$*' with features '$(JVM_FEATURES_$*)')
+ +$(MAKE) -f gensrc/GenerateSources.gmk JVM_VARIANT=$*
+
+$(VARIANT_LIBS_TARGETS): variant-%-libs: variant-%-gensrc
+ +$(MAKE) -f lib/CompileLibraries.gmk JVM_VARIANT=$*
+
+$(VARIANT_TARGETS): variant-%: variant-%-gensrc variant-%-libs
+
+jsig:
+ +$(MAKE) -f lib/CompileLibjsig.gmk
+
+dist: $(VARIANT_TARGETS) jsig
+ +$(MAKE) -f Dist.gmk
+
+all: dist
+
+.PHONY: $(VARIANT_TARGETS) $(VARIANT_GENSRC_TARGETS) $(VARIANT_LIBS_TARGETS) \
+ jsig dist all
diff --git a/hotspot/makefiles/Dist.gmk b/hotspot/makefiles/Dist.gmk
new file mode 100644
index 0000000..bfe3daf
--- /dev/null
+++ b/hotspot/makefiles/Dist.gmk
@@ -0,0 +1,239 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+################################################################################
+# Copy the generated output into well-defined places in the dist directory.
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+$(eval $(call IncludeCustomExtension, hotspot, Dist.gmk))
+
+DIST_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/dist
+
+# Unfortunately, all platforms have different target subdirs.
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ LIB_SUBDIR := bin
+else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ LIB_SUBDIR := lib
+else
+ LIB_SUBDIR := lib$(OPENJDK_TARGET_CPU_LIBDIR)
+endif
+
+################################################################################
+# Functions to setup copying of files for variants
+
+# Support macro for SetupDistLibFile
+define macosx_universalize
+ $(MKDIR) -p $(@D)
+ $(LIPO) -create -output $@ $<
+endef
+
+################################################################################
+# Setup make rules to copy a native library and associated data.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# NAME -- The base name of the native library (e.g. 'jvm')
+# VARIANT -- The variant to copy from
+# VARIANT_TARGET_DIR -- The variant target sub dir, with trailing slash, optional
+SetupDistLibFile = $(NamedParamsMacroTemplate)
+define SetupDistLibFileBody
+ ifneq ($$($1_VARIANT), )
+ $1_SRC_DIR := $$(HOTSPOT_OUTPUTDIR)/variant-$$($1_VARIANT)/lib$$($1_NAME)
+ else
+ $1_SRC_DIR := $$(HOTSPOT_OUTPUTDIR)/lib$$($1_NAME)
+ endif
+ $1_LIB_NAME := $(LIBRARY_PREFIX)$$($1_NAME)
+ $1_TARGET_DIR := $$(DIST_OUTPUTDIR)/$$(LIB_SUBDIR)/$$($1_VARIANT_TARGET_DIR)
+
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # We must use the 'universalize' macro to run lipo on shared libraries, at
+ # least until JDK-8069540 is fixed.
+ $1_MACRO := macosx_universalize
+ endif
+
+ # Copy the the native library.
+ $$(eval $$(call SetupCopyFiles, $1_COPY_LIB, \
+ DEST := $$($1_TARGET_DIR), \
+ MACRO := $$($1_MACRO), \
+ FILES := $$(wildcard \
+ $$($1_SRC_DIR)/$$($1_LIB_NAME)$(SHARED_LIBRARY_SUFFIX)), \
+ ))
+
+ TARGETS += $$($1_COPY_LIB)
+
+ # Copy related data (debug symbols, static-build symbols file etc)
+ $$(eval $$(call SetupCopyFiles, $1_COPY_FILES, \
+ DEST := $$($1_TARGET_DIR), \
+ FILES := $$(wildcard \
+ $$(addprefix $$($1_SRC_DIR)/$$($1_LIB_NAME), \
+ .diz .debuginfo .pdb .map .symbols)), \
+ ))
+
+ TARGETS += $$($1_COPY_FILES)
+
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # Debug symbols on macosx is a directory, not a single file, per library.
+ $1_DSYM_SRC := $$($1_SRC_DIR)/$$($1_LIB_NAME)$(SHARED_LIBRARY_SUFFIX).dSYM)
+ ifneq ($$(wildcard $$($1_DSYM_SRC)), )
+ $$(eval $$(call SetupCopyFiles, $1_COPY_DSYM_DIR, \
+ DEST := $$($1_TARGET_DIR), \
+ SRC := $$($1_SRC_DIR), \
+ FILES := $$(shell $(FIND) $$($1_DSYM_SRC) -type f), \
+ ))
+ TARGETS += $$($1_COPY_DSYM_DIR)
+ endif
+ endif
+endef
+
+################################################################################
+# Copy common files, which are independent on the jvm variant(s) being built.
+# For files that were generated during the build, we assume all versions of
+# these files are identical, and just pick one arbitrarily to use as source.
+
+ANY_JVM_VARIANT := $(firstword $(JVM_VARIANTS))
+JVM_VARIANT_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/variant-$(ANY_JVM_VARIANT)
+
+### Copy platform-independent .h files
+INCLUDE_FILES_SRC_DIR := $(HOTSPOT_TOPDIR)/src/share/vm
+$(eval $(call SetupCopyFiles, COPY_INCLUDE, \
+ SRC := $(INCLUDE_FILES_SRC_DIR), \
+ DEST := $(DIST_OUTPUTDIR)/include, \
+ FLATTEN := true, \
+ FILES := $(INCLUDE_FILES_SRC_DIR)/prims/jni.h \
+ $(INCLUDE_FILES_SRC_DIR)/code/jvmticmlr.h \
+ $(INCLUDE_FILES_SRC_DIR)/services/jmm.h))
+
+TARGETS += $(COPY_INCLUDE)
+
+### Copy jni_md.h
+
+# This might have been defined in a custom extension
+ifeq ($(JNI_MD_H_SRC), )
+ JNI_MD_H_SRC := $(HOTSPOT_TOPDIR)/src/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/jni_$(HOTSPOT_TARGET_CPU_ARCH).h
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # NOTE: This should most likely be darwin, but the old hotspot build uses bsd
+ JNI_MD_SUBDIR := bsd
+else ifeq ($(OPENJDK_TARGET_OS), windows)
+ JNI_MD_SUBDIR := win32
+else
+ JNI_MD_SUBDIR := $(OPENJDK_TARGET_OS)
+endif
+
+# SetupCopyFiles is not used here since it's non-trivial to copy a single
+# file with a different target name.
+$(DIST_OUTPUTDIR)/include/$(JNI_MD_SUBDIR)/jni_md.h: $(JNI_MD_H_SRC)
+ $(call LogInfo, Copying hotspot/dist/include/$(JNI_MD_SUBDIR)/jni_md.h)
+ $(install-file)
+
+TARGETS += $(DIST_OUTPUTDIR)/include/$(JNI_MD_SUBDIR)/jni_md.h
+
+$(eval $(call SetupCopyFiles, COPY_JVMTI_H, \
+ DEST := $(DIST_OUTPUTDIR)/include, \
+ FLATTEN := true, \
+ FILES := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles/jvmti.h))
+
+TARGETS += $(COPY_JVMTI_H)
+
+# NOTE: In the old build, this file was not copied on Windows.
+ifneq ($(OPENJDK_TARGET_OS), windows)
+ $(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \
+ DEST := $(DIST_OUTPUTDIR)/docs/platform/jvmti, \
+ FILES := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles/jvmti.html))
+endif
+
+TARGETS += $(COPY_JVMTI_HTML)
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(eval $(call SetupCopyFiles, COPY_JVM_LIB, \
+ DEST := $(DIST_OUTPUTDIR)/lib, \
+ FILES :=$(JVM_VARIANT_OUTPUTDIR)/libjvm/objs/jvm.lib))
+
+ TARGETS += $(COPY_JVM_LIB)
+endif
+
+# Copy libjsig, if it exists
+$(eval $(call SetupDistLibFile, DIST_jsig, \
+ NAME := jsig, \
+))
+
+################################################################################
+# Copy variant-specific files
+
+# Setup make rules to copy a single variant to dist.
+# $1: The name of the variant
+define SetupDistForVariant
+ ifneq ($$(filter client minimal, $1), )
+ VARIANT_TARGET_DIR := $1
+ else
+ # Use 'server' as default target directory name for all other variants.
+ VARIANT_TARGET_DIR := server
+ endif
+
+ $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm, \
+ NAME := jvm, \
+ VARIANT := $1, \
+ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \
+ ))
+
+ # Copy the dtrace libraries, if they exist
+ $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm_db, \
+ NAME := jvm_db, \
+ VARIANT := $1, \
+ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \
+ ))
+
+ $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm_dtrace, \
+ NAME := jvm_dtrace, \
+ VARIANT := $1, \
+ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \
+ ))
+
+ # Copy the Xusage.txt file
+ $$(eval $$(call SetupCopyFiles, DIST_$(strip $1)_Xusage, \
+ DEST := $$(DIST_OUTPUTDIR)/$$(LIB_SUBDIR)/$(strip $1), \
+ FILES := $$(HOTSPOT_OUTPUTDIR)/variant-$(strip $1)/support/misc/Xusage.txt, \
+ ))
+
+ TARGETS += $$(DIST_$(strip $1)_Xusage)
+endef
+
+$(foreach variant, $(JVM_VARIANTS), \
+ $(eval $(call SetupDistForVariant, $(variant))) \
+)
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/hotspot/makefiles/HotspotCommon.gmk b/hotspot/makefiles/HotspotCommon.gmk
new file mode 100644
index 0000000..1df3f4f
--- /dev/null
+++ b/hotspot/makefiles/HotspotCommon.gmk
@@ -0,0 +1,45 @@
+#
+# 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.
+#
+
+ifeq ($(JVM_VARIANT), )
+ $(error This makefile must be called with JVM_VARIANT set)
+endif
+
+JVM_VARIANT_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/variant-$(JVM_VARIANT)
+JVM_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm
+JVM_SUPPORT_DIR := $(JVM_VARIANT_OUTPUTDIR)/support
+
+DTRACE_SUPPORT_DIR := $(JVM_SUPPORT_DIR)/dtrace
+
+################################################################################
+
+# Test if a feature is available in the present build of JVM_VARIANT. Will return
+# 'true' or 'false'.
+# $1 - the feature to test for
+check-jvm-feature = \
+ $(strip \
+ $(if $(filter-out $(VALID_JVM_FEATURES), $1), \
+ $(error Internal error: Invalid feature tested: $1)) \
+ $(if $(filter $1, $(JVM_FEATURES_$(JVM_VARIANT))), true, false))
diff --git a/hotspot/makefiles/gensrc/GenerateSources.gmk b/hotspot/makefiles/gensrc/GenerateSources.gmk
new file mode 100644
index 0000000..b91f2d0
--- /dev/null
+++ b/hotspot/makefiles/gensrc/GenerateSources.gmk
@@ -0,0 +1,75 @@
+#
+# Copyright (c) 2013, 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
+include JavaCompilation.gmk
+include NativeCompilation.gmk
+include TextFileProcessing.gmk
+
+include HotspotCommon.gmk
+
+# The real work is done in these files
+
+include gensrc/GensrcAdlc.gmk
+include gensrc/GensrcDtrace.gmk
+include gensrc/GensrcJvmti.gmk
+
+$(eval $(call IncludeCustomExtension, hotspot, gensrc/GenerateSources.gmk))
+
+# While technically the rules below are "gendata" which can be done in parallel
+# with native compilation, let's keep it here for simplicity.
+
+# The Xusage.txt file needs to have platform specific path separator
+$(eval $(call SetupTextFileProcessing, CREATE_XUSAGE, \
+ SOURCE_FILES := $(HOTSPOT_TOPDIR)/src/share/vm/Xusage.txt, \
+ OUTPUT_FILE := $(JVM_SUPPORT_DIR)/misc/Xusage.txt, \
+ REPLACEMENTS := separated by ;> => separated by $(PATH_SEP)> ; , \
+))
+
+TARGETS += $(CREATE_XUSAGE)
+
+# Setup the hotspot launcher script for developer use
+$(eval $(call SetupTextFileProcessing, CREATE_HOTSPOT_LAUNCHER, \
+ SOURCE_FILES := $(HOTSPOT_TOPDIR)/make/hotspot.script, \
+ OUTPUT_FILE := $(JVM_OUTPUTDIR)/hotspot, \
+ REPLACEMENTS := \
+ @@LIBARCH@@ => $(OPENJDK_TARGET_CPU_LEGACY_LIB) ; \
+ @@JDK_IMPORT_PATH@@ => $(JDK_OUTPUTDIR) ; , \
+))
+
+CHMOD_HOTSPOT_LAUNCHER := $(JVM_VARIANT_OUTPUTDIR)/libjvm/_hotspot-script-chmod.marker
+
+$(CHMOD_HOTSPOT_LAUNCHER): $(CREATE_HOTSPOT_LAUNCHER)
+ $(CHMOD) +x $<
+ $(TOUCH) $@
+
+TARGETS += $(CREATE_HOTSPOT_LAUNCHER) $(CHMOD_HOTSPOT_LAUNCHER)
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/hotspot/makefiles/gensrc/GensrcAdlc.gmk b/hotspot/makefiles/gensrc/GensrcAdlc.gmk
new file mode 100644
index 0000000..eb58ac7
--- /dev/null
+++ b/hotspot/makefiles/gensrc/GensrcAdlc.gmk
@@ -0,0 +1,192 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+$(eval $(call IncludeCustomExtension, hotspot, gensrc/GensrcAdlc.gmk))
+
+ifeq ($(call check-jvm-feature, compiler2), true)
+
+ ADLC_SUPPORT_DIR := $(JVM_SUPPORT_DIR)/adlc
+
+ ##############################################################################
+ # Build the ad compiler (the adlc build tool)
+
+ # Flags depending on the build platform/tool chain
+ # NOTE: No optimization or debug flags set here
+ ifeq ($(OPENJDK_BUILD_OS), linux)
+ ADLC_CFLAGS := -fno-exceptions -DLINUX
+ else ifeq ($(OPENJDK_BUILD_OS), solaris)
+ ADLC_LDFLAGS := -m64
+ ADLC_CFLAGS := -m64
+ ADLC_CFLAGS_WARNINGS := +w
+ else ifeq ($(OPENJDK_BUILD_OS), aix)
+ # FIXME: Not implemented. These flags are likely, however
+ # ADLC_LDFLAGS := -q64
+ # ADLC_CFLAGS := -qnortti -qnoeh -q64
+ else ifeq ($(OPENJDK_BUILD_OS), windows)
+ ADLC_LDFLAGS := -nologo
+ ADLC_CFLAGS := -nologo -EHsc
+ # NOTE: The old build also have -D_CRT_SECURE_NO_DEPRECATE but it doesn't
+ # seem needed any more.
+ ADLC_CFLAGS_WARNINGS := -W3 -D_CRT_SECURE_NO_WARNINGS
+ endif
+
+ # NOTE: The old build didn't set -DASSERT for windows but it doesn't seem to
+ # hurt.
+ ADLC_CFLAGS += -DASSERT
+
+ ADLC_CFLAGS += -D$(HOTSPOT_TARGET_CPU_DEFINE)
+
+ ADLC_CFLAGS += -I$(HOTSPOT_TOPDIR)/src/share/vm
+
+ $(eval $(call SetupNativeCompilation, BUILD_ADLC, \
+ TOOLCHAIN := TOOLCHAIN_BUILD_LINK_CXX, \
+ SRC := $(HOTSPOT_TOPDIR)/src/share/vm/adlc, \
+ EXTRA_FILES := $(HOTSPOT_TOPDIR)/src/share/vm/opto/opcodes.cpp, \
+ CFLAGS := $(ADLC_CFLAGS) $(ADLC_CFLAGS_WARNINGS), \
+ LDFLAGS := $(ADLC_LDFLAGS), \
+ LIBS := $(ADLC_LIBS), \
+ OBJECT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/adlc/objs, \
+ OUTPUT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/adlc, \
+ PROGRAM := adlc, \
+ DEBUG_SYMBOLS := false, \
+ DISABLED_WARNINGS_clang := parentheses tautological-compare, \
+ DISABLED_WARNINGS_solstudio := notemsource, \
+ ))
+
+ ADLC_TOOL := $(BUILD_ADLC_TARGET)
+
+ ##############################################################################
+ # Transform the ad source files into C++ source files using adlc
+
+ # Setup flags for the adlc build tool (ADLCFLAGS).
+ ADLCFLAGS += -q -T
+
+ # ADLC flags depending on target OS
+ ifeq ($(OPENJDK_TARGET_OS), linux)
+ ADLCFLAGS += -DLINUX=1 -D_GNU_SOURCE=1
+ else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ ADLCFLAGS += -DSOLARIS=1 -DSPARC_WORKS=1
+ else ifeq ($(OPENJDK_TARGET_OS), aix)
+ # FIXME: Not implemented
+ else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ ADLCFLAGS += -D_ALLBSD_SOURCE=1 -D_GNU_SOURCE=1
+ endif
+
+ ifneq ($(OPENJDK_TARGET_OS), windows)
+ # NOTE: Windows adlc flags was different in the old build. Is this really
+ # correct?
+
+ # -g makes #line directives in the generated C++ files.
+ ADLCFLAGS += -g
+
+ ADLCFLAGS += -D$(HOTSPOT_TARGET_CPU_DEFINE)=1
+ endif
+
+ # This generates checks in the generated C++ files that _LP64 is correctly
+ # (un)defined when compiling them.
+ ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
+ ADLCFLAGS += -D_LP64=1
+ else
+ ADLCFLAGS += -U_LP64
+ endif
+
+ ##############################################################################
+ # Concatenate all ad source files into a single file, which will be fed to
+ # adlc. Also include a #line directive at the start of every included file
+ # (after the initial header block), stating the original source file name.
+ #
+ # Normally, debugging is done directly on the ad_<arch>*.cpp files, but the
+ # #line directives in those files will be pointing back to <arch>.ad.
+
+ # AD_SRC_ROOTS might have been added to by a custom extension
+ AD_SRC_ROOTS += $(HOTSPOT_TOPDIR)/src
+
+ AD_SRC_FILES := $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
+ $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_CPU).ad \
+ $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_CPU_ARCH).ad \
+ $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
+ )))
+
+ SINGLE_AD_SRCFILE := $(ADLC_SUPPORT_DIR)/all-ad-src.ad
+
+ INSERT_FILENAME_AWK_SCRIPT := \
+ '{ \
+ 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 \
+ }'
+
+ $(SINGLE_AD_SRCFILE): $(AD_SRC_FILES)
+ $(call LogInfo, Preprocessing adlc files $(^F))
+ $(call MakeDir, $(@D))
+ $(NAWK) $(INSERT_FILENAME_AWK_SCRIPT) $^ > $@
+
+ ##############################################################################
+ # Run the adlc tool on the single concatenated ad source file, and store the
+ # output in support/adlc for further processing.
+ ADLC_RUN_MARKER := $(ADLC_SUPPORT_DIR)/_adlc_run.marker
+
+ $(ADLC_RUN_MARKER): $(BUILD_ADLC) $(SINGLE_AD_SRCFILE)
+ $(call LogInfo, Generating adlc files)
+ $(call MakeDir, $(@D))
+ $(call ExecuteWithLog, $(ADLC_SUPPORT_DIR)/adlc_run, \
+ $(FIXPATH) $(ADLC_TOOL) $(ADLCFLAGS) $(SINGLE_AD_SRCFILE) \
+ -c$(ADLC_SUPPORT_DIR)/ad_$(HOTSPOT_TARGET_CPU).cpp \
+ -h$(ADLC_SUPPORT_DIR)/ad_$(HOTSPOT_TARGET_CPU).hpp \
+ -a$(ADLC_SUPPORT_DIR)/dfa_$(HOTSPOT_TARGET_CPU).cpp \
+ -v$(ADLC_SUPPORT_DIR)/adGlobals_$(HOTSPOT_TARGET_CPU).hpp)
+ $(TOUCH) $@
+
+ ##############################################################################
+ # Finally copy the generated files from support/adlc into gensrc/adfiles,
+ # and postprocess them by fixing dummy #line directives.
+
+ ADLC_GENERATED_FILES := $(addprefix $(JVM_VARIANT_OUTPUTDIR)/gensrc/adfiles/, \
+ ad_$(HOTSPOT_TARGET_CPU).cpp \
+ ad_$(HOTSPOT_TARGET_CPU).hpp \
+ ad_$(HOTSPOT_TARGET_CPU)_clone.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_expand.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_format.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_gen.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_misc.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_peephole.cpp \
+ ad_$(HOTSPOT_TARGET_CPU)_pipeline.cpp \
+ adGlobals_$(HOTSPOT_TARGET_CPU).hpp \
+ dfa_$(HOTSPOT_TARGET_CPU).cpp \
+ )
+
+ $(JVM_VARIANT_OUTPUTDIR)/gensrc/adfiles/%: $(ADLC_RUN_MARKER)
+ $(call LogInfo, Postprocessing adlc file $*)
+ $(call MakeDir, $(@D))
+ $(NAWK) \
+ 'BEGIN { print "#line 1 \"$*\""; } \
+ /^#line 999999$$/ {print "#line " (NR+1) " \"$*\""; next} \
+ {print}' \
+ < $(ADLC_SUPPORT_DIR)/$* > $@
+
+ TARGETS := $(ADLC_GENERATED_FILES)
+
+endif
diff --git a/hotspot/makefiles/gensrc/GensrcDtrace.gmk b/hotspot/makefiles/gensrc/GensrcDtrace.gmk
new file mode 100644
index 0000000..563f221
--- /dev/null
+++ b/hotspot/makefiles/gensrc/GensrcDtrace.gmk
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+################################################################################
+# Gensrc support for dtrace. The files generated here are included by dtrace.hpp
+
+ifeq ($(call check-jvm-feature, dtrace), true)
+
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ DTRACE_FLAGS := -64
+ DTRACE_CPP_FLAGS := -D_LP64
+ else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ DTRACE_CPP_FLAGS := -D_LP64 -x c
+ else ifeq ($(OPENJDK_TARGET_OS), linux)
+ DTRACE_CPP_FLAGS := -x c
+ endif
+
+ DTRACE_SOURCE_DIR := $(HOTSPOT_TOPDIR)/src/os/posix/dtrace
+ DTRACE_GENSRC_DIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/dtracefiles
+
+ # Make sure we run our selected compiler for preprocessing instead of letting
+ # the dtrace tool pick it on it's own.
+ $(DTRACE_GENSRC_DIR)/%.h: $(DTRACE_SOURCE_DIR)/%.d
+ $(call LogInfo, Generating dtrace header file $(@F))
+ $(call MakeDir, $(@D) $(DTRACE_SUPPORT_DIR))
+ $(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, $(CC) -E $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d)
+ $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -h -o $@ -s $(DTRACE_SUPPORT_DIR)/$(@F).d)
+
+ # Process all .d files in DTRACE_SOURCE_DIR. They are:
+ # hotspot_jni.d hotspot.d hs_private.d
+ TARGETS += $(patsubst $(DTRACE_SOURCE_DIR)/%.d, \
+ $(DTRACE_GENSRC_DIR)/%.h, $(wildcard $(DTRACE_SOURCE_DIR)/*.d))
+
+endif
diff --git a/hotspot/makefiles/gensrc/GensrcJvmti.gmk b/hotspot/makefiles/gensrc/GensrcJvmti.gmk
new file mode 100644
index 0000000..25f569d
--- /dev/null
+++ b/hotspot/makefiles/gensrc/GensrcJvmti.gmk
@@ -0,0 +1,174 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+$(eval $(call IncludeCustomExtension, hotspot, gensrc/GensrcJvmti.gmk))
+
+################################################################################
+# Build tools needed for the JVMTI source code generation
+
+JVMTI_TOOLS_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/prims
+JVMTI_TOOLS_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/tools/jvmti
+
+$(eval $(call SetupJavaCompiler, GENERATE_OLDBYTECODE, \
+ JAVAC := $(JAVAC), \
+ FLAGS := $(DISABLE_WARNINGS), \
+ SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+ SERVER_JVM := $(SJAVAC_SERVER_JAVA), \
+ DISABLE_SJAVAC := true, \
+))
+
+$(eval $(call SetupJavaCompilation, BUILD_JVMTI_TOOLS, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ SRC := $(JVMTI_TOOLS_SRCDIR), \
+ INCLUDE_FILES := jvmtiGen.java jvmtiEnvFill.java, \
+ BIN := $(JVMTI_TOOLS_OUTPUTDIR), \
+))
+
+TOOL_JVMTI_GEN := $(JAVA_SMALL) -cp $(JVMTI_TOOLS_OUTPUTDIR) jvmtiGen
+TOOL_JVMTI_ENV_FILL := $(JAVA_SMALL) -cp $(JVMTI_TOOLS_OUTPUTDIR) jvmtiEnvFill
+
+################################################################################
+# Setup make rules for an xml transform for jvmti/trace file generation.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name. This name is
+# also used as the name of the output file.
+#
+# Remaining parameters are named arguments. These include:
+# XML_FILE -- The input source file to use
+# XSL_FILE -- The xsl file to use
+# OUTPUT_DIR -- The directory to put the generated file in
+# ARGS -- Additional arguments to the jvmtiGen tool
+# DEPS -- Additional dependencies
+SetupXslTransform = $(NamedParamsMacroTemplate)
+define SetupXslTransformBody
+ $$($1_OUTPUT_DIR)/$1: $$($1_XML_FILE) $$($1_XSL_FILE) $$($1_DEPS) $$(BUILD_JVMTI_TOOLS)
+ $$(call LogInfo, Generating $$(@F))
+ $$(call MakeDir, $$(@D))
+ $$(call ExecuteWithLog, $$@, $$(TOOL_JVMTI_GEN) -IN $$($1_XML_FILE) -XSL $$($1_XSL_FILE) -OUT $$@ $$($1_ARGS))
+ # jvmtiGen does not return error code properly on fail.
+ # NOTE: We should really fix jvmtiGen.java instead.
+ test -f $$@
+
+ TARGETS += $$($1_OUTPUT_DIR)/$1
+endef
+
+################################################################################
+# Create JVMTI files in gensrc/jvmtifiles
+
+JVMTI_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/prims
+JVMTI_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles
+
+# Setup rule for generating a jvmti file
+#
+# $1 is generated source file name in $(JVMTI_OUTPUTDIR)
+# $2 is XSL file to use in $(JVMTI_SRCDIR)
+# $3 is optional extra arguments to jvmtiGen
+define SetupJvmtiGeneration
+ $$(eval $$(call SetupXslTransform, $1, \
+ XML_FILE := $$(JVMTI_SRCDIR)/jvmti.xml, \
+ XSL_FILE := $$(JVMTI_SRCDIR)/$(strip $2), \
+ OUTPUT_DIR := $$(JVMTI_OUTPUTDIR), \
+ ARGS := $3, \
+ DEPS := $$(JVMTI_SRCDIR)/jvmtiLib.xsl, \
+ ))
+endef
+
+$(eval $(call SetupJvmtiGeneration, jvmtiEnter.cpp, jvmtiEnter.xsl, \
+ -PARAM interface jvmti))
+$(eval $(call SetupJvmtiGeneration, jvmtiEnterTrace.cpp, jvmtiEnter.xsl, \
+ -PARAM interface jvmti -PARAM trace Trace))
+$(eval $(call SetupJvmtiGeneration, jvmtiEnv.hpp, jvmtiHpp.xsl))
+$(eval $(call SetupJvmtiGeneration, jvmti.h, jvmtiH.xsl))
+$(eval $(call SetupJvmtiGeneration, jvmti.html, jvmti.xsl))
+$(eval $(call SetupJvmtiGeneration, jvmtiEnvStub.cpp, jvmtiEnv.xsl))
+
+JVMTI_BC_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/interpreter
+
+$(eval $(call SetupXslTransform, bytecodeInterpreterWithChecks.cpp, \
+ XML_FILE := $(JVMTI_BC_SRCDIR)/bytecodeInterpreterWithChecks.xml, \
+ XSL_FILE := $(JVMTI_BC_SRCDIR)/bytecodeInterpreterWithChecks.xsl, \
+ OUTPUT_DIR := $(JVMTI_OUTPUTDIR), \
+ DEPS := $(JVMTI_BC_SRCDIR)/bytecodeInterpreter.cpp, \
+))
+
+# We need $(JVMTI_OUTPUTDIR)/jvmtiEnvStub.cpp (generated above) as input
+$(JVMTI_OUTPUTDIR)/jvmtiEnvRecommended.cpp: $(JVMTI_SRCDIR)/jvmtiEnv.cpp \
+ $(JVMTI_OUTPUTDIR)/jvmtiEnvStub.cpp $(BUILD_JVMTI_TOOLS)
+ $(call LogInfo, Generating $(@F))
+ $(call MakeDir, $(@D))
+ $(call ExecuteWithLog, $@, $(TOOL_JVMTI_ENV_FILL) $(JVMTI_SRCDIR)/jvmtiEnv.cpp \
+ $(JVMTI_OUTPUTDIR)/jvmtiEnvStub.cpp \
+ $(JVMTI_OUTPUTDIR)/jvmtiEnvRecommended.cpp)
+ # jvmtiEnvFill does not necessarily return an error code on failure.
+ # NOTE: We should really fix jvmtiEnvFill.java instead.
+ test -f $@
+
+TARGETS += $(JVMTI_OUTPUTDIR)/jvmtiEnvRecommended.cpp
+
+################################################################################
+# Create trace files in gensrc/tracefiles
+
+TRACE_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/tracefiles
+TRACE_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/trace
+
+# Append directories to search (might have been set by custom extensions)
+TRACE_SEARCH_DIRS += $(TRACE_SRCDIR)
+
+TRACE_XML ?= $(TRACE_SRCDIR)/trace.xml
+
+# Changing these will trigger a rebuild of generated trace files.
+TRACE_DEPS += \
+ $(TRACE_XML) \
+ $(TRACE_SRCDIR)/tracetypes.xml \
+ $(TRACE_SRCDIR)/tracerelationdecls.xml \
+ $(TRACE_SRCDIR)/traceevents.xml \
+ $(TRACE_SRCDIR)/trace.dtd \
+ $(TRACE_SRCDIR)/xinclude.mod \
+ #
+
+# Setup rule for generating a trace file
+#
+# $1 is generated source file name in $(TRACE_OUTPUTDIR)
+define SetupTraceGeneration
+ $$(eval $$(call SetupXslTransform, $1, \
+ XML_FILE := $$(TRACE_XML), \
+ XSL_FILE := $$(firstword $$(wildcard $$(addsuffix /$$(basename $1).xsl, $$(TRACE_SEARCH_DIRS)))), \
+ OUTPUT_DIR := $$(TRACE_OUTPUTDIR), \
+ DEPS := $$(TRACE_DEPS), \
+ ))
+endef
+
+# Append files to generated (might have been set by custom extensions)
+TRACE_GENSRC_FILES += \
+ traceEventClasses.hpp \
+ traceEventIds.hpp \
+ traceTypes.hpp \
+ #
+
+# Call SetupTraceGeneration for all trace gensrc files
+$(foreach tracefile, $(TRACE_GENSRC_FILES), \
+ $(eval $(call SetupTraceGeneration, $(tracefile))) \
+)
diff --git a/hotspot/makefiles/ide/CreateVSProject.gmk b/hotspot/makefiles/ide/CreateVSProject.gmk
new file mode 100644
index 0000000..d804dcc
--- /dev/null
+++ b/hotspot/makefiles/ide/CreateVSProject.gmk
@@ -0,0 +1,153 @@
+#
+# 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.
+#
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ # The next part is a bit hacky. We include the CompileJvm.gmk to be
+ # able to extact flags, but we do not wish to execute the rules.
+
+ # Use client as base for defines and includes
+ JVM_VARIANT=client
+
+ include HotspotCommon.gmk
+ include lib/CompileJvm.gmk
+
+ # Reset targets so we don't build libjvm.
+ TARGETS :=
+
+ # Helper macro to convert a unix path to a Windows path, suitable for
+ # inclusion in a command line.
+ FixPath = \
+ $(strip $(subst \,\\,$(shell $(CYGPATH) -w $1)))
+
+ JVM_DEFINES_client := $(patsubst -D%,%, $(filter -D%, $(JVM_CFLAGS)))
+ EXTRACTED_DEFINES_client := $(addprefix -define , $(JVM_DEFINES_client))
+
+ JVM_INCLUDES_client := $(patsubst -I%,%, $(filter -I%, $(JVM_CFLAGS)))
+ EXTRACTED_INCLUDES_client := $(foreach path, $(JVM_INCLUDES_client), -absoluteInclude $(call FixPath, $(path)))
+
+ # Hand-code variant-specific arguments, based on the fact that we use
+ # client for general arguments. Not optimal but other solutions require
+ # major changes in ProjectCreator.
+ ADDITIONAL_VARIANT_ARGS := \
+ -define_server COMPILER2 \
+ -ignorePath_client adfiles \
+ -ignorePath_client c2_ \
+ -ignorePath_client runtime_ \
+ -ignorePath_client libadt \
+ -ignorePath_client opto \
+ #
+
+ IGNORED_PLATFORMS_ARGS := \
+ -ignorePath aarch64 \
+ -ignorePath aix \
+ -ignorePath arm \
+ -ignorePath bsd \
+ -ignorePath linux \
+ -ignorePath posix \
+ -ignorePath ppc \
+ -ignorePath shark \
+ -ignorePath solaris \
+ -ignorePath sparc \
+ -ignorePath x86_32 \
+ -ignorePath zero \
+ #
+
+ ################################################################################
+ # Build the ProjectCreator java tool.
+
+ TOOLS_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/support/tools_classes
+
+ $(eval $(call SetupJavaCompilation, BUILD_PROJECT_CREATOR, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ ADD_JAVAC_FLAGS := -Xlint:-auxiliaryclass, \
+ SRC := $(HOTSPOT_TOPDIR)/makefiles/src/classes, \
+ BIN := $(TOOLS_OUTPUTDIR), \
+ ))
+
+ TARGETS += $(BUILD_PROJECT_CREATOR)
+
+ # Run the ProjectCreator tool
+ PROJECT_CREATOR_TOOL := $(JAVA_SMALL) -cp $(TOOLS_OUTPUTDIR) build.tools.projectcreator.ProjectCreator
+
+ IDE_OUTPUTDIR := $(BUILD_OUTPUT)/ide/hotspot-visualstudio
+
+ VCPROJ_FILE := $(IDE_OUTPUTDIR)/jvm.vcxproj
+
+ PROJECT_CREATOR_CLASS := build.tools.projectcreator.WinGammaPlatformVC10
+
+ # We hard-code gensrc dir to server (since this includes adfiles)
+ PROJECT_CREATOR_ARGS := \
+ -sourceBase $(call FixPath, $(HOTSPOT_TOPDIR)) \
+ -startAt src \
+ -relativeSrcInclude src \
+ -hidePath .hg \
+ -hidePath .jcheck \
+ -hidePath jdk.hotspot.agent \
+ -hidePath jdk.vm.ci \
+ -hidePath jdk.jfr \
+ -compiler VC10 \
+ -jdkTargetRoot $(call FixPath, $(JDK_OUTPUTDIR)) \
+ -platformName x64 \
+ -buildBase $(call FixPath, $(IDE_OUTPUTDIR)/vs-output) \
+ -buildSpace $(call FixPath, $(IDE_OUTPUTDIR)) \
+ -makeBinary $(call FixPath, $(MAKE)) \
+ -makeOutput $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-%f/libjvm) \
+ -absoluteInclude $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-server/gensrc) \
+ -absoluteSrcInclude $(call FixPath, $(HOTSPOT_OUTPUTDIR)/variant-server/gensrc) \
+ $(EXTRACTED_DEFINES_client) \
+ $(EXTRACTED_INCLUDES_client) \
+ $(ADDITIONAL_VARIANT_ARGS) \
+ $(IGNORED_PLATFORMS_ARGS) \
+ #
+
+ VCPROJ_VARDEPS := $(PROJECT_CREATOR_CLASS) $(PROJECT_CREATOR_ARGS)
+ VCPROJ_VARDEPS_FILE := $(call DependOnVariable, VCPROJ_VARDEPS, \
+ $(VCPROJ_FILE).vardeps)
+
+ $(VCPROJ_FILE): $(BUILD_PROJECT_CREATOR) $(VCPROJ_VARDEPS_FILE)
+ $(call MakeDir, $(@D))
+ $(call ExecuteWithLog, $@, \
+ $(PROJECT_CREATOR_TOOL) $(PROJECT_CREATOR_CLASS) \
+ $(PROJECT_CREATOR_ARGS) -projectFileName $(call FixPath, $@)) \
+ $(LOG_INFO)
+
+ TARGETS += $(VCPROJ_FILE)
+
+ all: $(TARGETS)
+
+else
+ all:
+ $(info Hotspot Visual Studio generation only supported on Windows)
+endif
+
+.PHONY: all
diff --git a/hotspot/makefiles/lib/CompileDtracePostJvm.gmk b/hotspot/makefiles/lib/CompileDtracePostJvm.gmk
new file mode 100644
index 0000000..127460a
--- /dev/null
+++ b/hotspot/makefiles/lib/CompileDtracePostJvm.gmk
@@ -0,0 +1,217 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+################################################################################
+# Support for dtrace integration with libjvm, and stand-alone dtrace library
+# compilation.
+
+ifeq ($(call check-jvm-feature, dtrace), true)
+ ##############################################################################
+
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ ############################################################################
+ # Integrate with libjvm. Here we generate three object files which are
+ # linked with libjvm.so. This step is complicated from a dependency
+ # perspective, since it needs the rest of the compiled object files from the
+ # libjvm compilation, but the output is object files that are to be included
+ # when linking libjvm.so. So this generation must happen as a part of the
+ # libjvm compilation.
+
+ # First we need to generate the dtraceGenOffsets tool. When run, this will
+ # produce more header files and a C++ file.
+
+ # Note that generateJvmOffsets.cpp must be compiled as if it were a file
+ # in the libjvm.so, using JVM_CFLAGS as setup in CompileJvm.gmk. Otherwise
+ # this would preferrably have been done as a part of GensrcDtrace.gmk.
+ $(eval $(call SetupNativeCompilation, BUILD_DTRACE_GEN_OFFSETS, \
+ SRC := $(HOTSPOT_TOPDIR)/src/os/$(OPENJDK_TARGET_OS)/dtrace, \
+ INCLUDE_FILES := generateJvmOffsets.cpp generateJvmOffsetsMain.c, \
+ CC := $(BUILD_CXX), \
+ CXX := $(BUILD_CXX), \
+ LDEXE := $(BUILD_CXX), \
+ generateJvmOffsets.cpp_CXXFLAGS := $(JVM_CFLAGS) -mt -xnolib -norunpath, \
+ generateJvmOffsetsMain.c_CFLAGS := -library=%none -mt -m64 -norunpath -z nodefs, \
+ LDFLAGS := -m64, \
+ LIBS := -lc, \
+ OBJECT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/dtrace-gen-offsets/objs, \
+ OUTPUT_DIR := $(JVM_VARIANT_OUTPUTDIR)/tools/dtrace-gen-offsets, \
+ PROGRAM := dtraceGenOffsets, \
+ ))
+
+ DTRACE_GEN_OFFSETS_TOOL := $(BUILD_DTRACE_GEN_OFFSETS_TARGET)
+
+ # Argument 1: Output filename
+ # Argument 2: dtrace-gen-offset tool command line option
+ define SetupDtraceOffsetsGeneration
+ $1: $$(BUILD_DTRACE_GEN_OFFSETS)
+ $$(call LogInfo, Generating dtrace $2 file $$(@F))
+ $$(call MakeDir, $$(@D))
+ $$(call ExecuteWithLog, $$@, $$(DTRACE_GEN_OFFSETS_TOOL) -$$(strip $2) > $$@)
+
+ TARGETS += $1
+ endef
+
+ JVM_OFFSETS_H := $(DTRACE_SUPPORT_DIR)/JvmOffsets.h
+ JVM_OFFSETS_CPP := $(DTRACE_SUPPORT_DIR)/JvmOffsets.cpp
+ JVM_OFFSETS_INDEX_H := $(DTRACE_SUPPORT_DIR)/JvmOffsetsIndex.h
+
+ # Run the dtrace-gen-offset tool to generate these three files.
+ $(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_H), header))
+ $(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_INDEX_H), index))
+ $(eval $(call SetupDtraceOffsetsGeneration, $(JVM_OFFSETS_CPP), table))
+
+ ############################################################################
+ # Compile JVM_OFFSETS_OBJ which is linked with libjvm.so.
+
+ # JvmOffsets.cpp is compiled without the common JVM_CFLAGS. Otherwise, the
+ # natural way would have been to included this source code in BUILD_LIBJVM.
+ JVM_OFFSETS_CFLAGS := -m64
+ ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
+ JVM_OFFSETS_CFLAGS += -xarch=sparc
+ endif
+
+ $(JVM_OFFSETS_OBJ): $(JVM_OFFSETS_CPP) $(JVM_OFFSETS_H)
+ $(call LogInfo, Compiling dtrace file JvmOffsets.cpp (for libjvm.so))
+ $(call ExecuteWithLog, $@, $(CXX) -c -I$(<D) -o $@ $(JVM_OFFSETS_CFLAGS) $<)
+
+ ############################################################################
+ # Generate DTRACE_OBJ which is linked with libjvm.so.
+
+ # Concatenate all *.d files into a single file
+ DTRACE_SOURCE_FILES := $(addprefix $(HOTSPOT_TOPDIR)/src/os/posix/dtrace/, \
+ hotspot_jni.d \
+ hotspot.d \
+ hs_private.d \
+ )
+
+ $(JVM_OUTPUTDIR)/objs/dtrace.d: $(DTRACE_SOURCE_FILES)
+ $(call LogInfo, Generating $(@F))
+ $(call MakeDir, $(@D))
+ $(CAT) $^ > $@
+
+ DTRACE_INSTRUMENTED_OBJS := $(addprefix $(JVM_OUTPUTDIR)/objs/, \
+ 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 \
+ vmGCOperations.o \
+ )
+
+ ifeq ($(call check-jvm-feature, all-gcs), true)
+ DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
+ vmCMSOperations.o \
+ vmPSOperations.o \
+ )
+ endif
+
+ DTRACE_FLAGS := -64 -G
+ DTRACE_CPP_FLAGS := -D_LP64
+
+ # Make sure we run our selected compiler for preprocessing instead of letting
+ # the dtrace tool pick it on it's own.
+ $(DTRACE_OBJ): $(JVM_OUTPUTDIR)/objs/dtrace.d $(DTRACE_INSTRUMENTED_OBJS)
+ $(call LogInfo, Generating $(@F) from $(<F) and object files)
+ $(call MakeDir, $(DTRACE_SUPPORT_DIR))
+ $(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, $(CC) -E \
+ $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d)
+ $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -xlazyload -o $@ \
+ -s $(DTRACE_SUPPORT_DIR)/$(@F).d $(sort $(DTRACE_INSTRUMENTED_OBJS)))
+
+ ############################################################################
+ # Generate DTRACE_JHELPER_OBJ which is linked with libjvm.so.
+
+ # Unfortunately dtrace generates incorrect types for some symbols in
+ # dtrace_jhelper.o, resulting in "warning: symbol X has differing types"
+ # This is tracked in JDK-6890703.
+ $(DTRACE_JHELPER_OBJ): $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace/jhelper.d \
+ $(JVM_OFFSETS_INDEX_H)
+ $(call LogInfo, Running dtrace for $(<F))
+ $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) $(DTRACE_CPP_FLAGS) -C \
+ -I$(DTRACE_SUPPORT_DIR) -o $@ -s $<)
+
+ # NOTE: We should really do something like this, but unfortunately this
+ # results in a compilation error. :-(
+ # $(call MakeDir, $(DTRACE_SUPPORT_DIR))
+ # $(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, $(CC) -E \
+ # $(DTRACE_CPP_FLAGS) -I$(DTRACE_SUPPORT_DIR) $^ \
+ # > $(DTRACE_SUPPORT_DIR)/$(@F).d)
+ # $(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -o $@ \
+ # -s $(DTRACE_SUPPORT_DIR)/$(@F).d)
+
+ ############################################################################
+ # Build the stand-alone dtrace libraries
+
+ LIBJVM_DTRACE_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm_dtrace
+
+ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM_DTRACE, \
+ LIBRARY := jvm_dtrace, \
+ OUTPUT_DIR := $(LIBJVM_DTRACE_OUTPUTDIR), \
+ SRC := $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace, \
+ INCLUDE_FILES := jvm_dtrace.c, \
+ 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, \
+ OBJECT_DIR := $(LIBJVM_DTRACE_OUTPUTDIR)/objs, \
+ STRIP_SYMBOLS := true, \
+ ))
+
+ LIBJVM_DB_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm_db
+
+ # Note that libjvm_db.c has tests for COMPILER2, but this was never set by
+ # the old build.
+ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM_DB, \
+ LIBRARY := jvm_db, \
+ OUTPUT_DIR := $(LIBJVM_DB_OUTPUTDIR), \
+ SRC := $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace, \
+ INCLUDE_FILES := libjvm_db.c, \
+ CFLAGS := -I$(JVM_VARIANT_OUTPUTDIR)/gensrc -I$(DTRACE_SUPPORT_DIR) \
+ -m64 -G -mt -KPIC, \
+ LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
+ LIBS := -lc, \
+ MAPFILE := $(HOTSPOT_TOPDIR)/makefiles/mapfiles/libjvm_db/mapfile-vers, \
+ OBJECT_DIR := $(LIBJVM_DB_OUTPUTDIR)/objs, \
+ STRIP_SYMBOLS := true, \
+ ))
+
+ # We need the generated JvmOffsets.h before we can compile the libjvm_db source code.
+ $(BUILD_LIBJVM_DB_ALL_OBJS): $(JVM_OFFSETS_H)
+
+ TARGETS += $(BUILD_LIBJVM_DTRACE) $(BUILD_LIBJVM_DB)
+ endif
+endif
diff --git a/hotspot/makefiles/lib/CompileDtracePreJvm.gmk b/hotspot/makefiles/lib/CompileDtracePreJvm.gmk
new file mode 100644
index 0000000..20e3aa9
--- /dev/null
+++ b/hotspot/makefiles/lib/CompileDtracePreJvm.gmk
@@ -0,0 +1,36 @@
+#
+# 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.
+#
+
+ifeq ($(call check-jvm-feature, dtrace), true)
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ # These files are are generated by CompileDtrace.gmk but consumed by
+ # CompileJvm.gmk
+ DTRACE_OBJ := $(JVM_OUTPUTDIR)/objs/dtrace.o
+ DTRACE_JHELPER_OBJ := $(JVM_OUTPUTDIR)/objs/dtrace_jhelper.o
+ JVM_OFFSETS_OBJ := $(JVM_OUTPUTDIR)/objs/JvmOffsets.o
+
+ DTRACE_EXTRA_OBJECT_FILES := $(DTRACE_OBJ) $(DTRACE_JHELPER_OBJ) $(JVM_OFFSETS_OBJ)
+ endif
+endif
diff --git a/hotspot/makefiles/lib/CompileJvm.gmk b/hotspot/makefiles/lib/CompileJvm.gmk
new file mode 100644
index 0000000..b6404cf
--- /dev/null
+++ b/hotspot/makefiles/lib/CompileJvm.gmk
@@ -0,0 +1,242 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+# Include support files that will setup compiler flags due to the selected
+# jvm feature set, and specific file overrides.
+include lib/JvmFeatures.gmk
+include lib/JvmOverrideFiles.gmk
+
+$(eval $(call IncludeCustomExtension, hotspot, lib/CompileJvm.gmk))
+
+################################################################################
+# Setup compilation of the main Hotspot native library (libjvm).
+
+JVM_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/libjvm
+JVM_MAPFILE := $(JVM_OUTPUTDIR)/mapfile
+
+################################################################################
+# Platform independent setup
+
+# This variable may be added to by a custom extension
+JVM_SRC_ROOTS += $(HOTSPOT_TOPDIR)/src
+
+JVM_SRC_DIRS += $(call uniq, $(wildcard $(foreach d, $(JVM_SRC_ROOTS), \
+ $d/share/vm \
+ $d/os/$(HOTSPOT_TARGET_OS)/vm \
+ $d/os/$(HOTSPOT_TARGET_OS_TYPE)/vm \
+ $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm \
+ $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/vm \
+ ))) \
+ $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles \
+ $(JVM_VARIANT_OUTPUTDIR)/gensrc/tracefiles \
+ #
+
+JVM_CFLAGS_INCLUDES += \
+ $(patsubst %,-I%,$(filter-out $(JVM_VARIANT_OUTPUTDIR)/gensrc/%, $(JVM_SRC_DIRS))) \
+ -I$(JVM_VARIANT_OUTPUTDIR)/gensrc \
+ -I$(HOTSPOT_TOPDIR)/src/share/vm/precompiled \
+ -I$(HOTSPOT_TOPDIR)/src/share/vm/prims \
+ #
+
+JVM_CFLAGS_TARGET_DEFINES += \
+ -DTARGET_OS_FAMILY_$(HOTSPOT_TARGET_OS) \
+ -DTARGET_ARCH_MODEL_$(HOTSPOT_TARGET_CPU) \
+ -DTARGET_ARCH_$(HOTSPOT_TARGET_CPU_ARCH) \
+ -DTARGET_OS_ARCH_MODEL_$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU) \
+ -DTARGET_OS_ARCH_$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH) \
+ -DTARGET_COMPILER_$(HOTSPOT_TOOLCHAIN_TYPE) \
+ -D$(HOTSPOT_TARGET_CPU_DEFINE) \
+ -DHOTSPOT_LIB_ARCH='"$(OPENJDK_TARGET_CPU_LEGACY_LIB)"' \
+ #
+
+ifeq ($(DEBUG_LEVEL), release)
+ # For hotspot, release builds differ internally between "optimized" and "product"
+ # in that "optimize" does not define PRODUCT.
+ ifneq ($(HOTSPOT_DEBUG_LEVEL), optimized)
+ JVM_CFLAGS_DEBUGLEVEL := -DPRODUCT
+ endif
+else ifeq ($(DEBUG_LEVEL), fastdebug)
+ JVM_CFLAGS_DEBUGLEVEL := -DASSERT
+ ifeq ($(filter $(OPENJDK_TARGET_OS), windows aix), )
+ # NOTE: Old build did not define CHECK_UNHANDLED_OOPS on Windows and AIX.
+ JVM_CFLAGS_DEBUGLEVEL += -DCHECK_UNHANDLED_OOPS
+ endif
+else ifeq ($(DEBUG_LEVEL), slowdebug)
+ # _NMT_NOINLINE_ informs NMT that no inlining is done by the compiler
+ JVM_CFLAGS_DEBUGLEVEL := -DASSERT -D_NMT_NOINLINE_
+endif
+
+JVM_CFLAGS += \
+ $(JVM_CFLAGS_DEBUGLEVEL) \
+ $(JVM_CFLAGS_TARGET_DEFINES) \
+ $(JVM_CFLAGS_FEATURES) \
+ $(JVM_CFLAGS_INCLUDES) \
+ $(EXTRA_CFLAGS) \
+ #
+
+JVM_LDFLAGS += \
+ $(SHARED_LIBRARY_FLAGS) \
+ $(JVM_LDFLAGS_FEATURES) \
+ $(EXTRA_LDFLAGS) \
+ #
+
+JVM_LIBS += \
+ $(JVM_LIBS_FEATURES) \
+ #
+
+# These files and directories are always excluded
+JVM_EXCLUDE_FILES += jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp args.cc
+JVM_EXCLUDES += adlc
+
+# Needed by vm_version.cpp
+ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ OPENJDK_TARGET_CPU_VM_VERSION := amd64
+else ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
+ OPENJDK_TARGET_CPU_VM_VERSION := sparc
+else
+ OPENJDK_TARGET_CPU_VM_VERSION := $(OPENJDK_TARGET_CPU)
+endif
+
+CFLAGS_VM_VERSION := \
+ $(VERSION_CFLAGS) \
+ -DHOTSPOT_VERSION_STRING='"$(VERSION_STRING)"' \
+ -DDEBUG_LEVEL='"$(DEBUG_LEVEL)"' \
+ -DHOTSPOT_BUILD_USER='"$(USERNAME)"' \
+ -DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"' \
+ -DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
+ #
+
+# -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
+ifeq ($(USE_PRECOMPILED_HEADER), 0)
+ JVM_CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
+endif
+
+################################################################################
+# Platform specific setup
+
+ifneq ($(filter $(OPENJDK_TARGET_OS), linux macosx windows), )
+ JVM_PRECOMPILED_HEADER := $(HOTSPOT_TOPDIR)/src/share/vm/precompiled/precompiled.hpp
+endif
+
+ifneq ($(filter $(OPENJDK_TARGET_OS), macosx aix solaris), )
+ # On macosx, aix and solaris we have to link with the C++ compiler
+ JVM_TOOLCHAIN := TOOLCHAIN_LINK_CXX
+else
+ JVM_TOOLCHAIN := TOOLCHAIN_DEFAULT
+endif
+
+ifeq ($(OPENJDK_TARGET_CPU), x86)
+ JVM_EXCLUDE_PATTERNS += x86_64
+else ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ JVM_EXCLUDE_PATTERNS += x86_32
+endif
+
+# Inline assembly for solaris
+ifeq ($(OPENJDK_TARGET_OS), solaris)
+ ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ JVM_CFLAGS += $(HOTSPOT_TOPDIR)/src/os_cpu/solaris_x86/vm/solaris_x86_64.il
+ else ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
+ JVM_CFLAGS += $(HOTSPOT_TOPDIR)/src/os_cpu/solaris_sparc/vm/solaris_sparc.il
+ endif
+endif
+
+ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-sparcv9)
+ ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), false)
+ # NOTE: In the old build, we weirdly enough set -g/-g0 always, regardless
+ # of if debug symbols were needed. Without it, compilation fails on
+ # sparc! :-(
+ JVM_CFLAGS += -g0
+ endif
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
+ RC_DESC := 64-Bit$(SPACE)
+ endif
+ JVM_RCFLAGS += -D"HS_FILEDESC=$(HOTSPOT_VM_DISTRO) $(RC_DESC)$(JVM_VARIANT) VM"
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # NOTE: The old build did not strip binaries on macosx.
+ JVM_STRIP_SYMBOLS := false
+else
+ JVM_STRIP_SYMBOLS := true
+endif
+
+JVM_OPTIMIZATION ?= HIGHEST_JVM
+
+################################################################################
+# Now set up the actual compilation of the main hotspot native library
+
+$(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
+ TOOLCHAIN := $(JVM_TOOLCHAIN), \
+ LIBRARY := jvm, \
+ OUTPUT_DIR := $(JVM_OUTPUTDIR), \
+ SRC := $(JVM_SRC_DIRS), \
+ EXCLUDES := $(JVM_EXCLUDES), \
+ EXCLUDE_FILES := $(JVM_EXCLUDE_FILES), \
+ EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
+ EXTRA_OBJECT_FILES := $(DTRACE_EXTRA_OBJECT_FILES), \
+ CFLAGS := $(JVM_CFLAGS), \
+ CFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ CXXFLAGS_DEBUG_SYMBOLS := $(JVM_CFLAGS_SYMBOLS), \
+ vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
+ DISABLED_WARNINGS_clang := delete-non-virtual-dtor dynamic-class-memaccess \
+ empty-body format logical-op-parentheses parentheses \
+ parentheses-equality switch tautological-compare, \
+ DISABLED_WARNINGS_xlc := 1540-0216 1540-0198 1540-1090 1540-1639 \
+ 1540-1088 1500-010, \
+ ASFLAGS := $(JVM_ASFLAGS), \
+ LDFLAGS := $(JVM_LDFLAGS), \
+ LIBS := $(JVM_LIBS), \
+ OPTIMIZATION := $(JVM_OPTIMIZATION), \
+ OBJECT_DIR := $(JVM_OUTPUTDIR)/objs, \
+ MAPFILE := $(JVM_MAPFILE), \
+ USE_MAPFILE_FOR_SYMBOLS := true, \
+ STRIP_SYMBOLS := $(JVM_STRIP_SYMBOLS), \
+ EMBED_MANIFEST := true, \
+ RC_FLAGS := $(JVM_RCFLAGS), \
+ VERSIONINFO_RESOURCE := $(HOTSPOT_TOPDIR)/src/os/windows/vm/version.rc, \
+ PRECOMPILED_HEADER := $(JVM_PRECOMPILED_HEADER), \
+ PRECOMPILED_HEADER_EXCLUDE := $(JVM_PRECOMPILED_HEADER_EXCLUDE), \
+))
+
+# AIX warning explanation:
+# 1500-010 : (W) WARNING in ...: Infinite loop. Program may not stop.
+# There are several infinite loops in the vm, so better suppress.
+# 1540-0198 : (W) The omitted keyword "private" is assumed for base class "...".
+# 1540-0216 : (W) An expression of type .. cannot be converted to type ..
+# In hotspot this fires for functionpointer to pointer conversions
+# 1540-1088 : (W) The exception specification is being ignored.
+# In hotspot this is caused by throw() in declaration of new() in nmethod.hpp.
+# 1540-1090 : (I) The destructor of "..." might not be called.
+# 1540-1639 : (I) The behavior of long type bit fields has changed ...
+
+# Include mapfile generation. It relies on BUILD_LIBJVM_ALL_OBJS which is only
+# defined after the above call to BUILD_LIBJVM. Mapfile will be generated
+# after all object files are built, but before the jvm library is linked.
+include lib/JvmMapfile.gmk
+
+TARGETS += $(BUILD_LIBJVM)
diff --git a/hotspot/makefiles/lib/CompileLibjsig.gmk b/hotspot/makefiles/lib/CompileLibjsig.gmk
new file mode 100644
index 0000000..ba9791c
--- /dev/null
+++ b/hotspot/makefiles/lib/CompileLibjsig.gmk
@@ -0,0 +1,106 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+################################################################################
+# Create the libjsig.so shared library
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include NativeCompilation.gmk
+
+ifneq ($(OPENJDK_TARGET_OS), windows)
+ ifeq ($(STATIC_BUILD), false)
+ LIBJSIG_STRIP_SYMBOLS := true
+ ifeq ($(OPENJDK_TARGET_OS), linux)
+ LIBJSIG_CFLAGS := -fPIC -D_GNU_SOURCE -D_REENTRANT $(EXTRA_CFLAGS)
+ LIBJSIG_LDFLAGS := $(LDFLAGS_HASH_STYLE) $(EXTRA_CFLAGS)
+ LIBJSIG_LIBS := $(LIBDL)
+
+ # NOTE: The old build compiled this library without -soname.
+ # To emulate this, we need to clear out SET_SHARED_LIBRARY_NAME.
+ SET_SHARED_LIBRARY_NAME :=
+
+ # Flags for other CPUs can be provided in EXTRA_CFLAGS
+ ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ LIBJSIG_CPU_FLAGS := -m64
+ else ifeq ($(OPENJDK_TARGET_CPU), x86)
+ LIBJSIG_CPU_FLAGS := -m32 -march=i586
+ endif
+
+ else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ LIBJSIG_CFLAGS := -m64 -KPIC -mt
+ LIBJSIG_LDFLAGS := -m64 -mt -xnolib
+ LIBJSIG_LIBS := $(LIBDL)
+
+ # NOTE: The old build compiled this library without -soname.
+ # To emulate this, we need to clear out SET_SHARED_LIBRARY_NAME.
+ SET_SHARED_LIBRARY_NAME :=
+
+ else ifeq ($(OPENJDK_TARGET_OS), aix)
+ LIBJSIG_CFLAGS := -q64 -D_GNU_SOURCE -D_REENTRANT -qpic=large
+ LIBJSIG_LDFLAGS := -b64 -bexpall -G -bnoentry -qmkshrobj -brtl -bnolibpath -bernotok
+ LIBJSIG_LIBS := $(LIBDL)
+
+ # NOTE: The old build compiled this library without -soname.
+ # To emulate this, we need to clear out SET_SHARED_LIBRARY_NAME.
+ SET_SHARED_LIBRARY_NAME :=
+
+ else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ LIBJSIG_CFLAGS := -m64 -D_GNU_SOURCE -pthread -mno-omit-leaf-frame-pointer -mstack-alignment=16 -fPIC
+ LIBJSIG_LDFLAGS := $(LDFLAGS_HASH_STYLE)
+ # NOTE: This lib is not stripped on macosx in old build. Looks like a mistake.
+ LIBJSIG_STRIP_SYMBOLS := false
+ else
+ $(error Unknown target OS $(OPENJDK_TARGET_OS) in CompileLibjsig.gmk)
+ 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_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/libjsig
+
+ LIBJSIG_LDFLAGS += $(SHARED_LIBRARY_FLAGS)
+
+ $(eval $(call SetupNativeCompilation, BUILD_LIBJSIG, \
+ LIBRARY := jsig, \
+ EXTRA_FILES := $(LIBJSIG_SRC_FILE), \
+ OUTPUT_DIR := $(LIBJSIG_OUTPUTDIR), \
+ LANG := C, \
+ CFLAGS := $(LIBJSIG_CFLAGS) $(LIBJSIG_CPU_FLAGS), \
+ LDFLAGS := $(LIBJSIG_LDFLAGS) $(LIBJSIG_CPU_FLAGS), \
+ LIBS := $(LIBJSIG_LIBS), \
+ MAPFILE := $(LIBJSIG_MAPFILE), \
+ OBJECT_DIR := $(LIBJSIG_OUTPUTDIR)/objs, \
+ STRIP_SYMBOLS := $(LIBJSIG_STRIP_SYMBOLS), \
+ ))
+
+ TARGETS += $(BUILD_LIBJSIG)
+ endif
+endif
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/hotspot/makefiles/lib/CompileLibraries.gmk b/hotspot/makefiles/lib/CompileLibraries.gmk
new file mode 100644
index 0000000..7a7a165
--- /dev/null
+++ b/hotspot/makefiles/lib/CompileLibraries.gmk
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2013, 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
+include NativeCompilation.gmk
+
+include HotspotCommon.gmk
+
+# The dtrace setup must be done both before and after CompileJvm.gmk, due to
+# intricate dependencies.
+include lib/CompileDtracePreJvm.gmk
+include lib/CompileJvm.gmk
+include lib/CompileDtracePostJvm.gmk
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/hotspot/makefiles/lib/JvmFeatures.gmk b/hotspot/makefiles/lib/JvmFeatures.gmk
new file mode 100644
index 0000000..40a3247
--- /dev/null
+++ b/hotspot/makefiles/lib/JvmFeatures.gmk
@@ -0,0 +1,144 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+$(eval $(call IncludeCustomExtension, hotspot, lib/JvmFeatures.gmk))
+
+################################################################################
+# Setup CFLAGS and EXCLUDES for the libjvm compilation, depending on which
+# jvm features are selected for this jvm variant.
+
+ifeq ($(call check-jvm-feature, compiler1), true)
+ JVM_CFLAGS_FEATURES += -DCOMPILER1
+else
+ JVM_EXCLUDE_PATTERNS += c1_
+endif
+
+ifeq ($(call check-jvm-feature, compiler2), true)
+ JVM_CFLAGS_FEATURES += -DCOMPILER2
+ JVM_SRC_DIRS += $(JVM_VARIANT_OUTPUTDIR)/gensrc/adfiles
+else
+ JVM_EXCLUDES += opto libadt
+ JVM_EXCLUDE_FILES += bcEscapeAnalyzer.cpp ciTypeFlow.cpp
+ JVM_EXCLUDE_PATTERNS += c2_ runtime_
+endif
+
+ifeq ($(call check-jvm-feature, zero), true)
+ JVM_CFLAGS_FEATURES += -DZERO -DCC_INTERP -DZERO_LIBARCH='"$(OPENJDK_TARGET_CPU_LEGACY_LIB)"' $(LIBFFI_CFLAGS)
+ JVM_LIBS_FEATURES += $(LIBFFI_LIBS)
+endif
+
+ifeq ($(call check-jvm-feature, shark), true)
+ JVM_CFLAGS_FEATURES += -DSHARK $(LLVM_CFLAGS)
+ JVM_LDFLAGS_FEATURES += $(LLVM_LDFLAGS)
+ JVM_LIBS_FEATURES += $(LLVM_LIBS)
+else
+ JVM_EXCLUDES += shark
+endif
+
+ifeq ($(call check-jvm-feature, minimal), true)
+ JVM_CFLAGS_FEATURES += -DMINIMAL_JVM -DVMTYPE=\"Minimal\"
+endif
+
+ifeq ($(call check-jvm-feature, dtrace), true)
+ JVM_CFLAGS_FEATURES += -DDTRACE_ENABLED
+endif
+
+ifeq ($(call check-jvm-feature, static-build), true)
+ JVM_CFLAGS_FEATURES += -DSTATIC_BUILD=1
+endif
+
+ifneq ($(call check-jvm-feature, jvmti), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_JVMTI=0
+ JVM_EXCLUDE_FILES += 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
+
+ifneq ($(call check-jvm-feature, jvmci), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_JVMCI=0
+ JVM_EXCLUDES += jvmci
+ JVM_EXCLUDE_FILES += jvmciCodeInstaller_$(HOTSPOT_TARGET_CPU_ARCH).cpp
+endif
+
+ifneq ($(call check-jvm-feature, fprof), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_FPROF=0
+ JVM_EXCLUDE_FILES += fprofiler.cpp
+endif
+
+ifneq ($(call check-jvm-feature, vm-structs), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_VM_STRUCTS=0
+ JVM_EXCLUDE_FILES += vmStructs.cpp
+endif
+
+ifneq ($(call check-jvm-feature, jni-check), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_JNI_CHECK=0
+ JVM_EXCLUDE_FILES += jniCheck.cpp
+endif
+
+ifneq ($(call check-jvm-feature, services), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_SERVICES=0
+ JVM_EXCLUDE_FILES += heapDumper.cpp heapInspection.cpp \
+ attachListener_$(HOTSPOT_TARGET_OS).cpp attachListener.cpp
+endif
+
+ifneq ($(call check-jvm-feature, management), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_MANAGEMENT=0
+endif
+
+ifneq ($(call check-jvm-feature, cds), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_CDS=0
+ JVM_EXCLUDE_FILES += \
+ classListParser.cpp \
+ classLoaderExt.cpp \
+ filemap.cpp \
+ metaspaceShared.cpp \
+ metaspaceShared_$(HOTSPOT_TARGET_CPU).cpp \
+ metaspaceShared_$(HOTSPOT_TARGET_CPU_ARCH).cpp \
+ sharedClassUtil.cpp \
+ sharedPathsMiscInfo.cpp \
+ systemDictionaryShared.cpp \
+ #
+endif
+
+ifneq ($(call check-jvm-feature, all-gcs), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_ALL_GCS=0
+ JVM_EXCLUDE_PATTERNS += \
+ cms/ g1/ parallel/
+ JVM_EXCLUDE_FILES += \
+ concurrentGCThread.cpp \
+ plab.cpp
+ JVM_EXCLUDE_FILES += \
+ g1MemoryPool.cpp \
+ psMemoryPool.cpp
+endif
+
+ifneq ($(call check-jvm-feature, nmt), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_NMT=0
+ JVM_EXCLUDE_FILES += \
+ memBaseline.cpp memReporter.cpp mallocTracker.cpp virtualMemoryTracker.cpp nmtCommon.cpp \
+ memTracker.cpp nmtDCmd.cpp mallocSiteTable.cpp
+endif
diff --git a/hotspot/makefiles/lib/JvmMapfile.gmk b/hotspot/makefiles/lib/JvmMapfile.gmk
new file mode 100644
index 0000000..9d7655b
--- /dev/null
+++ b/hotspot/makefiles/lib/JvmMapfile.gmk
@@ -0,0 +1,172 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+$(eval $(call IncludeCustomExtension, hotspot, lib/JvmMapfile.gmk))
+
+################################################################################
+# Combine a list of static symbols
+
+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
+endif
+
+ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-unix
+endif
+
+ifneq ($(wildcard $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-$(OPENJDK_TARGET_OS)), )
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/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
+ endif
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), solaris)
+ ifeq ($(call check-jvm-feature, dtrace), true)
+ # 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
+ else ifeq ($(call check-jvm-feature, compiler1), true)
+ SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/makefiles/symbols/symbols-solaris-dtrace-compiler1
+ endif
+ endif
+endif
+
+################################################################################
+# Create a dynamic list of symbols from the built object files. This is highly
+# platform dependent.
+
+ifeq ($(OPENJDK_TARGET_OS), linux)
+ DUMP_SYMBOLS_CMD := $(NM) --defined-only *.o
+ ifneq ($(FILTER_SYMBOLS_PATTERN), )
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
+ endif
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^_ZTV|^gHotSpotVM|^UseSharedSpaces$$
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|^_ZN9Arguments17SharedArchivePathE$$
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \
+ }'
+
+else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ DUMP_SYMBOLS_CMD := $(NM) -p *.o
+ ifneq ($(FILTER_SYMBOLS_PATTERN), )
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
+ endif
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^__1c.*__vtbl_$$|^gHotSpotVM
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|^UseSharedSpaces$$
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|^__1cJArgumentsRSharedArchivePath_$$
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if ($$2 == "U") next; \
+ if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \
+ }'
+
+else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # nm on macosx prints out "warning: nm: no name list" to stderr for
+ # files without symbols. Hide this, even at the expense of hiding real errors.
+ DUMP_SYMBOLS_CMD := $(NM) -Uj *.o 2> /dev/null
+ ifneq ($(FILTER_SYMBOLS_PATTERN), )
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
+ endif
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^_ZTV|^gHotSpotVM
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \
+ }'
+
+# NOTE: The script is from the old build. It is broken and finds no symbols.
+# The script below might be what was intended, but it failes to link with tons
+# of 'cannot export hidden symbol vtable for X'.
+# '{ if ($$1 ~ /^__ZTV/ || $$1 ~ /^_gHotSpotVM/) print substr($$1, 2) }'
+else ifeq ($(OPENJDK_TARGET_OS), aix)
+ # NOTE: The old build had the solution below. This should to be fixed in
+ # configure instead.
+
+ # 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
+
+ DUMP_SYMBOLS_CMD := $(NM) -X64 -B -C *.o
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if (($$2="d" || $$2="D") && ($$3 ~ /^__vft/ || $$3 ~ /^gHotSpotVM/)) print $$3; \
+ if ($$3 ~ /^UseSharedSpaces$$/) print $$3; \
+ if ($$3 ~ /^SharedArchivePath__9Arguments$$/) print $$3; \
+ }'
+
+else ifeq ($(OPENJDK_TARGET_OS), windows)
+ DUMP_SYMBOLS_CMD := $(DUMPBIN) -symbols *.obj
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if ($$7 ~ /??_7.*@@6B@/ && $$7 !~ /type_info/) print $$7; \
+ }'
+
+else
+ $(error Unknown target OS $(OPENJDK_TARGET_OS) in JvmMapfile.gmk)
+endif
+
+# A more correct solution would be to send BUILD_LIBJVM_ALL_OBJS instead of
+# cd && *.o, but this will result in very long command lines, which is
+# problematic on some platforms.
+$(JVM_OUTPUTDIR)/symbols-objects: $(BUILD_LIBJVM_ALL_OBJS)
+ $(call LogInfo, Generating symbol list from object files)
+ $(CD) $(JVM_OUTPUTDIR)/objs && \
+ $(DUMP_SYMBOLS_CMD) | $(NAWK) $(FILTER_SYMBOLS_AWK_SCRIPT) | $(SORT) -u > $@
+
+SYMBOLS_SRC += $(JVM_OUTPUTDIR)/symbols-objects
+
+################################################################################
+# Now concatenate all symbol lists into a single file and remove comments.
+
+$(JVM_OUTPUTDIR)/symbols: $(SYMBOLS_SRC)
+ $(SED) -e '/^#/d' $^ > $@
+
+################################################################################
+# 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
+ $(AWK) '{ if ($$0 ~ ".") { print " _" $$0 } }' < $^ > $@.tmp
+ else ifeq ($(OPENJDK_TARGET_OS), windows)
+ # On windows, add an 'EXPORTS' header
+ $(ECHO) "EXPORTS" > $@.tmp
+ $(AWK) '{ if ($$0 ~ ".") { print " " $$0 } }' < $^ >> $@.tmp
+ else
+ # Assume standard linker script
+ $(PRINTF) "SUNWprivate_1.1 { \n global: \n" > $@.tmp
+ $(AWK) '{ if ($$0 ~ ".") { print " " $$0 ";" } }' < $^ >> $@.tmp
+ $(PRINTF) " local: \n *; \n }; \n" >> $@.tmp
+ endif
+ $(MV) $@.tmp $@
diff --git a/hotspot/makefiles/lib/JvmOverrideFiles.gmk b/hotspot/makefiles/lib/JvmOverrideFiles.gmk
new file mode 100644
index 0000000..1ffcb74
--- /dev/null
+++ b/hotspot/makefiles/lib/JvmOverrideFiles.gmk
@@ -0,0 +1,168 @@
+#
+# Copyright (c) 2013, 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.
+#
+
+$(eval $(call IncludeCustomExtension, hotspot, lib/JvmOverrideFiles.gmk))
+
+################################################################################
+# This file contains explicit overrides of CFLAGS and/or precompiled header
+# status for individual files on specific platforms.
+
+ifeq ($(TOOLCHAIN_TYPE), gcc)
+ BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := -fno-var-tracking-assignments -O0
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), linux)
+ BUILD_LIBJVM_ostream.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
+
+ ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
+ BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
+ BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
+
+ ifeq ($(TOOLCHAIN_TYPE), clang)
+ JVM_PRECOMPILED_HEADER_EXCLUDE := \
+ sharedRuntimeTrig.cpp \
+ sharedRuntimeTrans.cpp \
+ #
+ endif
+ endif
+
+ ifeq ($(OPENJDK_TARGET_CPU), x86)
+ # Performance measurements show that by compiling GC related code, we could
+ # significantly reduce the GC pause time on 32 bit Linux/Unix platforms by
+ # compiling without the PIC flag (-fPIC on linux).
+ # See 6454213 for more details.
+ ALL_SRC := $(filter %.cpp, $(call CacheFind, $(HOTSPOT_TOPDIR)/src/share/vm))
+ NONPIC_FILTER := $(addsuffix %, $(addprefix $(HOTSPOT_TOPDIR)/src/share/vm/, \
+ memory oops gc))
+ # Due to what looks like a bug in the old build implementation of this, add a
+ # couple of more files that were accidentally matched as substrings of GC related
+ # files.
+ NONPIC_SRC := $(filter $(NONPIC_FILTER), $(ALL_SRC)) globals.cpp location.cpp
+ # Declare variables for each source file that needs the pic flag like this:
+ # BUILD_JVM_<srcfile>_CXXFLAGS := -fno-PIC
+ # This will get implicitly picked up by SetupNativeCompilation below.
+ $(foreach s, $(NONPIC_SRC), $(eval BUILD_LIBJVM_$(notdir $s)_CXXFLAGS := -fno-PIC))
+ endif
+
+else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ ifneq ($(DEBUG_LEVEL), slowdebug)
+ # 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)
+ BUILD_LIBJVM_ciEnv.cpp_CXXFLAGS := \
+ -xinline=no%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_
+ # dtrace cannot handle tail call optimization (6672627, 6693876)
+ BUILD_LIBJVM_jni.cpp_CXXFLAGS := -Qoption ube -O~yz
+ BUILD_LIBJVM_stubGenerator_$(HOTSPOT_TARGET_CPU).cpp_CXXFLAGS := -xspace
+
+ ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ # Temporary until SS10 C++ compiler is fixed
+ BUILD_LIBJVM_generateOptoStub.cpp_CXXFLAGS := -xO2
+ # Temporary util SS12u1 C++ compiler is fixed
+ BUILD_LIBJVM_c1_LinearScan.cpp_CXXFLAGS := -xO2
+ endif
+ endif
+
+ # Need extra inlining to get oop_ps_push_contents functions to perform well enough.
+ ifeq ($(DEBUG_LEVEL),release)
+ BUILD_LIBJVM_psPromotionManager.cpp_CXXFLAGS := -W2,-Ainline:inc=1000
+ endif
+
+ ifeq ($(DEBUG_LEVEL), fastdebug)
+ # this hangs in iropt now (7113504)
+ BUILD_LIBJVM_compileBroker.cpp_CXXFLAGS := -xO2
+
+ # Frame size > 100k if we allow inlining via -g0!
+ BUILD_LIBJVM_bytecodeInterpreter.cpp_CXXFLAGS := +d
+ BUILD_LIBJVM_bytecodeInterpreterWithChecks.cpp_CXXFLAGS := +d
+
+ ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
+ # ube explodes on x86
+ BUILD_LIBJVM_bytecodeInterpreter.cpp_CXXFLAGS += -xO1
+ BUILD_LIBJVM_bytecodeInterpreterWithChecks.cpp_CXXFLAGS += -xO1
+ endif
+
+ endif
+
+else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # The copied fdlibm routines in these files must not be optimized
+ BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ ifeq ($(TOOLCHAIN_TYPE), clang)
+ # NOTE: The old build tested clang version to make sure this workaround
+ # for the clang bug was still needed.
+ BUILD_LIBJVM_loopTransform.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ ifneq ($(DEBUG_LEVEL), slowdebug)
+ BUILD_LIBJVM_unsafe.cpp_CXXFLAGS := -O1
+ endif
+
+ # The following files are compiled at various optimization
+ # levels due to optimization issues encountered at the
+ # 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.
+ JVM_PRECOMPILED_HEADER_EXCLUDE := \
+ sharedRuntimeTrig.cpp \
+ sharedRuntimeTrans.cpp \
+ loopTransform.cpp \
+ unsafe.cpp \
+ jvmciCompilerToVM.cpp \
+ #
+ endif
+
+else ifeq ($(OPENJDK_TARGET_OS), aix)
+ BUILD_LIBJVM_synchronizer.cpp_CXXFLAGS := -qnoinline
+ BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ # 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.
+ BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
+
+ # Disable ELF decoder on AIX (AIX uses XCOFF).
+ JVM_EXCLUDE_PATTERNS += elf
+
+else ifeq ($(OPENJDK_TARGET_OS), windows)
+ JVM_PRECOMPILED_HEADER_EXCLUDE := \
+ bytecodeInterpreter.cpp \
+ bytecodeInterpreterWithChecks.cpp \
+ opcodes.cpp \
+ os_windows.cpp \
+ os_windows_x86.cpp \
+ osThread_windows.cpp \
+ #
+endif
diff --git a/hotspot/makefiles/mapfiles/libjsig/mapfile-vers-solaris b/hotspot/makefiles/mapfiles/libjsig/mapfile-vers-solaris
new file mode 100644
index 0000000..ddb46c0
--- /dev/null
+++ b/hotspot/makefiles/mapfiles/libjsig/mapfile-vers-solaris
@@ -0,0 +1,38 @@
+#
+# 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/makefiles/mapfiles/libjvm_db/mapfile-vers b/hotspot/makefiles/mapfiles/libjvm_db/mapfile-vers
new file mode 100644
index 0000000..9ee418d
--- /dev/null
+++ b/hotspot/makefiles/mapfiles/libjvm_db/mapfile-vers
@@ -0,0 +1,38 @@
+#
+
+#
+# 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/makefiles/mapfiles/libjvm_dtrace/mapfile-vers b/hotspot/makefiles/mapfiles/libjvm_dtrace/mapfile-vers
new file mode 100644
index 0000000..f9aaa19
--- /dev/null
+++ b/hotspot/makefiles/mapfiles/libjvm_dtrace/mapfile-vers
@@ -0,0 +1,37 @@
+#
+
+#
+# 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/makefiles/symbols/symbols-aix b/hotspot/makefiles/symbols/symbols-aix
new file mode 100644
index 0000000..0efd2db
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-aix
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+JVM_handle_linux_signal
+numa_error
+numa_warn
+sysThreadAvailableStackWithSlack
diff --git a/hotspot/makefiles/symbols/symbols-aix-debug b/hotspot/makefiles/symbols/symbols-aix-debug
new file mode 100644
index 0000000..10887ab
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-aix-debug
@@ -0,0 +1,26 @@
+#
+# 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.
+#
+
+JVM_AccessVMBooleanFlag
+JVM_AccessVMIntFlag
+JVM_VMBreakPoint
diff --git a/hotspot/makefiles/symbols/symbols-linux b/hotspot/makefiles/symbols/symbols-linux
new file mode 100644
index 0000000..0efd2db
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-linux
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+JVM_handle_linux_signal
+numa_error
+numa_warn
+sysThreadAvailableStackWithSlack
diff --git a/hotspot/makefiles/symbols/symbols-macosx b/hotspot/makefiles/symbols/symbols-macosx
new file mode 100644
index 0000000..d024356
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-macosx
@@ -0,0 +1,24 @@
+#
+# 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.
+#
+
+JVM_handle_bsd_signal
diff --git a/hotspot/makefiles/symbols/symbols-shared b/hotspot/makefiles/symbols/symbols-shared
new file mode 100644
index 0000000..5d26d10
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-shared
@@ -0,0 +1,35 @@
+#
+# 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.
+#
+
+AsyncGetCallTrace
+jio_fprintf
+jio_printf
+jio_snprintf
+jio_vfprintf
+jio_vsnprintf
+JNI_CreateJavaVM
+JNI_GetCreatedJavaVMs
+JNI_GetDefaultJavaVMInitArgs
+JVM_FindClassFromBootLoader
+JVM_GetVersionInfo
+JVM_InitAgentProperties
diff --git a/hotspot/makefiles/symbols/symbols-solaris b/hotspot/makefiles/symbols/symbols-solaris
new file mode 100644
index 0000000..bc6124f
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-solaris
@@ -0,0 +1,25 @@
+#
+# 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.
+#
+
+JVM_handle_solaris_signal
+sysThreadAvailableStackWithSlack
diff --git a/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler1 b/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler1
new file mode 100644
index 0000000..4ce7d8e
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler1
@@ -0,0 +1,34 @@
+#
+# 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.
+#
+
+__1cGMethodG__vtbl_
+__1cHnmethodG__vtbl_
+__1cICodeBlobG__vtbl_
+__1cIUniverseO_collectedHeap_
+__1cJCodeCacheG_heaps_
+__1cKBufferBlobG__vtbl_
+__1cLRuntimeStubG__vtbl_
+__1cNSafepointBlobG__vtbl_
+__1cSDeoptimizationBlobG__vtbl_
+
+__JvmOffsets
diff --git a/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler2 b/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler2
new file mode 100644
index 0000000..306345e
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-solaris-dtrace-compiler2
@@ -0,0 +1,36 @@
+#
+# 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.
+#
+
+__1cGMethodG__vtbl_
+__1cHnmethodG__vtbl_
+__1cICodeBlobG__vtbl_
+__1cIUniverseO_collectedHeap_
+__1cJCodeCacheG_heaps_
+__1cKBufferBlobG__vtbl_
+__1cLRuntimeStubG__vtbl_
+__1cNSafepointBlobG__vtbl_
+__1cSDeoptimizationBlobG__vtbl_
+__1cNExceptionBlobG__vtbl_
+__1cQUncommonTrapBlobG__vtbl_
+
+__JvmOffsets
diff --git a/hotspot/makefiles/symbols/symbols-unix b/hotspot/makefiles/symbols/symbols-unix
new file mode 100644
index 0000000..5d87671
--- /dev/null
+++ b/hotspot/makefiles/symbols/symbols-unix
@@ -0,0 +1,195 @@
+#
+# 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.
+#
+
+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_ConstantPoolGetMemberRefInfoAt
+JVM_ConstantPoolGetMethodAt
+JVM_ConstantPoolGetMethodAtIfLoaded
+JVM_ConstantPoolGetNameAndTypeRefIndexAt
+JVM_ConstantPoolGetNameAndTypeRefInfoAt
+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_FillStackFrames
+JVM_FindClassFromCaller
+JVM_FindClassFromClass
+JVM_FindLibraryEntry
+JVM_FindLoadedClass
+JVM_FindPrimitiveClass
+JVM_FindSignal
+JVM_FreeMemory
+JVM_GC
+JVM_GetAllThreads
+JVM_GetArrayElement
+JVM_GetArrayLength
+JVM_GetCallerClass
+JVM_GetClassAccessFlags
+JVM_GetClassAnnotations
+JVM_GetClassConstantPool
+JVM_GetClassContext
+JVM_GetClassCPEntriesCount
+JVM_GetClassCPTypes
+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_GetCPClassNameUTF
+JVM_GetCPFieldClassNameUTF
+JVM_GetCPFieldModifiers
+JVM_GetCPFieldNameUTF
+JVM_GetCPFieldSignatureUTF
+JVM_GetCPMethodClassNameUTF
+JVM_GetCPMethodModifiers
+JVM_GetCPMethodNameUTF
+JVM_GetCPMethodSignatureUTF
+JVM_GetDeclaredClasses
+JVM_GetDeclaringClass
+JVM_GetEnclosingMethodInfo
+JVM_GetFieldIxModifiers
+JVM_GetFieldTypeAnnotations
+JVM_GetInheritedAccessControlContext
+JVM_GetInterfaceVersion
+JVM_GetManagement
+JVM_GetMethodIxArgsSize
+JVM_GetMethodIxByteCode
+JVM_GetMethodIxByteCodeLength
+JVM_GetMethodIxExceptionIndexes
+JVM_GetMethodIxExceptionsCount
+JVM_GetMethodIxExceptionTableEntry
+JVM_GetMethodIxExceptionTableLength
+JVM_GetMethodIxLocalsCount
+JVM_GetMethodIxMaxStack
+JVM_GetMethodIxModifiers
+JVM_GetMethodIxNameUTF
+JVM_GetMethodIxSignatureUTF
+JVM_GetMethodParameters
+JVM_GetMethodTypeAnnotations
+JVM_GetNanoTimeAdjustment
+JVM_GetPrimitiveArrayElement
+JVM_GetProtectionDomain
+JVM_GetSimpleBinaryName
+JVM_GetStackAccessControlContext
+JVM_GetStackTraceElements
+JVM_GetSystemPackage
+JVM_GetSystemPackages
+JVM_GetTemporaryDirectory
+JVM_GetVmArguments
+JVM_Halt
+JVM_HoldsLock
+JVM_IHashCode
+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_MaxMemory
+JVM_MaxObjectInspectionAge
+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_SetMethodInfo
+JVM_SetNativeThreadName
+JVM_SetPrimitiveArrayElement
+JVM_SetThreadPriority
+JVM_Sleep
+JVM_StartThread
+JVM_StopThread
+JVM_SupportsCX8
+JVM_SuspendThread
+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