Mercurial > hg > truffle
annotate src/share/vm/runtime/vm_version.cpp @ 10246:194f52aa2f23
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Summary: Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded. Changes were also reviewed-by Vitaly Davidovich.
Reviewed-by: tschatzl, jmasa
author | johnc |
---|---|
date | Thu, 09 May 2013 11:16:39 -0700 |
parents | 9960dce2024f |
children | b9a918201d47 9d6c9b0a8f15 0f03ff49c720 |
rev | line source |
---|---|
0 | 1 /* |
7951 | 2 * Copyright (c) 1998, 2013, 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 | |
1972 | 25 #include "precompiled.hpp" |
26 #include "memory/universe.hpp" | |
27 #include "oops/oop.inline.hpp" | |
28 #include "runtime/arguments.hpp" | |
29 #ifdef TARGET_ARCH_x86 | |
30 # include "vm_version_x86.hpp" | |
31 #endif | |
32 #ifdef TARGET_ARCH_sparc | |
33 # include "vm_version_sparc.hpp" | |
34 #endif | |
35 #ifdef TARGET_ARCH_zero | |
36 # include "vm_version_zero.hpp" | |
37 #endif | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
38 #ifdef TARGET_ARCH_arm |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
39 # include "vm_version_arm.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
40 #endif |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
41 #ifdef TARGET_ARCH_ppc |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
42 # include "vm_version_ppc.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
43 #endif |
0 | 44 |
45 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release(); | |
46 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string(); | |
47 bool Abstract_VM_Version::_supports_cx8 = false; | |
6795
7eca5de9e0b6
7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents:
4890
diff
changeset
|
48 bool Abstract_VM_Version::_supports_atomic_getset4 = false; |
7eca5de9e0b6
7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents:
4890
diff
changeset
|
49 bool Abstract_VM_Version::_supports_atomic_getset8 = false; |
7eca5de9e0b6
7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents:
4890
diff
changeset
|
50 bool Abstract_VM_Version::_supports_atomic_getadd4 = false; |
7eca5de9e0b6
7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents:
4890
diff
changeset
|
51 bool Abstract_VM_Version::_supports_atomic_getadd8 = false; |
0 | 52 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U; |
3854 | 53 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0; |
0 | 54 |
55 #ifndef HOTSPOT_RELEASE_VERSION | |
56 #error HOTSPOT_RELEASE_VERSION must be defined | |
57 #endif | |
58 #ifndef JRE_RELEASE_VERSION | |
59 #error JRE_RELEASE_VERSION must be defined | |
60 #endif | |
61 #ifndef HOTSPOT_BUILD_TARGET | |
62 #error HOTSPOT_BUILD_TARGET must be defined | |
63 #endif | |
64 | |
65 #ifdef PRODUCT | |
66 #define VM_RELEASE HOTSPOT_RELEASE_VERSION | |
67 #else | |
68 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET | |
69 #endif | |
70 | |
71 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention | |
72 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>] | |
73 int Abstract_VM_Version::_vm_major_version = 0; | |
74 int Abstract_VM_Version::_vm_minor_version = 0; | |
75 int Abstract_VM_Version::_vm_build_number = 0; | |
76 bool Abstract_VM_Version::_initialized = false; | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
77 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
|
78 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false; |
0 | 79 |
80 void Abstract_VM_Version::initialize() { | |
81 if (_initialized) { | |
82 return; | |
83 } | |
84 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION); | |
85 | |
86 // Expecting the next vm_version format: | |
87 // <major_ver>.<minor_ver>-b<nn>[-<identifier>] | |
88 char* vm_major_ver = vm_version; | |
89 assert(isdigit(vm_major_ver[0]),"wrong vm major version number"); | |
90 char* vm_minor_ver = strchr(vm_major_ver, '.'); | |
91 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number"); | |
92 vm_minor_ver[0] = '\0'; // terminate vm_major_ver | |
93 vm_minor_ver += 1; | |
94 char* vm_build_num = strchr(vm_minor_ver, '-'); | |
95 assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number"); | |
96 vm_build_num[0] = '\0'; // terminate vm_minor_ver | |
97 vm_build_num += 2; | |
98 | |
99 _vm_major_version = atoi(vm_major_ver); | |
100 _vm_minor_version = atoi(vm_minor_ver); | |
101 _vm_build_number = atoi(vm_build_num); | |
102 | |
103 os::free(vm_version); | |
104 _initialized = true; | |
105 } | |
106 | |
107 #if defined(_LP64) | |
108 #define VMLP "64-Bit " | |
109 #else | |
110 #define VMLP "" | |
111 #endif | |
112 | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
113 #ifndef VMTYPE |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
114 #ifdef TIERED |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
115 #define VMTYPE "Server" |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
116 #else // TIERED |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
117 #ifdef ZERO |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
118 #ifdef SHARK |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
119 #define VMTYPE "Shark" |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
120 #else // SHARK |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
121 #define VMTYPE "Zero" |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
122 #endif // SHARK |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
123 #else // ZERO |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
124 #define VMTYPE COMPILER1_PRESENT("Client") \ |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
125 COMPILER2_PRESENT("Server") |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
126 #endif // ZERO |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
127 #endif // TIERED |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6795
diff
changeset
|
128 #endif |
0 | 129 |
130 #ifndef HOTSPOT_VM_DISTRO | |
131 #error HOTSPOT_VM_DISTRO must be defined | |
132 #endif | |
4005
2ef3386478e6
7096278: Update the VM name to indicate it is an embedded build
dholmes
parents:
3960
diff
changeset
|
133 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP EMBEDDED_ONLY("Embedded ") VMTYPE " VM" |
0 | 134 |
135 const char* Abstract_VM_Version::vm_name() { | |
136 return VMNAME; | |
137 } | |
138 | |
139 | |
140 const char* Abstract_VM_Version::vm_vendor() { | |
141 #ifdef VENDOR | |
142 return XSTR(VENDOR); | |
143 #else | |
1800 | 144 return JDK_Version::is_gte_jdk17x_version() ? |
145 "Oracle Corporation" : "Sun Microsystems Inc."; | |
0 | 146 #endif |
147 } | |
148 | |
149 | |
150 const char* Abstract_VM_Version::vm_info_string() { | |
151 switch (Arguments::mode()) { | |
152 case Arguments::_int: | |
153 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode"; | |
154 case Arguments::_mixed: | |
155 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode"; | |
156 case Arguments::_comp: | |
157 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode"; | |
158 }; | |
159 ShouldNotReachHere(); | |
160 return ""; | |
161 } | |
162 | |
163 // NOTE: do *not* use stringStream. this function is called by | |
164 // fatal error handler. if the crash is in native thread, | |
165 // stringStream cannot get resource allocated and will SEGV. | |
166 const char* Abstract_VM_Version::vm_release() { | |
167 return VM_RELEASE; | |
168 } | |
169 | |
4890
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
170 // NOTE: do *not* use stringStream. this function is called by |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
171 // fatal error handlers. if the crash is in native thread, |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
172 // stringStream cannot get resource allocated and will SEGV. |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
173 const char* Abstract_VM_Version::jre_release_version() { |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
174 return JRE_RELEASE_VERSION; |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
175 } |
c77d473e71f7
7132779: build-infra merge: Enable ccache to work for most developer builds.
ohrstrom
parents:
4005
diff
changeset
|
176 |
0 | 177 #define OS LINUX_ONLY("linux") \ |
178 WINDOWS_ONLY("windows") \ | |
3960 | 179 SOLARIS_ONLY("solaris") \ |
180 BSD_ONLY("bsd") | |
0 | 181 |
1010 | 182 #ifdef ZERO |
183 #define CPU ZERO_LIBARCH | |
184 #else | |
0 | 185 #define CPU IA32_ONLY("x86") \ |
186 IA64_ONLY("ia64") \ | |
187 AMD64_ONLY("amd64") \ | |
1681
126ea7725993
6953477: Increase portability and flexibility of building Hotspot
bobv
parents:
1552
diff
changeset
|
188 ARM_ONLY("arm") \ |
126ea7725993
6953477: Increase portability and flexibility of building Hotspot
bobv
parents:
1552
diff
changeset
|
189 PPC_ONLY("ppc") \ |
0 | 190 SPARC_ONLY("sparc") |
1010 | 191 #endif // ZERO |
0 | 192 |
193 const char *Abstract_VM_Version::vm_platform_string() { | |
194 return OS "-" CPU; | |
195 } | |
196 | |
197 const char* Abstract_VM_Version::internal_vm_info_string() { | |
198 #ifndef HOTSPOT_BUILD_USER | |
199 #define HOTSPOT_BUILD_USER unknown | |
200 #endif | |
201 | |
202 #ifndef HOTSPOT_BUILD_COMPILER | |
203 #ifdef _MSC_VER | |
204 #if _MSC_VER == 1100 | |
205 #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0" | |
206 #elif _MSC_VER == 1200 | |
207 #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0" | |
208 #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
|
209 #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1 (VS2003)" |
0 | 210 #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
|
211 #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
|
212 #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
|
213 #define HOTSPOT_BUILD_COMPILER "MS VC++ 9.0 (VS2008)" |
8757
9960dce2024f
8010116: Abstract_VM_Version::internal_vm_info_string() should recognize VS2010 and VS2012
kmo
parents:
7951
diff
changeset
|
214 #elif _MSC_VER == 1600 |
9960dce2024f
8010116: Abstract_VM_Version::internal_vm_info_string() should recognize VS2010 and VS2012
kmo
parents:
7951
diff
changeset
|
215 #define HOTSPOT_BUILD_COMPILER "MS VC++ 10.0 (VS2010)" |
9960dce2024f
8010116: Abstract_VM_Version::internal_vm_info_string() should recognize VS2010 and VS2012
kmo
parents:
7951
diff
changeset
|
216 #elif _MSC_VER == 1700 |
9960dce2024f
8010116: Abstract_VM_Version::internal_vm_info_string() should recognize VS2010 and VS2012
kmo
parents:
7951
diff
changeset
|
217 #define HOTSPOT_BUILD_COMPILER "MS VC++ 11.0 (VS2012)" |
0 | 218 #else |
219 #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER) | |
220 #endif | |
221 #elif defined(__SUNPRO_CC) | |
222 #if __SUNPRO_CC == 0x420 | |
223 #define HOTSPOT_BUILD_COMPILER "Workshop 4.2" | |
224 #elif __SUNPRO_CC == 0x500 | |
225 #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
226 #elif __SUNPRO_CC == 0x520 | |
227 #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT) | |
228 #elif __SUNPRO_CC == 0x580 | |
229 #define HOTSPOT_BUILD_COMPILER "Workshop 5.8" | |
230 #elif __SUNPRO_CC == 0x590 | |
231 #define HOTSPOT_BUILD_COMPILER "Workshop 5.9" | |
1547
fb1a39993f69
6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents:
1010
diff
changeset
|
232 #elif __SUNPRO_CC == 0x5100 |
fb1a39993f69
6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents:
1010
diff
changeset
|
233 #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1" |
0 | 234 #else |
235 #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC) | |
236 #endif | |
237 #elif defined(__GNUC__) | |
238 #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__ | |
239 #else | |
240 #define HOTSPOT_BUILD_COMPILER "unknown compiler" | |
241 #endif | |
242 #endif | |
243 | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
244 #ifndef FLOAT_ARCH |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
245 #if defined(__SOFTFP__) |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
246 #define FLOAT_ARCH_STR "-sflt" |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
247 #elif defined(E500V2) |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
248 #define FLOAT_ARCH_STR "-e500v2" |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
249 #elif defined(ARM) |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
250 #define FLOAT_ARCH_STR "-vfp" |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
251 #elif defined(PPC) |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
252 #define FLOAT_ARCH_STR "-hflt" |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
253 #else |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
254 #define FLOAT_ARCH_STR "" |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
255 #endif |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
256 #else |
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
257 #define FLOAT_ARCH_STR XSTR(FLOAT_ARCH) |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
1972
diff
changeset
|
258 #endif |
0 | 259 |
7169
6b881a6b0665
8003591: Abstract_VM_Version::internal_vm_info_string needs to stringify FLOAT_ARCH for ease of use
dholmes
parents:
6856
diff
changeset
|
260 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH_STR |
0 | 261 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__ |
262 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER; | |
263 } | |
264 | |
2199
d8a72fbc4be7
7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents:
2192
diff
changeset
|
265 const char *Abstract_VM_Version::vm_build_user() { |
d8a72fbc4be7
7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents:
2192
diff
changeset
|
266 return HOTSPOT_BUILD_USER; |
d8a72fbc4be7
7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents:
2192
diff
changeset
|
267 } |
d8a72fbc4be7
7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents:
2192
diff
changeset
|
268 |
0 | 269 unsigned int Abstract_VM_Version::jvm_version() { |
270 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) | | |
271 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) | | |
272 (Abstract_VM_Version::vm_build_number() & 0xFF); | |
273 } | |
274 | |
275 | |
276 void VM_Version_init() { | |
277 VM_Version::initialize(); | |
278 | |
279 #ifndef PRODUCT | |
280 if (PrintMiscellaneous && Verbose) { | |
281 os::print_cpu_info(tty); | |
282 } | |
283 #endif | |
284 } | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
285 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
286 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
|
287 unsigned int num, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
288 unsigned int den, |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
289 unsigned int switch_pt) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
290 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
291 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
|
292 // 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
|
293 // 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
|
294 // 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
|
295 // 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
|
296 // and a chosen fraction of 5/8 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
297 // 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
|
298 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
|
299 return (ncpus <= switch_pt) ? |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
300 ncpus : |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
301 (switch_pt + ((ncpus - switch_pt) * num) / den); |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
302 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
303 return ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
304 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
305 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
306 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
307 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
|
308 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
|
309 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
310 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
311 |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
312 // 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
|
313 // a global flag. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
314 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
|
315 if (!_parallel_worker_threads_initialized) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
316 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
317 _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
|
318 } else { |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
319 _parallel_worker_threads = ParallelGCThreads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
320 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
321 _parallel_worker_threads_initialized = true; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
322 } |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
323 return _parallel_worker_threads; |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
324 } |