Mercurial > hg > truffle
annotate src/share/tools/MakeDeps/WinGammaPlatformVC6.java @ 1716:be3f9c242c9d
6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
Summary: GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode.
Reviewed-by: chrisphi, johnc, poonam
author | ysr |
---|---|
date | Mon, 16 Aug 2010 15:58:42 -0700 |
parents | c18cbe5936b8 |
children | 2d26b0046e0d |
rev | line source |
---|---|
0 | 1 /* |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
2 * Copyright (c) 2005, Oracle and/or its affiliates. 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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
25 import java.io.*; | |
26 import java.util.*; | |
27 | |
28 public class WinGammaPlatformVC6 extends WinGammaPlatform { | |
29 public void writeProjectFile(String projectFileName, String projectName, | |
30 Vector allConfigs) throws IOException { | |
31 Vector allConfigNames = new Vector(); | |
32 | |
33 printWriter = new PrintWriter(new FileWriter(projectFileName)); | |
34 String cfg = ((BuildConfig)allConfigs.get(0)).get("Name"); | |
35 | |
36 printWriter.println("# Microsoft Developer Studio Project File - Name=\"" + projectName + "\" - Package Owner=<4>"); | |
37 printWriter.println("# Microsoft Developer Studio Generated Build File, Format Version 6.00"); | |
38 printWriter.println("# ** DO NOT EDIT **"); | |
39 printWriter.println(""); | |
40 printWriter.println("# TARGTYPE \"Win32 (x86) Dynamic-Link Library\" 0x0102"); | |
41 printWriter.println("CFG=" + cfg); | |
42 printWriter.println(""); | |
43 | |
44 printWriter.println("!MESSAGE This is not a valid makefile. To build this project using NMAKE,"); | |
45 printWriter.println("!MESSAGE use the Export Makefile command and run"); | |
46 printWriter.println("!MESSAGE "); | |
47 printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\"."); | |
48 printWriter.println("!MESSAGE "); | |
49 printWriter.println("!MESSAGE You can specify a configuration when running NMAKE"); | |
50 printWriter.println("!MESSAGE by defining the macro CFG on the command line. For example:"); | |
51 printWriter.println("!MESSAGE "); | |
52 printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\" CFG=\"" + cfg + "\""); | |
53 printWriter.println("!MESSAGE "); | |
54 printWriter.println("!MESSAGE Possible choices for configuration are:"); | |
55 printWriter.println("!MESSAGE "); | |
56 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
57 String name = ((BuildConfig)i.next()).get("Name"); | |
58 printWriter.println("!MESSAGE \""+ name + "\" (based on \"Win32 (x86) Dynamic-Link Library\")"); | |
59 allConfigNames.add(name); | |
60 } | |
61 printWriter.println("!MESSAGE "); | |
62 printWriter.println(""); | |
63 | |
64 printWriter.println("# Begin Project"); | |
65 printWriter.println("# PROP AllowPerConfigDependencies 0"); | |
66 printWriter.println("# PROP Scc_ProjName \"\""); | |
67 printWriter.println("# PROP Scc_LocalPath \"\""); | |
68 printWriter.println("CPP=cl.exe"); | |
69 printWriter.println("MTL=midl.exe"); | |
70 printWriter.println("RSC=rc.exe"); | |
71 | |
72 | |
73 String keyword = "!IF"; | |
74 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
75 BuildConfig bcfg = (BuildConfig)i.next(); | |
76 printWriter.println(keyword + " \"$(CFG)\" == \"" + bcfg.get("Name") + "\""); | |
77 writeConfigHeader(bcfg); | |
78 keyword = "!ELSEIF"; | |
79 if (!i.hasNext()) printWriter.println("!ENDIF"); | |
80 } | |
81 | |
82 | |
83 TreeSet sortedFiles = sortFiles(computeAttributedFiles(allConfigs)); | |
84 | |
85 printWriter.println("# Begin Target"); | |
86 | |
87 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
88 printWriter.println("# Name \"" + ((BuildConfig)i.next()).get("Name") + "\""); | |
89 } | |
90 printWriter.println("# Begin Group \"Header Files\""); | |
91 printWriter.println("# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\""); | |
92 | |
93 Iterator i = sortedFiles.iterator(); | |
94 | |
95 while (i.hasNext()) { | |
96 FileInfo fi = (FileInfo)i.next(); | |
97 | |
98 // skip sources | |
99 if (!fi.isHeader()) { | |
100 continue; | |
101 } | |
102 | |
103 printFile(fi, allConfigNames); | |
104 } | |
105 printWriter.println("# End Group"); | |
106 printWriter.println(""); | |
107 | |
108 printWriter.println("# Begin Group \"Source Files\""); | |
109 printWriter.println("# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\""); | |
110 | |
111 i = sortedFiles.iterator(); | |
112 while (i.hasNext()) { | |
113 FileInfo fi = (FileInfo)i.next(); | |
114 | |
115 // skip headers | |
116 if (fi.isHeader()) { | |
117 continue; | |
118 } | |
119 | |
120 printFile(fi, allConfigNames); | |
121 } | |
122 printWriter.println("# End Group"); | |
123 printWriter.println(""); | |
124 | |
125 | |
126 printWriter.println("# Begin Group \"Resource Files\""); | |
127 printWriter.println("# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\""); | |
128 printWriter.println("# End Group"); | |
129 printWriter.println(""); | |
130 printWriter.println("# End Target"); | |
131 | |
132 printWriter.println("# End Project"); | |
133 | |
134 printWriter.close(); | |
135 } | |
136 | |
137 | |
138 void printFile(FileInfo fi, Vector allConfigNames) { | |
139 printWriter.println("# Begin Source File"); | |
140 printWriter.println(""); | |
141 printWriter.println("SOURCE=\"" + fi.full + "\""); | |
142 FileAttribute attr = fi.attr; | |
143 | |
144 if (attr.noPch) { | |
145 printWriter.println("# SUBTRACT CPP /YX /Yc /Yu"); | |
146 } | |
147 | |
148 if (attr.pchRoot) { | |
149 printWriter.println("# ADD CPP /Yc\"incls/_precompiled.incl\""); | |
150 } | |
151 if (attr.configs != null) { | |
152 String keyword = "!IF"; | |
153 for (Iterator j=allConfigNames.iterator(); j.hasNext();) { | |
154 String cfg = (String)j.next(); | |
155 if (!attr.configs.contains(cfg)) { | |
156 printWriter.println(keyword+" \"$(CFG)\" == \"" + cfg +"\""); | |
157 printWriter.println("# PROP BASE Exclude_From_Build 1"); | |
158 printWriter.println("# PROP Exclude_From_Build 1"); | |
159 keyword = "!ELSEIF"; | |
160 } | |
161 } | |
162 printWriter.println("!ENDIF"); | |
163 } | |
164 | |
165 printWriter.println("# End Source File"); | |
166 } | |
167 | |
168 void writeConfigHeader(BuildConfig cfg) { | |
169 printWriter.println("# Begin Special Build Tool"); | |
170 printWriter.println("SOURCE=\"$(InputPath)\""); | |
171 printWriter.println("PreLink_Desc=" + BuildConfig.getFieldString(null, "PrelinkDescription")); | |
172 printWriter.println("PreLink_Cmds=" + | |
173 cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand"))); | |
174 printWriter.println("# End Special Build Tool"); | |
175 printWriter.println(""); | |
176 | |
177 for (Iterator i = cfg.getV("CompilerFlags").iterator(); i.hasNext(); ) { | |
178 printWriter.println("# "+(String)i.next()); | |
179 } | |
180 | |
181 | |
182 printWriter.println("LINK32=link.exe"); | |
183 | |
184 for (Iterator i = cfg.getV("LinkerFlags").iterator(); i.hasNext(); ) { | |
185 printWriter.println("# "+(String)i.next()); | |
186 } | |
187 | |
188 printWriter.println("ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32"); | |
189 printWriter.println("ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32"); | |
190 printWriter.println("ADD BASE RSC /l 0x409 /d \"_DEBUG\""); | |
191 printWriter.println("ADD RSC /l 0x409 /d \"_DEBUG\""); | |
192 printWriter.println("BSC32=bscmake.exe"); | |
193 printWriter.println("ADD BASE BSC32 /nologo"); | |
194 printWriter.println("ADD BSC32 /nologo"); | |
195 printWriter.println(""); | |
196 } | |
197 | |
198 protected String getProjectExt() { | |
199 return ".dsp"; | |
200 } | |
201 } | |
202 | |
203 | |
204 class CompilerInterfaceVC6 extends CompilerInterface { | |
205 Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) { | |
206 Vector rv = new Vector(); | |
207 | |
208 rv.add("PROP BASE Use_MFC 0"); | |
209 rv.add("PROP Use_MFC 0"); | |
210 rv.add("ADD CPP /nologo /MT /W3 /WX /GX /YX /Fr /FD /c"); | |
211 rv.add("PROP BASE Output_Dir \""+outDir+"\""); | |
212 rv.add("PROP Output_Dir \""+outDir+"\""); | |
213 rv.add("PROP BASE Intermediate_Dir \""+outDir+"\""); | |
214 rv.add("PROP Intermediate_Dir \""+outDir+"\""); | |
215 rv.add("PROP BASE Target_Dir \"\""); | |
216 rv.add("PROP Target_Dir \"\""); | |
217 rv.add("ADD BASE CPP "+Util.prefixed_join(" /I ", includes, true)); | |
218 rv.add("ADD CPP "+Util.prefixed_join(" /I ", includes, true)); | |
219 rv.add("ADD BASE CPP "+Util.prefixed_join(" /D ", defines, true)); | |
220 rv.add("ADD CPP "+Util.prefixed_join(" /D ", defines, true)); | |
221 rv.add("ADD CPP /Yu\"incls/_precompiled.incl\""); | |
222 | |
223 return rv; | |
224 } | |
225 | |
226 Vector getBaseLinkerFlags(String outDir, String outDll) { | |
227 Vector rv = new Vector(); | |
228 | |
229 rv.add("PROP Ignore_Export_Lib 0"); | |
230 rv.add("ADD BASE CPP /MD"); | |
231 rv.add("ADD CPP /MD"); | |
232 rv.add("ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib " + | |
233 " advapi32.lib shell32.lib ole32.lib oleaut32.lib winmm.lib"); | |
234 rv.add("ADD LINK32 /out:\""+outDll+"\" "+ | |
235 " /nologo /subsystem:windows /machine:I386" + | |
236 " /nologo /base:\"0x8000000\" /subsystem:windows /dll" + | |
237 " /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+ | |
238 " /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+ | |
239 " /export:jio_vsnprintf "); | |
240 rv.add("SUBTRACT LINK32 /pdb:none /map"); | |
241 | |
242 return rv; | |
243 } | |
244 | |
245 Vector getDebugCompilerFlags(String opt) { | |
246 Vector rv = new Vector(); | |
247 | |
248 rv.add("ADD BASE CPP /Gm /Zi /O"+opt); | |
249 | |
250 return rv; | |
251 } | |
252 | |
253 Vector getDebugLinkerFlags() { | |
254 Vector rv = new Vector(); | |
255 | |
256 rv.add("PROP BASE Use_Debug_Libraries 1"); | |
257 rv.add("PROP Use_Debug_Libraries 1"); | |
258 rv.add("ADD LINK32 /debug"); | |
259 | |
260 return rv; | |
261 } | |
262 | |
263 Vector getProductCompilerFlags() { | |
264 Vector rv = new Vector(); | |
265 | |
266 rv.add("ADD CPP /O"+getOptFlag()); | |
267 | |
268 return rv; | |
269 } | |
270 | |
271 Vector getProductLinkerFlags() { | |
272 Vector rv = new Vector(); | |
273 | |
274 rv.add("PROP BASE Use_Debug_Libraries 0"); | |
275 rv.add("PROP Use_Debug_Libraries 0"); | |
276 | |
277 return rv; | |
278 } | |
279 | |
280 String getOptFlag() { | |
281 return "2"; | |
282 } | |
283 | |
284 String getNoOptFlag() { | |
285 return "d"; | |
286 } | |
287 | |
288 String makeCfgName(String flavourBuild) { | |
289 return "vm - "+ Util.os + " " + flavourBuild; | |
290 } | |
291 } |