Mercurial > hg > truffle
annotate src/share/vm/runtime/vm_version.cpp @ 1721:413ad0331a0c
6977924: Changes for 6975078 produce build error with certain gcc versions
Summary: The changes introduced for 6975078 assign badHeapOopVal to the _allocation field in the ResourceObj class. In 32 bit linux builds with certain versions of gcc this assignment will be flagged as an error while compiling allocation.cpp. In 32 bit builds the constant value badHeapOopVal (which is cast to an intptr_t) is negative. The _allocation field is typed as an unsigned intptr_t and gcc catches this as an error.
Reviewed-by: jcoomes, ysr, phh
author | johnc |
---|---|
date | Wed, 18 Aug 2010 10:59:06 -0700 |
parents | d2ede61b7a12 |
children | 728a287f6c20 |
rev | line source |
---|---|
0 | 1 /* |
1692 | 2 * Copyright (c) 1998, 2010, 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:
1547
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1547
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:
1547
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
25 # include "incls/_precompiled.incl" | |
26 # include "incls/_vm_version.cpp.incl" | |
27 | |
28 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release(); | |
29 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string(); | |
30 bool Abstract_VM_Version::_supports_cx8 = false; | |
31 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; | |
32 | |
33 #ifndef HOTSPOT_RELEASE_VERSION | |
34 #error HOTSPOT_RELEASE_VERSION must be defined | |
35 #endif | |
36 #ifndef JRE_RELEASE_VERSION | |
37 #error JRE_RELEASE_VERSION must be defined | |
38 #endif | |
39 #ifndef HOTSPOT_BUILD_TARGET | |
40 #error HOTSPOT_BUILD_TARGET must be defined | |
41 #endif | |
42 | |
43 #ifdef PRODUCT | |
44 #define VM_RELEASE HOTSPOT_RELEASE_VERSION | |
45 #else | |
46 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET | |
47 #endif | |
48 | |
49 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention | |
50 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>] | |
51 int Abstract_VM_Version::_vm_major_version = 0; | |
52 int Abstract_VM_Version::_vm_minor_version = 0; | |
53 int Abstract_VM_Version::_vm_build_number = 0; | |
54 bool Abstract_VM_Version::_initialized = false; | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
55 int Abstract_VM_Version::_parallel_worker_threads = 0; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
56 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
0 | 57 |
58 void Abstract_VM_Version::initialize() { | |
59 if (_initialized) { | |
60 return; | |
61 } | |
62 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION); | |
63 | |
64 // Expecting the next vm_version format: | |
65 // <major_ver>.<minor_ver>-b<nn>[-<identifier>] | |
66 char* vm_major_ver = vm_version; | |
67 assert(isdigit(vm_major_ver[0]),"wrong vm major version number"); | |
68 char* vm_minor_ver = strchr(vm_major_ver, '.'); | |
69 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number"); | |
70 vm_minor_ver[0] = '\0'; // terminate vm_major_ver | |
71 vm_minor_ver += 1; | |
72 char* vm_build_num = strchr(vm_minor_ver, '-'); | |
73 assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number"); | |
74 vm_build_num[0] = '\0'; // terminate vm_minor_ver | |
75 vm_build_num += 2; | |
76 | |
77 _vm_major_version = atoi(vm_major_ver); | |
78 _vm_minor_version = atoi(vm_minor_ver); | |
79 _vm_build_number = atoi(vm_build_num); | |
80 | |
81 os::free(vm_version); | |
82 _initialized = true; | |
83 } | |
84 | |
85 #if defined(_LP64) | |
86 #define VMLP "64-Bit " | |
87 #else | |
88 #define VMLP "" | |
89 #endif | |
90 | |
91 #ifdef KERNEL | |
92 #define VMTYPE "Kernel" | |
93 #else // KERNEL | |
94 #ifdef TIERED | |
95 #define VMTYPE "Server" | |
1010 | 96 #else // TIERED |
97 #ifdef ZERO | |
1692 | 98 #ifdef SHARK |
99 #define VMTYPE "Shark" | |
100 #else // SHARK | |
1010 | 101 #define VMTYPE "Zero" |
1692 | 102 #endif // SHARK |
1010 | 103 #else // ZERO |
104 #define VMTYPE COMPILER1_PRESENT("Client") \ | |
105 COMPILER2_PRESENT("Server") | |
106 #endif // ZERO | |
0 | 107 #endif // TIERED |
108 #endif // KERNEL | |
109 | |
110 #ifndef HOTSPOT_VM_DISTRO | |
111 #error HOTSPOT_VM_DISTRO must be defined | |
112 #endif | |
113 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP VMTYPE " VM" | |
114 | |
115 const char* Abstract_VM_Version::vm_name() { | |
116 return VMNAME; | |
117 } | |
118 | |
119 | |
120 const char* Abstract_VM_Version::vm_vendor() { | |
121 #ifdef VENDOR | |
122 return XSTR(VENDOR); | |
123 #else | |
124 return "Sun Microsystems Inc."; | |
125 #endif | |
126 } | |
127 | |
128 | |
129 const char* Abstract_VM_Version::vm_info_string() { | |
130 switch (Arguments::mode()) { | |
131 case Arguments::_int: | |
132 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode"; | |
133 case Arguments::_mixed: | |
134 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode"; | |
135 case Arguments::_comp: | |
136 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode"; | |
137 }; | |
138 ShouldNotReachHere(); | |
139 return ""; | |
140 } | |
141 | |
142 // NOTE: do *not* use stringStream. this function is called by | |
143 // fatal error handler. if the crash is in native thread, | |
144 // stringStream cannot get resource allocated and will SEGV. | |
145 const char* Abstract_VM_Version::vm_release() { | |
146 return VM_RELEASE; | |
147 } | |
148 | |
149 #define OS LINUX_ONLY("linux") \ | |
150 WINDOWS_ONLY("windows") \ | |
151 SOLARIS_ONLY("solaris") | |
152 | |
1010 | 153 #ifdef ZERO |
154 #define CPU ZERO_LIBARCH | |
155 #else | |
0 | 156 #define CPU IA32_ONLY("x86") \ |
157 IA64_ONLY("ia64") \ | |
158 AMD64_ONLY("amd64") \ | |
1681
126ea7725993
6953477: Increase portability and flexibility of building Hotspot
bobv
parents:
1552
diff
changeset
|
159 ARM_ONLY("arm") \ |
126ea7725993
6953477: Increase portability and flexibility of building Hotspot
bobv
parents:
1552
diff
changeset
|
160 PPC_ONLY("ppc") \ |
0 | 161 SPARC_ONLY("sparc") |
1010 | 162 #endif // ZERO |
0 | 163 |
164 const char *Abstract_VM_Version::vm_platform_string() { | |
165 return OS "-" CPU; | |
166 } | |
167 | |
168 const char* Abstract_VM_Version::internal_vm_info_string() { | |
169 #ifndef HOTSPOT_BUILD_USER | |
170 #define HOTSPOT_BUILD_USER unknown | |
171 #endif | |
172 | |
173 #ifndef HOTSPOT_BUILD_COMPILER | |
174 #ifdef _MSC_VER | |
175 #if _MSC_VER == 1100 | |
176 #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0" | |
177 #elif _MSC_VER == 1200 | |
178 #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0" | |
179 #elif _MSC_VER == 1310 | |
645
c3a720eefe82
6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents:
196
diff
changeset
|
180 #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1 (VS2003)" |
0 | 181 #elif _MSC_VER == 1400 |
645
c3a720eefe82
6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents:
196
diff
changeset
|
182 #define HOTSPOT_BUILD_COMPILER "MS VC++ 8.0 (VS2005)" |
c3a720eefe82
6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents:
196
diff
changeset
|
183 #elif _MSC_VER == 1500 |
c3a720eefe82
6816308: Changes to allow builds with latest Windows SDK 6.1 on 64bit Windows 2003
kvn
parents:
196
diff
changeset
|
184 #define HOTSPOT_BUILD_COMPILER "MS VC++ 9.0 (VS2008)" |
0 | 185 #else |
186 #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER) | |
187 #endif | |
188 #elif defined(__SUNPRO_CC) | |
189 #if __SUNPRO_CC == 0x420 | |
190 #define HOTSPOT_BUILD_COMPILER "Workshop 4.2" | |
191 #elif __SUNPRO_CC == 0x500 | |
192 #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
193 #elif __SUNPRO_CC == 0x520 | |
194 #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
195 #elif __SUNPRO_CC == 0x580 | |
196 #define HOTSPOT_BUILD_COMPILER "Workshop 5.8" | |
197 #elif __SUNPRO_CC == 0x590 | |
198 #define HOTSPOT_BUILD_COMPILER "Workshop 5.9" | |
1547
fb1a39993f69
6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents:
1010
diff
changeset
|
199 #elif __SUNPRO_CC == 0x5100 |
fb1a39993f69
6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents:
1010
diff
changeset
|
200 #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1" |
0 | 201 #else |
202 #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC) | |
203 #endif | |
204 #elif defined(__GNUC__) | |
205 #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__ | |
206 #else | |
207 #define HOTSPOT_BUILD_COMPILER "unknown compiler" | |
208 #endif | |
209 #endif | |
210 | |
211 | |
212 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU | |
213 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ | |
214 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; | |
215 } | |
216 | |
217 unsigned int Abstract_VM_Version::jvm_version() { | |
218 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | | |
219 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | | |
220 (Abstract_VM_Version::vm_build_number() & 0xFF); | |
221 } | |
222 | |
223 | |
224 void VM_Version_init() { | |
225 VM_Version::initialize(); | |
226 | |
227 #ifndef PRODUCT | |
228 if (PrintMiscellaneous && Verbose) { | |
229 os::print_cpu_info(tty); | |
230 } | |
231 #endif | |
232 } | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
233 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
234 unsigned int Abstract_VM_Version::nof_parallel_worker_threads( |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
235 unsigned int num, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
236 unsigned int den, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
237 unsigned int switch_pt) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
238 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
239 assert(ParallelGCThreads == 0, "Default ParallelGCThreads is not 0"); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
240 // For very large machines, there are diminishing returns |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
241 // for large numbers of worker threads. Instead of |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
242 // hogging the whole system, use a fraction of the workers for every |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
243 // processor after the first 8. For example, on a 72 cpu machine |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
244 // and a chosen fraction of 5/8 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
245 // use 8 + (72 - 8) * (5/8) == 48 worker threads. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
246 unsigned int ncpus = (unsigned int) os::active_processor_count(); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
247 return (ncpus <= switch_pt) ? |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
248 ncpus : |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
249 (switch_pt + ((ncpus - switch_pt) * num) / den); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
250 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
251 return ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
252 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
253 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
254 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
255 unsigned int Abstract_VM_Version::calc_parallel_worker_threads() { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
256 return nof_parallel_worker_threads(5, 8, 8); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
257 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
258 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
259 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
260 // Does not set the _initialized flag since it is |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
261 // a global flag. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
262 unsigned int Abstract_VM_Version::parallel_worker_threads() { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
263 if (!_parallel_worker_threads_initialized) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
264 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
265 _parallel_worker_threads = VM_Version::calc_parallel_worker_threads(); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
266 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
267 _parallel_worker_threads = ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
268 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
269 _parallel_worker_threads_initialized = true; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
270 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
271 return _parallel_worker_threads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
272 } |