Mercurial > hg > graal-compiler
annotate make/defs.make @ 452:00b023ae2d78
6722113: CMS: Incorrect overflow handling during precleaning of Reference lists
Summary: When we encounter marking stack overflow during precleaning of Reference lists, we were using the overflow list mechanism, which can cause problems on account of mutating the mark word of the header because of conflicts with mutator accesses and updates of that field. Instead we should use the usual mechanism for overflow handling in concurrent phases, namely dirtying of the card on which the overflowed object lies. Since precleaning effectively does a form of discovered list processing, albeit with discovery enabled, we needed to adjust some code to be correct in the face of interleaved processing and discovery.
Reviewed-by: apetrusenko, jcoomes
author | ysr |
---|---|
date | Thu, 20 Nov 2008 12:27:41 -0800 |
parents | 9c2ecc2ffb12 |
children | 354d3184f6b2 7fbf850d87b7 |
rev | line source |
---|---|
0 | 1 # |
196 | 2 # Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved. |
0 | 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 # CA 95054 USA or visit www.sun.com if you need additional information or | |
21 # have any questions. | |
22 # | |
23 # | |
24 | |
25 # The common definitions for hotspot builds. | |
26 | |
27 # Default to verbose build logs (show all compile lines): | |
28 MAKE_VERBOSE=y | |
29 | |
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 | |
42 | |
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 | |
52 | |
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 | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
60 HS_MAKE_DIR=$(GAMMADIR)/make |
0 | 61 HS_BUILD_DIR=$(GAMMADIR)/build |
62 | |
63 ifeq ($(USER),) | |
64 USER=$(USERNAME) | |
65 endif | |
66 | |
67 # hotspot version definitions | |
68 include $(GAMMADIR)/make/hotspot_version | |
69 | |
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 | |
92 | |
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 | |
98 | |
99 ifndef HOTSPOT_RELEASE_VERSION | |
100 HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER) | |
101 endif | |
102 | |
103 ifdef HOTSPOT_BUILD_VERSION | |
104 # specified in command line (PRT build) | |
105 else | |
106 ifdef JPRT_BUILD_VERSION | |
107 # JPR build | |
108 HOTSPOT_BUILD_VERSION=$(JPRT_BUILD_VERSION) | |
109 else | |
110 ifdef COOKED_BUILD_NUMBER | |
111 # JRE build | |
112 HOTSPOT_BUILD_VERSION= | |
113 else | |
114 HOTSPOT_BUILD_VERSION=internal | |
115 endif | |
116 endif | |
117 endif | |
118 | |
119 # Windows should have OS predefined | |
120 ifeq ($(OS),) | |
121 OS := $(shell uname -s) | |
122 HOST := $(shell uname -n) | |
123 endif | |
124 | |
125 # If not SunOS and not Linux, assume Windows | |
126 ifneq ($(OS), Linux) | |
127 ifneq ($(OS), SunOS) | |
128 OSNAME=windows | |
129 else | |
130 OSNAME=solaris | |
131 endif | |
132 else | |
133 OSNAME=linux | |
134 endif | |
135 | |
136 # Determinations of default make arguments and platform specific settings | |
137 MAKE_ARGS= | |
138 | |
139 # ARCH_DATA_MODEL==64 is equivalent to LP64=1 | |
140 ifeq ($(ARCH_DATA_MODEL), 64) | |
141 ifndef LP64 | |
142 LP64 := 1 | |
143 endif | |
144 endif | |
145 | |
146 # Defaults set for product build | |
147 EXPORT_SUBDIR= | |
148 | |
149 # Change default /java path if requested | |
150 ifneq ($(ALT_SLASH_JAVA),) | |
151 SLASH_JAVA=$(ALT_SLASH_JAVA) | |
152 endif | |
153 | |
154 # Default OUTPUTDIR | |
155 OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME) | |
156 ifneq ($(ALT_OUTPUTDIR),) | |
157 OUTPUTDIR=$(ALT_OUTPUTDIR) | |
158 endif | |
159 | |
160 # Find latest promoted JDK area | |
161 JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM) | |
162 ifneq ($(ALT_JDK_IMPORT_PATH),) | |
163 JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH) | |
164 endif | |
165 | |
166 # Find JDK used for javac compiles | |
167 BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM) | |
168 ifneq ($(ALT_BOOTDIR),) | |
169 BOOTDIR=$(ALT_BOOTDIR) | |
170 endif | |
171 | |
172 # The platform dependent defs.make defines platform specific variable such | |
173 # as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined. | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
174 include $(GAMMADIR)/make/$(OSNAME)/makefiles/defs.make |
0 | 175 |
176 # We are trying to put platform specific defintions | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
177 # files to make/$(OSNAME)/makefiles dictory. However |
0 | 178 # some definitions are common for both linux and solaris, |
179 # so we put them here. | |
180 ifneq ($(OSNAME),windows) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
181 ABS_OUTPUTDIR := $(shell mkdir -p $(OUTPUTDIR); $(CD) $(OUTPUTDIR); $(PWD)) |
0 | 182 ABS_BOOTDIR := $(shell $(CD) $(BOOTDIR); $(PWD)) |
183 ABS_GAMMADIR := $(shell $(CD) $(GAMMADIR); $(PWD)) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
184 ABS_OS_MAKEFILE := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME); $(PWD))/Makefile |
0 | 185 |
186 # uname, HotSpot source directory, build directory and JDK use different names | |
187 # for CPU architectures. | |
188 # ARCH - uname output | |
189 # SRCARCH - where to find HotSpot cpu and os_cpu source files | |
190 # BUILDARCH - build directory | |
191 # LIBARCH - directory name in JDK/JRE | |
192 | |
193 # Use uname output for SRCARCH, but deal with platform differences. If ARCH | |
194 # is not explicitly listed below, it is treated as x86. | |
195 SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH))) | |
196 ARCH/ = x86 | |
197 ARCH/sparc = sparc | |
198 ARCH/sparc64= sparc | |
199 ARCH/ia64 = ia64 | |
200 ARCH/amd64 = x86 | |
201 ARCH/x86_64 = x86 | |
202 | |
203 # BUILDARCH is usually the same as SRCARCH, except for sparcv9 | |
204 BUILDARCH = $(SRCARCH) | |
205 ifeq ($(BUILDARCH), x86) | |
206 ifdef LP64 | |
207 BUILDARCH = amd64 | |
208 else | |
209 BUILDARCH = i486 | |
210 endif | |
211 endif | |
212 ifeq ($(BUILDARCH), sparc) | |
213 ifdef LP64 | |
214 BUILDARCH = sparcv9 | |
215 endif | |
216 endif | |
217 | |
218 # LIBARCH is 1:1 mapping from BUILDARCH | |
219 LIBARCH = $(LIBARCH/$(BUILDARCH)) | |
220 LIBARCH/i486 = i386 | |
221 LIBARCH/amd64 = amd64 | |
222 LIBARCH/sparc = sparc | |
223 LIBARCH/sparcv9 = sparcv9 | |
224 LIBARCH/ia64 = ia64 | |
225 | |
226 LP64_ARCH = sparcv9 amd64 ia64 | |
227 endif | |
228 | |
229 # Required make macro settings for all platforms | |
230 MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR) | |
228
f232d7d67023
6717128: Using relative path for ALT_OUTPUTDIR does not work properly
xlu
parents:
198
diff
changeset
|
231 MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR) |
0 | 232 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR) |
233 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE) | |
234 MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) | |
235 MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) | |
236 | |
237 # Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile | |
238 # to overwrite the default definition since OS specific Makefile also | |
239 # includes this make/defs.make file. | |
240 MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) | |
241 | |
242 # Select name of export directory | |
243 EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR) | |
244 ifneq ($(ALT_EXPORT_PATH),) | |
245 EXPORT_PATH=$(ALT_EXPORT_PATH) | |
246 endif | |
247 | |
248 # Default jdk image if one is created for you with create_jdk | |
249 JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM) | |
250 | |
251 # Various export sub directories | |
252 EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include | |
253 EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs | |
254 EXPORT_LIB_DIR = $(EXPORT_PATH)/lib | |
255 EXPORT_JRE_DIR = $(EXPORT_PATH)/jre | |
256 EXPORT_JRE_BIN_DIR = $(EXPORT_JRE_DIR)/bin | |
257 EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib | |
258 EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH) | |
259 | |
260 # Common export list of files | |
261 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h | |
262 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h | |
263 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h | |
264 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h |