Mercurial > hg > truffle
annotate make/bsd/makefiles/adlc.make @ 20304:a22acf6d7598
8048112: G1 Full GC needs to support the case when the very first region is not available
Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett.
Reviewed-by: brutisso
author | tschatzl |
---|---|
date | Mon, 21 Jul 2014 10:00:31 +0200 |
parents | 55fb97c4c58d |
children | 4ca6dc0799b6 |
rev | line source |
---|---|
3960 | 1 # |
17467
55fb97c4c58d
8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
mikael
parents:
12024
diff
changeset
|
2 # Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. |
3960 | 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 # | |
24 | |
25 # This makefile (adlc.make) is included from the adlc.make in the | |
26 # build directories. | |
27 # It knows how to compile, link, and run the adlc. | |
28 | |
29 include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/rules.make | |
30 | |
31 # ######################################################################### | |
32 | |
33 # OUTDIR must be the same as AD_Dir = $(GENERATED)/adfiles in top.make: | |
34 GENERATED = ../generated | |
35 OUTDIR = $(GENERATED)/adfiles | |
36 | |
37 ARCH = $(Platform_arch) | |
38 OS = $(Platform_os_family) | |
39 | |
40 SOURCE.AD = $(OUTDIR)/$(OS)_$(Platform_arch_model).ad | |
41 | |
4761
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
42 ifeq ("${Platform_arch_model}", "${Platform_arch}") |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
43 SOURCES.AD = \ |
12024 | 44 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) |
4761
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
45 else |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
46 SOURCES.AD = \ |
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
47 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch_model).ad) \ |
12024 | 48 $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(ARCH)/vm/$(Platform_arch).ad) |
4761
65149e74c706
7121648: Use 3-operands SIMD instructions on x86 with AVX
kvn
parents:
4006
diff
changeset
|
49 endif |
3960 | 50 |
51 EXEC = $(OUTDIR)/adlc | |
52 | |
53 # set VPATH so make knows where to look for source files | |
54 Src_Dirs_V += $(GAMMADIR)/src/share/vm/adlc | |
55 VPATH += $(Src_Dirs_V:%=%:) | |
56 | |
57 # set INCLUDES for C preprocessor | |
58 Src_Dirs_I += $(GAMMADIR)/src/share/vm/adlc $(GENERATED) | |
59 INCLUDES += $(Src_Dirs_I:%=-I%) | |
60 | |
61 # set flags for adlc compilation | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
62 CXXFLAGS = $(SYSDEFS) $(INCLUDES) |
3960 | 63 |
64 # Force assertions on. | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
65 CXXFLAGS += -DASSERT |
3960 | 66 |
67 # CFLAGS_WARN holds compiler options to suppress/enable warnings. | |
68 # Compiler warnings are treated as errors | |
4006 | 69 ifneq ($(COMPILER_WARNINGS_FATAL),false) |
10398 | 70 CFLAGS_WARN = $(WARNINGS_ARE_ERRORS) |
4006 | 71 endif |
3960 | 72 CFLAGS += $(CFLAGS_WARN) |
73 | |
74 OBJECTNAMES = \ | |
75 adlparse.o \ | |
76 archDesc.o \ | |
77 arena.o \ | |
78 dfa.o \ | |
79 dict2.o \ | |
80 filebuff.o \ | |
81 forms.o \ | |
82 formsopt.o \ | |
83 formssel.o \ | |
84 main.o \ | |
85 adlc-opcodes.o \ | |
86 output_c.o \ | |
87 output_h.o \ | |
88 | |
89 OBJECTS = $(OBJECTNAMES:%=$(OUTDIR)/%) | |
90 | |
91 GENERATEDNAMES = \ | |
92 ad_$(Platform_arch_model).cpp \ | |
93 ad_$(Platform_arch_model).hpp \ | |
94 ad_$(Platform_arch_model)_clone.cpp \ | |
95 ad_$(Platform_arch_model)_expand.cpp \ | |
96 ad_$(Platform_arch_model)_format.cpp \ | |
97 ad_$(Platform_arch_model)_gen.cpp \ | |
98 ad_$(Platform_arch_model)_misc.cpp \ | |
99 ad_$(Platform_arch_model)_peephole.cpp \ | |
100 ad_$(Platform_arch_model)_pipeline.cpp \ | |
101 adGlobals_$(Platform_arch_model).hpp \ | |
102 dfa_$(Platform_arch_model).cpp \ | |
103 | |
104 GENERATEDFILES = $(GENERATEDNAMES:%=$(OUTDIR)/%) | |
105 | |
106 # ######################################################################### | |
107 | |
108 all: $(EXEC) | |
109 | |
110 $(EXEC) : $(OBJECTS) | |
111 @echo Making adlc | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
112 $(QUIETLY) $(HOST.LINK_NOPROF.CXX) -o $(EXEC) $(OBJECTS) |
3960 | 113 |
114 # Random dependencies: | |
115 $(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp | |
116 | |
117 # The source files refer to ostream.h, which sparcworks calls iostream.h | |
118 $(OBJECTS): ostream.h | |
119 | |
120 ostream.h : | |
121 @echo >$@ '#include <iostream.h>' | |
122 | |
123 dump: | |
124 : OUTDIR=$(OUTDIR) | |
125 : OBJECTS=$(OBJECTS) | |
126 : products = $(GENERATEDFILES) | |
127 | |
128 all: $(GENERATEDFILES) | |
129 | |
130 $(GENERATEDFILES): refresh_adfiles | |
131 | |
132 # Get a unique temporary directory name, so multiple makes can run in parallel. | |
133 # Note that product files are updated via "mv", which is atomic. | |
134 TEMPDIR := $(OUTDIR)/mktmp$(shell echo $$$$) | |
135 | |
136 # Debuggable by default | |
137 CFLAGS += -g | |
138 | |
139 # Pass -D flags into ADLC. | |
140 ADLCFLAGS += $(SYSDEFS) | |
141 | |
142 # Note "+="; it is a hook so flags.make can add more flags, like -g or -DFOO. | |
143 ADLCFLAGS += -q -T | |
144 | |
145 # Normally, debugging is done directly on the ad_<arch>*.cpp files. | |
146 # But -g will put #line directives in those files pointing back to <arch>.ad. | |
147 # Some builds of gcc 3.2 have a bug that gets tickled by the extra #line directives | |
148 # so skip it for 3.2 and ealier. | |
149 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0" | |
150 ADLCFLAGS += -g | |
151 endif | |
152 | |
153 ifdef LP64 | |
154 ADLCFLAGS += -D_LP64 | |
155 else | |
156 ADLCFLAGS += -U_LP64 | |
157 endif | |
158 | |
159 # | |
160 # adlc_updater is a simple sh script, under sccs control. It is | |
161 # used to selectively update generated adlc files. This should | |
162 # provide a nice compilation speed improvement. | |
163 # | |
164 ADLC_UPDATER_DIRECTORY = $(GAMMADIR)/make/$(OS) | |
165 ADLC_UPDATER = adlc_updater | |
166 $(ADLC_UPDATER): $(ADLC_UPDATER_DIRECTORY)/$(ADLC_UPDATER) | |
167 $(QUIETLY) cp $< $@; chmod +x $@ | |
168 | |
169 # This action refreshes all generated adlc files simultaneously. | |
170 # The way it works is this: | |
171 # 1) create a scratch directory to work in. | |
172 # 2) if the current working directory does not have $(ADLC_UPDATER), copy it. | |
173 # 3) run the compiled adlc executable. This will create new adlc files in the scratch directory. | |
174 # 4) call $(ADLC_UPDATER) on each generated adlc file. It will selectively update changed or missing files. | |
175 # 5) If we actually updated any files, echo a notice. | |
176 # | |
177 refresh_adfiles: $(EXEC) $(SOURCE.AD) $(ADLC_UPDATER) | |
178 @rm -rf $(TEMPDIR); mkdir $(TEMPDIR) | |
179 $(QUIETLY) $(EXEC) $(ADLCFLAGS) $(SOURCE.AD) \ | |
180 -c$(TEMPDIR)/ad_$(Platform_arch_model).cpp -h$(TEMPDIR)/ad_$(Platform_arch_model).hpp -a$(TEMPDIR)/dfa_$(Platform_arch_model).cpp -v$(TEMPDIR)/adGlobals_$(Platform_arch_model).hpp \ | |
181 || { rm -rf $(TEMPDIR); exit 1; } | |
182 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR) | |
183 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR) | |
184 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_clone.cpp $(TEMPDIR) $(OUTDIR) | |
185 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_expand.cpp $(TEMPDIR) $(OUTDIR) | |
186 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_format.cpp $(TEMPDIR) $(OUTDIR) | |
187 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_gen.cpp $(TEMPDIR) $(OUTDIR) | |
188 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_misc.cpp $(TEMPDIR) $(OUTDIR) | |
189 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_peephole.cpp $(TEMPDIR) $(OUTDIR) | |
190 $(QUIETLY) ./$(ADLC_UPDATER) ad_$(Platform_arch_model)_pipeline.cpp $(TEMPDIR) $(OUTDIR) | |
191 $(QUIETLY) ./$(ADLC_UPDATER) adGlobals_$(Platform_arch_model).hpp $(TEMPDIR) $(OUTDIR) | |
192 $(QUIETLY) ./$(ADLC_UPDATER) dfa_$(Platform_arch_model).cpp $(TEMPDIR) $(OUTDIR) | |
193 $(QUIETLY) [ -f $(TEMPDIR)/made-change ] \ | |
194 || echo "Rescanned $(SOURCE.AD) but encountered no changes." | |
195 $(QUIETLY) rm -rf $(TEMPDIR) | |
196 | |
197 | |
198 # ######################################################################### | |
199 | |
200 $(SOURCE.AD): $(SOURCES.AD) | |
201 $(QUIETLY) $(PROCESS_AD_FILES) $(SOURCES.AD) > $(SOURCE.AD) | |
202 | |
203 #PROCESS_AD_FILES = cat | |
204 # Pass through #line directives, in case user enables -g option above: | |
205 PROCESS_AD_FILES = awk '{ \ | |
206 if (CUR_FN != FILENAME) { CUR_FN=FILENAME; NR_BASE=NR-1; need_lineno=1 } \ | |
207 if (need_lineno && $$0 !~ /\/\//) \ | |
208 { print "\n\n\#line " (NR-NR_BASE) " \"" FILENAME "\""; need_lineno=0 }; \ | |
209 print }' | |
210 | |
211 $(OUTDIR)/%.o: %.cpp | |
212 @echo Compiling $< | |
213 $(QUIETLY) $(REMOVE_TARGET) | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
214 $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE) |
3960 | 215 |
216 # Some object files are given a prefix, to disambiguate | |
217 # them from objects of the same name built for the VM. | |
218 $(OUTDIR)/adlc-%.o: %.cpp | |
219 @echo Compiling $< | |
220 $(QUIETLY) $(REMOVE_TARGET) | |
4891
719f7007c8e8
7141242: build-infra merge: Rename CPP->CXX and LINK->LD
erikj
parents:
4761
diff
changeset
|
221 $(QUIETLY) $(HOST.COMPILE.CXX) -o $@ $< $(COMPILE_DONE) |
3960 | 222 |
223 # ######################################################################### | |
224 | |
225 clean : | |
226 rm $(OBJECTS) | |
227 | |
228 cleanall : | |
229 rm $(OBJECTS) $(EXEC) | |
230 | |
231 # ######################################################################### | |
232 | |
233 .PHONY: all dump refresh_adfiles clean cleanall |