8217325: Enable inlining of java_lang_Class::oop_size_raw
Reviewed-by: shade, coleenp, rehn, stefank
## Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.# 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.################################################################################## Initial bootstrapping, copied and stripped down from Makefile and Init.gmk################################################################################# In Cygwin, the MAKE variable gets prepended with the current directory if the# make executable is called using a Windows mixed path (c:/cygwin/bin/make.exe).ifneq ($(findstring :, $(MAKE)), ) export MAKE := $(patsubst $(CURDIR)%, %, $(patsubst $(CURDIR)/%, %, $(MAKE)))endif# Locate this Makefileifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))),) makefile_path := $(CURDIR)/$(strip $(lastword $(MAKEFILE_LIST)))else makefile_path := $(lastword $(MAKEFILE_LIST))endifTOPDIR := $(strip $(patsubst %/make/, %, $(dir $(makefile_path))))################################################################################# Functions################################################################################# Setup a required or optional variable, and/or check that it is properly# given.# Note: No spaces are allowed around the arguments.## $1: The name of the variable# $2: The default value, if any, or OPTIONAL (do not provide a default but# do not exit if it is missing)# $3: If NO_CHECK, disable checking for target file/directory existence# If MKDIR, create the default directorydefine SetupVariable ifeq ($$($1), ) ifeq ($2, ) $$(info Error: Prebuilt variable $1 is missing, needed for run-tests-prebuilt) $$(error Cannot continue.) else ifeq ($2, OPTIONAL) ifneq ($$(findstring $$(LOG), info debug trace), ) $$(info Prebuilt variable $1 is not provided) endif else ifneq ($$(findstring $$(LOG), info debug trace), ) $$(info Prebuilt variable $1=$2 (default value)) endif $1:=$2 endif else ifneq ($$(findstring $$(LOG), info debug trace), ) $$(info Prebuilt variable $1=$$($1)) endif endif # If $1 has a value (is not optional), and $3 is not set (to NO_CHECK), # and if wildcard is empty, then complain that the file is missing. ifeq ($3, MKDIR) ifneq ($$(findstring $$(LOG), info debug trace), ) $$(info Creating directory for $1) endif $$(shell mkdir -p $$($1)) else ifneq ($3, NO_CHECK) ifeq ($$(strip $$(if $$($1), , OPTIONAL) $$(wildcard $$($1))), ) $$(info Error: Prebuilt variable $1 points to missing file/directory:) $$(info '$$($1)') $$(error Cannot continue.) endif endifendef# Create an ephemeral spec file## $1: The output file name# $2..$N: The lines to output to the filedefine CreateNewSpec $(if $(strip $(31)), \ $(error Internal makefile error: \ Too many arguments to macro, please update CreateNewSpec in RunTestsPrebuilt.gmk) \ ) \ $(shell $(RM) $1) \ $(foreach i, $(call sequence, 2, 30), \ $(if $(strip $($i)), \ $(call AppendFile, $(strip $($i)), $1) \ ) \ )endef################################################################################# Check input and setup basic buildsystem support################################################################################# Verify that user has given correct additional input.# These variables are absolutely necessary$(eval $(call SetupVariable,OUTPUTDIR,$(TOPDIR)/build/run-test-prebuilt,MKDIR))$(eval $(call SetupVariable,BOOT_JDK))$(eval $(call SetupVariable,JT_HOME))# These can have default values based on the ones above$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols,NO_CHECK))# Provide default values for tools that we need$(eval $(call SetupVariable,MAKE,make,NO_CHECK))$(eval $(call SetupVariable,BASH,bash,NO_CHECK))# Check optional variables$(eval $(call SetupVariable,JIB_JAR,OPTIONAL))# Now that we have verified that we have the required variables available, we# can include the prebuilt spec file ourselves, without an ephemeral spec# wrapper. This is required so we can include MakeBase which is needed for# CreateNewSpec.HAS_SPEC :=include $(TOPDIR)/make/InitSupport.gmk$(eval $(call CheckDeprecatedEnvironment))$(eval $(call CheckInvalidMakeFlags))$(eval $(call ParseLogLevel))SPEC := $(TOPDIR)/make/RunTestsPrebuiltSpec.gmkinclude $(SPEC)include $(TOPDIR)/make/common/MakeBase.gmk################################################################################# Determine what platform we're running on################################################################################UNAME := uname# Get OS name from uname (Cygwin inexplicably adds _NT-x.x)UNAME_OS := $(shell $(UNAME) -s | $(CUT) -f1 -d_)ifeq ($(UNAME_OS), CYGWIN) OPENJDK_TARGET_OS := windows OPENJDK_TARGET_OS_TYPE := windows OPENJDK_TARGET_OS_ENV := windows.cygwinelse OPENJDK_TARGET_OS_TYPE:=unix ifeq ($(UNAME_OS), Linux) OPENJDK_TARGET_OS := linux else ifeq ($(UNAME_OS), Darwin) OPENJDK_TARGET_OS := macosx else ifeq ($(UNAME_OS), SunOS) OPENJDK_TARGET_OS := solaris else OPENJDK_TARGET_OS := $(UNAME_OS) endif OPENJDK_TARGET_OS_ENV := $(OPENJDK_TARGET_OS)endif# Assume little endian unless otherwise specifiedOPENJDK_TARGET_CPU_ENDIAN := littleifeq ($(OPENJDK_TARGET_OS), solaris) # On solaris, use uname -p UNAME_CPU := $(shell $(UNAME) -p) # Assume 64-bit platform OPENJDK_TARGET_CPU_BITS := 64 ifeq ($(UNAME_CPU), i386) OPENJDK_TARGET_CPU := x86_64 else ifeq ($(UNAME_CPU), sparc) OPENJDK_TARGET_CPU := sparcv9 OPENJDK_TARGET_CPU_ENDIAN := big else OPENJDK_TARGET_CPU := $(UNAME_CPU) endifelse # ... all others use uname -m UNAME_CPU := $(shell $(UNAME) -m) ifeq ($(UNAME_CPU), i686) OPENJDK_TARGET_CPU := x86 OPENJDK_TARGET_CPU_BITS := 32 else # Assume all others are 64-bit. We use the same CPU name as uname for # at least x86_64 and aarch64. OPENJDK_TARGET_CPU := $(UNAME_CPU) OPENJDK_TARGET_CPU_BITS := 64 endifendifOPENJDK_TARGET_CPU_ARCH := $(OPENJDK_TARGET_CPU)ifeq ($(OPENJDK_TARGET_CPU), x86_64) OPENJDK_TARGET_CPU_ARCH := x86else ifeq ($(OPENJDK_TARGET_CPU), sparcv9) OPENJDK_TARGET_CPU_ARCH := sparcendififeq ($(OPENJDK_TARGET_OS), windows) ifeq ($(wildcard $(TEST_IMAGE_DIR)/bin/fixpath.exe), ) $(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)') $(error Cannot continue.) endif FIXPATH := $(TEST_IMAGE_DIR)/bin/fixpath.exe -c PATH_SEP:=;else FIXPATH := PATH_SEP:=:endif# Check number of cores and memory in MBifeq ($(OPENJDK_TARGET_OS), linux) NUM_CORES := $(shell $(CAT) /proc/cpuinfo | $(GREP) -c processor) MEMORY_SIZE := $(shell \ $(EXPR) `$(CAT) /proc/meminfo | $(GREP) MemTotal | $(AWK) '{print $$2}'` / 1024 \ )else ifeq ($(OPENJDK_TARGET_OS), macosx) NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu) MEMORY_SIZE := $(shell $(EXPR) `/usr/sbin/sysctl -n hw.memsize` / 1024 / 1024)else ifeq ($(OPENJDK_TARGET_OS), solaris) NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line) MEMORY_SIZE := $(shell \ /usr/sbin/prtconf 2> /dev/null | $(GREP) "^Memory [Ss]ize" | $(AWK) '{print $$3}' \ )else ifeq ($(OPENJDK_TARGET_OS), windows) NUM_CORES := $(NUMBER_OF_PROCESSORS) MEMORY_SIZE := $(shell \ $(EXPR) `wmic computersystem get totalphysicalmemory -value \ | $(GREP) = | $(SED) 's/\\r//g' \ | $(CUT) -d "=" -f 2-` / 1024 / 1024 \ )endififeq ($(NUM_CORES), ) $(warn Could not find number of CPUs, assuming 1) NUM_CORES := 1endififeq ($(MEMORY_SIZE), ) $(warn Could not find memory size, assuming 1024 MB) MEMORY_SIZE := 1024endif# Setup LD for AOT supportifneq ($(DEVKIT_HOME), ) ifeq ($(OPENJDK_TARGET_OS), windows) LD := $(DEVKIT_HOME)/VC/bin/x64/link LIBRARY_PREFIX := SHARED_LIBRARY_SUFFIX := .dll EXE_SUFFIX := .exe else ifeq ($(OPENJDK_TARGET_OS), linux) LD := $(DEVKIT_HOME)/bin/ld LIBRARY_PREFIX := lib SHARED_LIBRARY_SUFFIX := .so EXE_SUFFIX := else ifeq ($(OPENJDK_TARGET_OS), macosx) LD := $(DEVKIT_HOME)/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld LIBRARY_PREFIX := lib SHARED_LIBRARY_SUFFIX := .dylib EXE_SUFFIX := else ifeq ($(OPENJDK_TARGET_OS), solaris) # Prefer system linker for AOT on Solaris. LD := ld LIBRARY_PREFIX := lib SHARED_LIBRARY_SUFFIX := .so EXE_SUFFIX := endifelse LD := ldendif################################################################################# Generate the ephemeral spec file################################################################################# Now we can include additional custom support.# This might define CUSTOM_NEW_SPEC_LINEifneq ($(CUSTOM_MAKE_DIR), ) include $(CUSTOM_MAKE_DIR)/RunTestsPrebuilt.gmkendifNEW_SPEC := $(OUTPUTDIR)/run-test-spec.gmk$(call CreateNewSpec, $(NEW_SPEC), \ # Generated file -- do not edit!, \ SPEC := $(NEW_SPEC), \ TOPDIR := $(TOPDIR), \ OUTPUTDIR := $(OUTPUTDIR), \ BOOT_JDK := $(BOOT_JDK), \ JT_HOME := $(JT_HOME), \ JDK_IMAGE_DIR := $(JDK_IMAGE_DIR), \ TEST_IMAGE_DIR := $(TEST_IMAGE_DIR), \ SYMBOLS_IMAGE_DIR := $(SYMBOLS_IMAGE_DIR), \ MAKE := $(MAKE), \ BASH := $(BASH), \ JIB_JAR := $(JIB_JAR), \ FIXPATH := $(FIXPATH), \ PATH_SEP := $(PATH_SEP), \ OPENJDK_TARGET_OS := $(OPENJDK_TARGET_OS), \ OPENJDK_TARGET_OS_TYPE := $(OPENJDK_TARGET_OS_TYPE), \ OPENJDK_TARGET_OS_ENV := $(OPENJDK_TARGET_OS_ENV), \ OPENJDK_TARGET_CPU := $(OPENJDK_TARGET_CPU), \ OPENJDK_TARGET_CPU_ARCH := $(OPENJDK_TARGET_CPU_ARCH), \ OPENJDK_TARGET_CPU_BITS := $(OPENJDK_TARGET_CPU_BITS), \ OPENJDK_TARGET_CPU_ENDIAN := $(OPENJDK_TARGET_CPU_ENDIAN), \ NUM_CORES := $(NUM_CORES), \ MEMORY_SIZE := $(MEMORY_SIZE), \ LD := $(LD), \ LIBRARY_PREFIX := $(LIBRARY_PREFIX), \ SHARED_LIBRARY_SUFFIX := $(SHARED_LIBRARY_SUFFIX), \ EXE_SUFFIX := $(EXE_SUFFIX), \ include $(TOPDIR)/make/RunTestsPrebuiltSpec.gmk, \ $(CUSTOM_NEW_SPEC_LINE), \)################################################################################# The run-test-prebuilt target################################################################################SPEC := $(NEW_SPEC)default: allrun-test-prebuilt: @$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error @cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -f make/RunTests.gmk run-test \ TEST="$(TEST)"all: run-test-prebuilt.PHONY: default all