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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 # include "incls/_precompiled.incl"
a61af66fc99e Initial load
duke
parents:
diff changeset
26 # include "incls/_vm_version.cpp.incl"
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
a61af66fc99e Initial load
duke
parents:
diff changeset
29 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
a61af66fc99e Initial load
duke
parents:
diff changeset
30 bool Abstract_VM_Version::_supports_cx8 = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
31 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U;
a61af66fc99e Initial load
duke
parents:
diff changeset
32
a61af66fc99e Initial load
duke
parents:
diff changeset
33 #ifndef HOTSPOT_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
34 #error HOTSPOT_RELEASE_VERSION must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
35 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
36 #ifndef JRE_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
37 #error JRE_RELEASE_VERSION must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
38 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
39 #ifndef HOTSPOT_BUILD_TARGET
a61af66fc99e Initial load
duke
parents:
diff changeset
40 #error HOTSPOT_BUILD_TARGET must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
41 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
42
a61af66fc99e Initial load
duke
parents:
diff changeset
43 #ifdef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
44 #define VM_RELEASE HOTSPOT_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
45 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
46 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
a61af66fc99e Initial load
duke
parents:
diff changeset
47 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
48
a61af66fc99e Initial load
duke
parents:
diff changeset
49 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
50 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>]
a61af66fc99e Initial load
duke
parents:
diff changeset
51 int Abstract_VM_Version::_vm_major_version = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
52 int Abstract_VM_Version::_vm_minor_version = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
53 int Abstract_VM_Version::_vm_build_number = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
57
a61af66fc99e Initial load
duke
parents:
diff changeset
58 void Abstract_VM_Version::initialize() {
a61af66fc99e Initial load
duke
parents:
diff changeset
59 if (_initialized) {
a61af66fc99e Initial load
duke
parents:
diff changeset
60 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
61 }
a61af66fc99e Initial load
duke
parents:
diff changeset
62 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION);
a61af66fc99e Initial load
duke
parents:
diff changeset
63
a61af66fc99e Initial load
duke
parents:
diff changeset
64 // Expecting the next vm_version format:
a61af66fc99e Initial load
duke
parents:
diff changeset
65 // <major_ver>.<minor_ver>-b<nn>[-<identifier>]
a61af66fc99e Initial load
duke
parents:
diff changeset
66 char* vm_major_ver = vm_version;
a61af66fc99e Initial load
duke
parents:
diff changeset
67 assert(isdigit(vm_major_ver[0]),"wrong vm major version number");
a61af66fc99e Initial load
duke
parents:
diff changeset
68 char* vm_minor_ver = strchr(vm_major_ver, '.');
a61af66fc99e Initial load
duke
parents:
diff changeset
69 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number");
a61af66fc99e Initial load
duke
parents:
diff changeset
70 vm_minor_ver[0] = '\0'; // terminate vm_major_ver
a61af66fc99e Initial load
duke
parents:
diff changeset
71 vm_minor_ver += 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
72 char* vm_build_num = strchr(vm_minor_ver, '-');
a61af66fc99e Initial load
duke
parents:
diff changeset
73 assert(vm_build_num != NULL && vm_build_num[1] == 'b' && isdigit(vm_build_num[2]),"wrong vm build number");
a61af66fc99e Initial load
duke
parents:
diff changeset
74 vm_build_num[0] = '\0'; // terminate vm_minor_ver
a61af66fc99e Initial load
duke
parents:
diff changeset
75 vm_build_num += 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77 _vm_major_version = atoi(vm_major_ver);
a61af66fc99e Initial load
duke
parents:
diff changeset
78 _vm_minor_version = atoi(vm_minor_ver);
a61af66fc99e Initial load
duke
parents:
diff changeset
79 _vm_build_number = atoi(vm_build_num);
a61af66fc99e Initial load
duke
parents:
diff changeset
80
a61af66fc99e Initial load
duke
parents:
diff changeset
81 os::free(vm_version);
a61af66fc99e Initial load
duke
parents:
diff changeset
82 _initialized = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
83 }
a61af66fc99e Initial load
duke
parents:
diff changeset
84
a61af66fc99e Initial load
duke
parents:
diff changeset
85 #if defined(_LP64)
a61af66fc99e Initial load
duke
parents:
diff changeset
86 #define VMLP "64-Bit "
a61af66fc99e Initial load
duke
parents:
diff changeset
87 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
88 #define VMLP ""
a61af66fc99e Initial load
duke
parents:
diff changeset
89 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
90
a61af66fc99e Initial load
duke
parents:
diff changeset
91 #ifdef KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
92 #define VMTYPE "Kernel"
a61af66fc99e Initial load
duke
parents:
diff changeset
93 #else // KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
94 #ifdef TIERED
a61af66fc99e Initial load
duke
parents:
diff changeset
95 #define VMTYPE "Server"
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
96 #else // TIERED
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
97 #ifdef ZERO
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
98 #ifdef SHARK
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
99 #define VMTYPE "Shark"
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
100 #else // SHARK
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
101 #define VMTYPE "Zero"
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
102 #endif // SHARK
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
103 #else // ZERO
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
104 #define VMTYPE COMPILER1_PRESENT("Client") \
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
105 COMPILER2_PRESENT("Server")
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
106 #endif // ZERO
0
a61af66fc99e Initial load
duke
parents:
diff changeset
107 #endif // TIERED
a61af66fc99e Initial load
duke
parents:
diff changeset
108 #endif // KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
109
a61af66fc99e Initial load
duke
parents:
diff changeset
110 #ifndef HOTSPOT_VM_DISTRO
a61af66fc99e Initial load
duke
parents:
diff changeset
111 #error HOTSPOT_VM_DISTRO must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
112 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
113 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP VMTYPE " VM"
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 const char* Abstract_VM_Version::vm_name() {
a61af66fc99e Initial load
duke
parents:
diff changeset
116 return VMNAME;
a61af66fc99e Initial load
duke
parents:
diff changeset
117 }
a61af66fc99e Initial load
duke
parents:
diff changeset
118
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 const char* Abstract_VM_Version::vm_vendor() {
a61af66fc99e Initial load
duke
parents:
diff changeset
121 #ifdef VENDOR
a61af66fc99e Initial load
duke
parents:
diff changeset
122 return XSTR(VENDOR);
a61af66fc99e Initial load
duke
parents:
diff changeset
123 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
124 return "Sun Microsystems Inc.";
a61af66fc99e Initial load
duke
parents:
diff changeset
125 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
126 }
a61af66fc99e Initial load
duke
parents:
diff changeset
127
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129 const char* Abstract_VM_Version::vm_info_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
130 switch (Arguments::mode()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
131 case Arguments::_int:
a61af66fc99e Initial load
duke
parents:
diff changeset
132 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
133 case Arguments::_mixed:
a61af66fc99e Initial load
duke
parents:
diff changeset
134 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
135 case Arguments::_comp:
a61af66fc99e Initial load
duke
parents:
diff changeset
136 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
137 };
a61af66fc99e Initial load
duke
parents:
diff changeset
138 ShouldNotReachHere();
a61af66fc99e Initial load
duke
parents:
diff changeset
139 return "";
a61af66fc99e Initial load
duke
parents:
diff changeset
140 }
a61af66fc99e Initial load
duke
parents:
diff changeset
141
a61af66fc99e Initial load
duke
parents:
diff changeset
142 // NOTE: do *not* use stringStream. this function is called by
a61af66fc99e Initial load
duke
parents:
diff changeset
143 // fatal error handler. if the crash is in native thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
144 // stringStream cannot get resource allocated and will SEGV.
a61af66fc99e Initial load
duke
parents:
diff changeset
145 const char* Abstract_VM_Version::vm_release() {
a61af66fc99e Initial load
duke
parents:
diff changeset
146 return VM_RELEASE;
a61af66fc99e Initial load
duke
parents:
diff changeset
147 }
a61af66fc99e Initial load
duke
parents:
diff changeset
148
a61af66fc99e Initial load
duke
parents:
diff changeset
149 #define OS LINUX_ONLY("linux") \
a61af66fc99e Initial load
duke
parents:
diff changeset
150 WINDOWS_ONLY("windows") \
a61af66fc99e Initial load
duke
parents:
diff changeset
151 SOLARIS_ONLY("solaris")
a61af66fc99e Initial load
duke
parents:
diff changeset
152
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
153 #ifdef ZERO
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
154 #define CPU ZERO_LIBARCH
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
155 #else
0
a61af66fc99e Initial load
duke
parents:
diff changeset
156 #define CPU IA32_ONLY("x86") \
a61af66fc99e Initial load
duke
parents:
diff changeset
157 IA64_ONLY("ia64") \
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
161 SPARC_ONLY("sparc")
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
162 #endif // ZERO
0
a61af66fc99e Initial load
duke
parents:
diff changeset
163
a61af66fc99e Initial load
duke
parents:
diff changeset
164 const char *Abstract_VM_Version::vm_platform_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
165 return OS "-" CPU;
a61af66fc99e Initial load
duke
parents:
diff changeset
166 }
a61af66fc99e Initial load
duke
parents:
diff changeset
167
a61af66fc99e Initial load
duke
parents:
diff changeset
168 const char* Abstract_VM_Version::internal_vm_info_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
169 #ifndef HOTSPOT_BUILD_USER
a61af66fc99e Initial load
duke
parents:
diff changeset
170 #define HOTSPOT_BUILD_USER unknown
a61af66fc99e Initial load
duke
parents:
diff changeset
171 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
172
a61af66fc99e Initial load
duke
parents:
diff changeset
173 #ifndef HOTSPOT_BUILD_COMPILER
a61af66fc99e Initial load
duke
parents:
diff changeset
174 #ifdef _MSC_VER
a61af66fc99e Initial load
duke
parents:
diff changeset
175 #if _MSC_VER == 1100
a61af66fc99e Initial load
duke
parents:
diff changeset
176 #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0"
a61af66fc99e Initial load
duke
parents:
diff changeset
177 #elif _MSC_VER == 1200
a61af66fc99e Initial load
duke
parents:
diff changeset
178 #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0"
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
185 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
186 #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER)
a61af66fc99e Initial load
duke
parents:
diff changeset
187 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
188 #elif defined(__SUNPRO_CC)
a61af66fc99e Initial load
duke
parents:
diff changeset
189 #if __SUNPRO_CC == 0x420
a61af66fc99e Initial load
duke
parents:
diff changeset
190 #define HOTSPOT_BUILD_COMPILER "Workshop 4.2"
a61af66fc99e Initial load
duke
parents:
diff changeset
191 #elif __SUNPRO_CC == 0x500
a61af66fc99e Initial load
duke
parents:
diff changeset
192 #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT)
a61af66fc99e Initial load
duke
parents:
diff changeset
193 #elif __SUNPRO_CC == 0x520
a61af66fc99e Initial load
duke
parents:
diff changeset
194 #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT)
a61af66fc99e Initial load
duke
parents:
diff changeset
195 #elif __SUNPRO_CC == 0x580
a61af66fc99e Initial load
duke
parents:
diff changeset
196 #define HOTSPOT_BUILD_COMPILER "Workshop 5.8"
a61af66fc99e Initial load
duke
parents:
diff changeset
197 #elif __SUNPRO_CC == 0x590
a61af66fc99e Initial load
duke
parents:
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
201 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
202 #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC)
a61af66fc99e Initial load
duke
parents:
diff changeset
203 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
204 #elif defined(__GNUC__)
a61af66fc99e Initial load
duke
parents:
diff changeset
205 #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__
a61af66fc99e Initial load
duke
parents:
diff changeset
206 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
207 #define HOTSPOT_BUILD_COMPILER "unknown compiler"
a61af66fc99e Initial load
duke
parents:
diff changeset
208 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
209 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
210
a61af66fc99e Initial load
duke
parents:
diff changeset
211
a61af66fc99e Initial load
duke
parents:
diff changeset
212 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU
a61af66fc99e Initial load
duke
parents:
diff changeset
213 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__
a61af66fc99e Initial load
duke
parents:
diff changeset
214 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
a61af66fc99e Initial load
duke
parents:
diff changeset
215 }
a61af66fc99e Initial load
duke
parents:
diff changeset
216
a61af66fc99e Initial load
duke
parents:
diff changeset
217 unsigned int Abstract_VM_Version::jvm_version() {
a61af66fc99e Initial load
duke
parents:
diff changeset
218 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
a61af66fc99e Initial load
duke
parents:
diff changeset
219 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
a61af66fc99e Initial load
duke
parents:
diff changeset
220 (Abstract_VM_Version::vm_build_number() & 0xFF);
a61af66fc99e Initial load
duke
parents:
diff changeset
221 }
a61af66fc99e Initial load
duke
parents:
diff changeset
222
a61af66fc99e Initial load
duke
parents:
diff changeset
223
a61af66fc99e Initial load
duke
parents:
diff changeset
224 void VM_Version_init() {
a61af66fc99e Initial load
duke
parents:
diff changeset
225 VM_Version::initialize();
a61af66fc99e Initial load
duke
parents:
diff changeset
226
a61af66fc99e Initial load
duke
parents:
diff changeset
227 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
228 if (PrintMiscellaneous && Verbose) {
a61af66fc99e Initial load
duke
parents:
diff changeset
229 os::print_cpu_info(tty);
a61af66fc99e Initial load
duke
parents:
diff changeset
230 }
a61af66fc99e Initial load
duke
parents:
diff changeset
231 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
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 }