make/defs.make

Tue, 25 Jan 2011 17:58:19 -0500

author
tonyp
date
Tue, 25 Jan 2011 17:58:19 -0500
changeset 2493
97ba643ea3ed
parent 2319
c7db7adb83b4
child 2544
b76d12f4ab2d
permissions
-rw-r--r--

7014261: G1: RSet-related failures
Summary: A race between the concurrent cleanup thread and the VM thread while it is processing the "expanded sparse table list" causes both threads to try to free the same sparse table entry and either causes one of the threads to fail or leaves the entry in an inconsistent state. The solution is purge all entries on the expanded list that correspond go regions that are being cleaned up.
Reviewed-by: brutisso, johnc

     1 #
     2 # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.
     8 #
     9 # This code is distributed in the hope that it will be useful, but WITHOUT
    10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12 # version 2 for more details (a copy is included in the LICENSE file that
    13 # accompanied this code).
    14 #
    15 # You should have received a copy of the GNU General Public License version
    16 # 2 along with this work; if not, write to the Free Software Foundation,
    17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18 #
    19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20 # or visit www.oracle.com if you need additional information or have any
    21 # questions.
    22 #  
    23 #
    25 # The common definitions for hotspot builds.
    27 # Default to verbose build logs (show all compile lines):
    28 MAKE_VERBOSE=y
    30 # Make macros for install files or preparing targets
    31 CD=cd
    32 CP=cp
    33 ECHO=echo
    34 GREP=grep
    35 MKDIR=mkdir
    36 MV=mv
    37 PWD=pwd
    38 RM=rm -f
    39 SED=sed
    40 TAR=tar
    41 ZIPEXE=zip
    43 define install-file
    44 @$(MKDIR) -p $(@D)
    45 @$(RM) $@
    46 $(CP) $< $@
    47 endef
    48 define prep-target
    49 @$(MKDIR) -p $(@D)
    50 @$(RM) $@
    51 endef
    53 # Directory paths and user name
    54 # Unless GAMMADIR is set on the command line, search upward from
    55 # the current directory for a parent directory containing "src/share/vm".
    56 # If that fails, look for $GAMMADIR in the environment.
    57 # When the tree of subdirs is built, this setting is stored in each flags.make.
    58 GAMMADIR := $(shell until ([ -d dev ]&&echo $${GAMMADIR:-/GAMMADIR/}) || ([ -d src/share/vm ]&&pwd); do cd ..; done)
    59 HS_SRC_DIR=$(GAMMADIR)/src
    60 HS_MAKE_DIR=$(GAMMADIR)/make
    61 HS_BUILD_DIR=$(GAMMADIR)/build
    63 ifeq ($(USER),)
    64   USER=$(USERNAME)
    65 endif
    67 # hotspot version definitions
    68 include $(GAMMADIR)/make/hotspot_version
    70 # Java versions needed
    71 ifeq ($(PREVIOUS_JDK_VERSION),)
    72   PREVIOUS_JDK_VERSION=$(JDK_PREVIOUS_VERSION)
    73 endif
    74 ifeq ($(JDK_MAJOR_VERSION),)
    75   JDK_MAJOR_VERSION=$(JDK_MAJOR_VER)
    76 endif
    77 ifeq ($(JDK_MINOR_VERSION),)
    78   JDK_MINOR_VERSION=$(JDK_MINOR_VER)
    79 endif
    80 ifeq ($(JDK_MICRO_VERSION),)
    81   JDK_MICRO_VERSION=$(JDK_MICRO_VER)
    82 endif
    83 ifeq ($(JDK_MKTG_VERSION),)
    84   JDK_MKTG_VERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
    85 endif
    86 ifeq ($(JDK_VERSION),)
    87   JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
    88 endif
    89 ifeq ($(FULL_VERSION),)
    90   FULL_VERSION="$(JDK_VERSION)"
    91 endif
    93 # FULL_VERSION is only used to define JRE_RELEASE_VERSION which is used
    94 # as JRE version in VM -Xinternalversion output.
    95 ifndef JRE_RELEASE_VERSION
    96   JRE_RELEASE_VERSION=$(FULL_VERSION)
    97 endif
    99 ifndef HOTSPOT_RELEASE_VERSION
   100   HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)
   101 endif
   103 ifdef HOTSPOT_BUILD_VERSION
   104 # specified in command line
   105 else
   106   ifdef COOKED_BUILD_NUMBER
   107 # JRE build
   108     HOTSPOT_BUILD_VERSION=
   109   else
   110     ifdef USER_RELEASE_SUFFIX
   111       HOTSPOT_BUILD_VERSION=internal-$(USER_RELEASE_SUFFIX)
   112     else
   113       HOTSPOT_BUILD_VERSION=internal
   114     endif
   115   endif
   116 endif
   118 # Windows should have OS predefined
   119 ifeq ($(OS),)
   120   OS   := $(shell uname -s)
   121   HOST := $(shell uname -n)
   122 endif
   124 # If not SunOS and not Linux, assume Windows
   125 ifneq ($(OS), Linux)
   126   ifneq ($(OS), SunOS)
   127     OSNAME=windows
   128   else
   129     OSNAME=solaris
   130   endif
   131 else
   132   OSNAME=linux
   133 endif
   135 # Determinations of default make arguments and platform specific settings
   136 MAKE_ARGS=
   138 # ARCH_DATA_MODEL==64 is equivalent to LP64=1
   139 ifeq ($(ARCH_DATA_MODEL), 64)
   140   ifndef LP64
   141     LP64 := 1
   142   endif
   143 endif
   145 # Defaults set for product build
   146 EXPORT_SUBDIR=
   148 # Change default /java path if requested
   149 ifneq ($(ALT_SLASH_JAVA),)
   150   SLASH_JAVA=$(ALT_SLASH_JAVA)
   151 endif
   153 # Default OUTPUTDIR
   154 OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME)
   155 ifneq ($(ALT_OUTPUTDIR),)
   156   OUTPUTDIR=$(ALT_OUTPUTDIR)
   157 endif
   159 # Find latest promoted JDK area
   160 JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM)
   161 ifneq ($(ALT_JDK_IMPORT_PATH),)
   162   JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH)
   163 endif
   165 # Find JDK used for javac compiles
   166 BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM)
   167 ifneq ($(ALT_BOOTDIR),)
   168   BOOTDIR=$(ALT_BOOTDIR)
   169 endif
   171 # The platform dependent defs.make defines platform specific variable such 
   172 # as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined.
   173 include $(GAMMADIR)/make/$(OSNAME)/makefiles/defs.make
   175 # We are trying to put platform specific defintions
   176 # files to make/$(OSNAME)/makefiles dictory. However
   177 # some definitions are common for both linux and solaris,
   178 # so we put them here.
   179 ifneq ($(OSNAME),windows)
   180   ABS_OUTPUTDIR     := $(shell mkdir -p $(OUTPUTDIR); $(CD) $(OUTPUTDIR); $(PWD))
   181   ABS_BOOTDIR       := $(shell $(CD) $(BOOTDIR); $(PWD))
   182   ABS_GAMMADIR      := $(shell $(CD) $(GAMMADIR); $(PWD))
   183   ABS_OS_MAKEFILE   := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME); $(PWD))/Makefile
   185   # uname, HotSpot source directory, build directory and JDK use different names
   186   # for CPU architectures.
   187   #   ARCH      - uname output
   188   #   SRCARCH   - where to find HotSpot cpu and os_cpu source files
   189   #   BUILDARCH - build directory
   190   #   LIBARCH   - directory name in JDK/JRE
   192   # Use uname output for SRCARCH, but deal with platform differences. If ARCH
   193   # is not explicitly listed below, it is treated as x86. 
   194   SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc zero,$(ARCH)))
   195   ARCH/       = x86
   196   ARCH/sparc  = sparc
   197   ARCH/sparc64= sparc
   198   ARCH/ia64   = ia64
   199   ARCH/amd64  = x86
   200   ARCH/x86_64 = x86
   201   ARCH/ppc64  = ppc
   202   ARCH/ppc    = ppc
   203   ARCH/arm    = arm
   204   ARCH/zero   = zero
   206   # BUILDARCH is usually the same as SRCARCH, except for sparcv9
   207   BUILDARCH = $(SRCARCH)
   208   ifeq ($(BUILDARCH), x86)
   209     ifdef LP64
   210       BUILDARCH = amd64
   211     else
   212       BUILDARCH = i486
   213     endif
   214   endif
   215   ifeq ($(BUILDARCH), sparc)
   216     ifdef LP64
   217       BUILDARCH = sparcv9
   218     endif
   219   endif
   221   # LIBARCH is 1:1 mapping from BUILDARCH
   222   LIBARCH         = $(LIBARCH/$(BUILDARCH))
   223   LIBARCH/i486    = i386
   224   LIBARCH/amd64   = amd64
   225   LIBARCH/sparc   = sparc
   226   LIBARCH/sparcv9 = sparcv9
   227   LIBARCH/ia64    = ia64
   228   LIBARCH/ppc64   = ppc
   229   LIBARCH/ppc     = ppc
   230   LIBARCH/arm     = arm
   231   LIBARCH/zero    = $(ZERO_LIBARCH)
   233   LP64_ARCH = sparcv9 amd64 ia64 zero
   234 endif
   236 # Required make macro settings for all platforms
   237 MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR)
   238 MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR)
   239 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
   240 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
   241 MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION)
   242 MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
   244 # Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile
   245 # to overwrite the default definition since OS specific Makefile also
   246 # includes this make/defs.make file.
   247 MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION)
   249 # Select name of export directory
   250 EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR)
   251 ifneq ($(ALT_EXPORT_PATH),)
   252   EXPORT_PATH=$(ALT_EXPORT_PATH)
   253 endif
   255 # Default jdk image if one is created for you with create_jdk
   256 JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM)
   258 # Various export sub directories
   259 EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include
   260 EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs
   261 EXPORT_LIB_DIR = $(EXPORT_PATH)/lib
   262 EXPORT_JRE_DIR = $(EXPORT_PATH)/jre
   263 EXPORT_JRE_BIN_DIR = $(EXPORT_JRE_DIR)/bin
   264 EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib
   265 EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH)
   267 # Common export list of files
   268 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h
   269 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmticmlr.h
   270 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h
   271 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h
   272 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h

mercurial