annotate src/share/vm/runtime/vm_version.cpp @ 3979:4dfb2df418f2

6484982: G1: process references during evacuation pauses Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate. Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
author johnc
date Thu, 22 Sep 2011 10:57:37 -0700
parents 1af104d6cf99
children f08d439fab8c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
2426
1d1603768966 7010070: Update all 2010 Oracle-changed OpenJDK files to have the proper copyright dates - second pass
trims
parents: 2199
diff changeset
2 * Copyright (c) 1998, 2011, 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
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
25 #include "precompiled.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
26 #include "memory/universe.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
27 #include "oops/oop.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
28 #include "runtime/arguments.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
29 #ifdef TARGET_ARCH_x86
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
30 # include "vm_version_x86.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
31 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
32 #ifdef TARGET_ARCH_sparc
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
33 # include "vm_version_sparc.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
34 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
35 #ifdef TARGET_ARCH_zero
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
36 # include "vm_version_zero.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1800
diff changeset
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
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
a61af66fc99e Initial load
duke
parents:
diff changeset
46 const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
a61af66fc99e Initial load
duke
parents:
diff changeset
47 bool Abstract_VM_Version::_supports_cx8 = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
48 unsigned int Abstract_VM_Version::_logical_processors_per_package = 1U;
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 2426
diff changeset
49 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
50
a61af66fc99e Initial load
duke
parents:
diff changeset
51 #ifndef HOTSPOT_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
52 #error HOTSPOT_RELEASE_VERSION must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
53 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
54 #ifndef JRE_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
55 #error JRE_RELEASE_VERSION must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
56 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
57 #ifndef HOTSPOT_BUILD_TARGET
a61af66fc99e Initial load
duke
parents:
diff changeset
58 #error HOTSPOT_BUILD_TARGET must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
59 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
60
a61af66fc99e Initial load
duke
parents:
diff changeset
61 #ifdef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
62 #define VM_RELEASE HOTSPOT_RELEASE_VERSION
a61af66fc99e Initial load
duke
parents:
diff changeset
63 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
64 #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
a61af66fc99e Initial load
duke
parents:
diff changeset
65 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
66
a61af66fc99e Initial load
duke
parents:
diff changeset
67 // HOTSPOT_RELEASE_VERSION must follow the release version naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
68 // <major_ver>.<minor_ver>-b<nn>[-<identifier>][-<debug_target>]
a61af66fc99e Initial load
duke
parents:
diff changeset
69 int Abstract_VM_Version::_vm_major_version = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
70 int Abstract_VM_Version::_vm_minor_version = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
71 int Abstract_VM_Version::_vm_build_number = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
72 bool Abstract_VM_Version::_initialized = false;
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
73 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
74 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
75
a61af66fc99e Initial load
duke
parents:
diff changeset
76 void Abstract_VM_Version::initialize() {
a61af66fc99e Initial load
duke
parents:
diff changeset
77 if (_initialized) {
a61af66fc99e Initial load
duke
parents:
diff changeset
78 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
79 }
a61af66fc99e Initial load
duke
parents:
diff changeset
80 char* vm_version = os::strdup(HOTSPOT_RELEASE_VERSION);
a61af66fc99e Initial load
duke
parents:
diff changeset
81
a61af66fc99e Initial load
duke
parents:
diff changeset
82 // Expecting the next vm_version format:
a61af66fc99e Initial load
duke
parents:
diff changeset
83 // <major_ver>.<minor_ver>-b<nn>[-<identifier>]
a61af66fc99e Initial load
duke
parents:
diff changeset
84 char* vm_major_ver = vm_version;
a61af66fc99e Initial load
duke
parents:
diff changeset
85 assert(isdigit(vm_major_ver[0]),"wrong vm major version number");
a61af66fc99e Initial load
duke
parents:
diff changeset
86 char* vm_minor_ver = strchr(vm_major_ver, '.');
a61af66fc99e Initial load
duke
parents:
diff changeset
87 assert(vm_minor_ver != NULL && isdigit(vm_minor_ver[1]),"wrong vm minor version number");
a61af66fc99e Initial load
duke
parents:
diff changeset
88 vm_minor_ver[0] = '\0'; // terminate vm_major_ver
a61af66fc99e Initial load
duke
parents:
diff changeset
89 vm_minor_ver += 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
90 char* vm_build_num = strchr(vm_minor_ver, '-');
a61af66fc99e Initial load
duke
parents:
diff changeset
91 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
92 vm_build_num[0] = '\0'; // terminate vm_minor_ver
a61af66fc99e Initial load
duke
parents:
diff changeset
93 vm_build_num += 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
94
a61af66fc99e Initial load
duke
parents:
diff changeset
95 _vm_major_version = atoi(vm_major_ver);
a61af66fc99e Initial load
duke
parents:
diff changeset
96 _vm_minor_version = atoi(vm_minor_ver);
a61af66fc99e Initial load
duke
parents:
diff changeset
97 _vm_build_number = atoi(vm_build_num);
a61af66fc99e Initial load
duke
parents:
diff changeset
98
a61af66fc99e Initial load
duke
parents:
diff changeset
99 os::free(vm_version);
a61af66fc99e Initial load
duke
parents:
diff changeset
100 _initialized = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
101 }
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 #if defined(_LP64)
a61af66fc99e Initial load
duke
parents:
diff changeset
104 #define VMLP "64-Bit "
a61af66fc99e Initial load
duke
parents:
diff changeset
105 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
106 #define VMLP ""
a61af66fc99e Initial load
duke
parents:
diff changeset
107 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
108
a61af66fc99e Initial load
duke
parents:
diff changeset
109 #ifdef KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
110 #define VMTYPE "Kernel"
a61af66fc99e Initial load
duke
parents:
diff changeset
111 #else // KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
112 #ifdef TIERED
a61af66fc99e Initial load
duke
parents:
diff changeset
113 #define VMTYPE "Server"
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
114 #else // TIERED
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
115 #ifdef ZERO
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
116 #ifdef SHARK
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
117 #define VMTYPE "Shark"
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
118 #else // SHARK
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
119 #define VMTYPE "Zero"
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1681
diff changeset
120 #endif // SHARK
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
121 #else // ZERO
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
122 #define VMTYPE COMPILER1_PRESENT("Client") \
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
123 COMPILER2_PRESENT("Server")
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
124 #endif // ZERO
0
a61af66fc99e Initial load
duke
parents:
diff changeset
125 #endif // TIERED
a61af66fc99e Initial load
duke
parents:
diff changeset
126 #endif // KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
127
a61af66fc99e Initial load
duke
parents:
diff changeset
128 #ifndef HOTSPOT_VM_DISTRO
a61af66fc99e Initial load
duke
parents:
diff changeset
129 #error HOTSPOT_VM_DISTRO must be defined
a61af66fc99e Initial load
duke
parents:
diff changeset
130 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
131 #define VMNAME HOTSPOT_VM_DISTRO " " VMLP VMTYPE " VM"
a61af66fc99e Initial load
duke
parents:
diff changeset
132
a61af66fc99e Initial load
duke
parents:
diff changeset
133 const char* Abstract_VM_Version::vm_name() {
a61af66fc99e Initial load
duke
parents:
diff changeset
134 return VMNAME;
a61af66fc99e Initial load
duke
parents:
diff changeset
135 }
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137
a61af66fc99e Initial load
duke
parents:
diff changeset
138 const char* Abstract_VM_Version::vm_vendor() {
a61af66fc99e Initial load
duke
parents:
diff changeset
139 #ifdef VENDOR
a61af66fc99e Initial load
duke
parents:
diff changeset
140 return XSTR(VENDOR);
a61af66fc99e Initial load
duke
parents:
diff changeset
141 #else
1800
728a287f6c20 6981753: Rebrand vm vendor property settings
zgu
parents: 1692
diff changeset
142 return JDK_Version::is_gte_jdk17x_version() ?
728a287f6c20 6981753: Rebrand vm vendor property settings
zgu
parents: 1692
diff changeset
143 "Oracle Corporation" : "Sun Microsystems Inc.";
0
a61af66fc99e Initial load
duke
parents:
diff changeset
144 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
145 }
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147
a61af66fc99e Initial load
duke
parents:
diff changeset
148 const char* Abstract_VM_Version::vm_info_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
149 switch (Arguments::mode()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
150 case Arguments::_int:
a61af66fc99e Initial load
duke
parents:
diff changeset
151 return UseSharedSpaces ? "interpreted mode, sharing" : "interpreted mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
152 case Arguments::_mixed:
a61af66fc99e Initial load
duke
parents:
diff changeset
153 return UseSharedSpaces ? "mixed mode, sharing" : "mixed mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
154 case Arguments::_comp:
a61af66fc99e Initial load
duke
parents:
diff changeset
155 return UseSharedSpaces ? "compiled mode, sharing" : "compiled mode";
a61af66fc99e Initial load
duke
parents:
diff changeset
156 };
a61af66fc99e Initial load
duke
parents:
diff changeset
157 ShouldNotReachHere();
a61af66fc99e Initial load
duke
parents:
diff changeset
158 return "";
a61af66fc99e Initial load
duke
parents:
diff changeset
159 }
a61af66fc99e Initial load
duke
parents:
diff changeset
160
a61af66fc99e Initial load
duke
parents:
diff changeset
161 // NOTE: do *not* use stringStream. this function is called by
a61af66fc99e Initial load
duke
parents:
diff changeset
162 // fatal error handler. if the crash is in native thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
163 // stringStream cannot get resource allocated and will SEGV.
a61af66fc99e Initial load
duke
parents:
diff changeset
164 const char* Abstract_VM_Version::vm_release() {
a61af66fc99e Initial load
duke
parents:
diff changeset
165 return VM_RELEASE;
a61af66fc99e Initial load
duke
parents:
diff changeset
166 }
a61af66fc99e Initial load
duke
parents:
diff changeset
167
a61af66fc99e Initial load
duke
parents:
diff changeset
168 #define OS LINUX_ONLY("linux") \
a61af66fc99e Initial load
duke
parents:
diff changeset
169 WINDOWS_ONLY("windows") \
a61af66fc99e Initial load
duke
parents:
diff changeset
170 SOLARIS_ONLY("solaris")
a61af66fc99e Initial load
duke
parents:
diff changeset
171
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
172 #ifdef ZERO
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
173 #define CPU ZERO_LIBARCH
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
174 #else
0
a61af66fc99e Initial load
duke
parents:
diff changeset
175 #define CPU IA32_ONLY("x86") \
a61af66fc99e Initial load
duke
parents:
diff changeset
176 IA64_ONLY("ia64") \
a61af66fc99e Initial load
duke
parents:
diff changeset
177 AMD64_ONLY("amd64") \
1681
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1552
diff changeset
178 ARM_ONLY("arm") \
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1552
diff changeset
179 PPC_ONLY("ppc") \
0
a61af66fc99e Initial load
duke
parents:
diff changeset
180 SPARC_ONLY("sparc")
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 844
diff changeset
181 #endif // ZERO
0
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 const char *Abstract_VM_Version::vm_platform_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
184 return OS "-" CPU;
a61af66fc99e Initial load
duke
parents:
diff changeset
185 }
a61af66fc99e Initial load
duke
parents:
diff changeset
186
a61af66fc99e Initial load
duke
parents:
diff changeset
187 const char* Abstract_VM_Version::internal_vm_info_string() {
a61af66fc99e Initial load
duke
parents:
diff changeset
188 #ifndef HOTSPOT_BUILD_USER
a61af66fc99e Initial load
duke
parents:
diff changeset
189 #define HOTSPOT_BUILD_USER unknown
a61af66fc99e Initial load
duke
parents:
diff changeset
190 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
191
a61af66fc99e Initial load
duke
parents:
diff changeset
192 #ifndef HOTSPOT_BUILD_COMPILER
a61af66fc99e Initial load
duke
parents:
diff changeset
193 #ifdef _MSC_VER
a61af66fc99e Initial load
duke
parents:
diff changeset
194 #if _MSC_VER == 1100
a61af66fc99e Initial load
duke
parents:
diff changeset
195 #define HOTSPOT_BUILD_COMPILER "MS VC++ 5.0"
a61af66fc99e Initial load
duke
parents:
diff changeset
196 #elif _MSC_VER == 1200
a61af66fc99e Initial load
duke
parents:
diff changeset
197 #define HOTSPOT_BUILD_COMPILER "MS VC++ 6.0"
a61af66fc99e Initial load
duke
parents:
diff changeset
198 #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
199 #define HOTSPOT_BUILD_COMPILER "MS VC++ 7.1 (VS2003)"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
200 #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
201 #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
202 #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
203 #define HOTSPOT_BUILD_COMPILER "MS VC++ 9.0 (VS2008)"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
204 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
205 #define HOTSPOT_BUILD_COMPILER "unknown MS VC++:" XSTR(_MSC_VER)
a61af66fc99e Initial load
duke
parents:
diff changeset
206 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
207 #elif defined(__SUNPRO_CC)
a61af66fc99e Initial load
duke
parents:
diff changeset
208 #if __SUNPRO_CC == 0x420
a61af66fc99e Initial load
duke
parents:
diff changeset
209 #define HOTSPOT_BUILD_COMPILER "Workshop 4.2"
a61af66fc99e Initial load
duke
parents:
diff changeset
210 #elif __SUNPRO_CC == 0x500
a61af66fc99e Initial load
duke
parents:
diff changeset
211 #define HOTSPOT_BUILD_COMPILER "Workshop 5.0 compat=" XSTR(__SUNPRO_CC_COMPAT)
a61af66fc99e Initial load
duke
parents:
diff changeset
212 #elif __SUNPRO_CC == 0x520
a61af66fc99e Initial load
duke
parents:
diff changeset
213 #define HOTSPOT_BUILD_COMPILER "Workshop 5.2 compat=" XSTR(__SUNPRO_CC_COMPAT)
a61af66fc99e Initial load
duke
parents:
diff changeset
214 #elif __SUNPRO_CC == 0x580
a61af66fc99e Initial load
duke
parents:
diff changeset
215 #define HOTSPOT_BUILD_COMPILER "Workshop 5.8"
a61af66fc99e Initial load
duke
parents:
diff changeset
216 #elif __SUNPRO_CC == 0x590
a61af66fc99e Initial load
duke
parents:
diff changeset
217 #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
1547
fb1a39993f69 6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents: 1010
diff changeset
218 #elif __SUNPRO_CC == 0x5100
fb1a39993f69 6951319: enable solaris builds using Sun Studio 12 update 1
jcoomes
parents: 1010
diff changeset
219 #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
220 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
221 #define HOTSPOT_BUILD_COMPILER "unknown Workshop:" XSTR(__SUNPRO_CC)
a61af66fc99e Initial load
duke
parents:
diff changeset
222 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
223 #elif defined(__GNUC__)
a61af66fc99e Initial load
duke
parents:
diff changeset
224 #define HOTSPOT_BUILD_COMPILER "gcc " __VERSION__
a61af66fc99e Initial load
duke
parents:
diff changeset
225 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
226 #define HOTSPOT_BUILD_COMPILER "unknown compiler"
a61af66fc99e Initial load
duke
parents:
diff changeset
227 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
228 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
229
2192
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
230 #ifndef FLOAT_ARCH
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
231 #if defined(__SOFTFP__)
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
232 #define FLOAT_ARCH "-sflt"
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
233 #elif defined(E500V2)
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
234 #define FLOAT_ARCH "-e500v2"
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
235 #elif defined(ARM)
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
236 #define FLOAT_ARCH "-vfp"
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
237 #elif defined(PPC)
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
238 #define FLOAT_ARCH "-hflt"
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
239 #else
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
240 #define FLOAT_ARCH ""
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
241 #endif
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
242 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
243
2192
b92c45f2bc75 7016023: Enable building ARM and PPC from src/closed repository
bobv
parents: 1972
diff changeset
244 return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH
0
a61af66fc99e Initial load
duke
parents:
diff changeset
245 " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__
a61af66fc99e Initial load
duke
parents:
diff changeset
246 " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
a61af66fc99e Initial load
duke
parents:
diff changeset
247 }
a61af66fc99e Initial load
duke
parents:
diff changeset
248
2199
d8a72fbc4be7 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 2192
diff changeset
249 const char *Abstract_VM_Version::vm_build_user() {
d8a72fbc4be7 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 2192
diff changeset
250 return HOTSPOT_BUILD_USER;
d8a72fbc4be7 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 2192
diff changeset
251 }
d8a72fbc4be7 7003401: Implement VM error-reporting functionality on erroneous termination
kamg
parents: 2192
diff changeset
252
0
a61af66fc99e Initial load
duke
parents:
diff changeset
253 unsigned int Abstract_VM_Version::jvm_version() {
a61af66fc99e Initial load
duke
parents:
diff changeset
254 return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
a61af66fc99e Initial load
duke
parents:
diff changeset
255 ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
a61af66fc99e Initial load
duke
parents:
diff changeset
256 (Abstract_VM_Version::vm_build_number() & 0xFF);
a61af66fc99e Initial load
duke
parents:
diff changeset
257 }
a61af66fc99e Initial load
duke
parents:
diff changeset
258
a61af66fc99e Initial load
duke
parents:
diff changeset
259
a61af66fc99e Initial load
duke
parents:
diff changeset
260 void VM_Version_init() {
a61af66fc99e Initial load
duke
parents:
diff changeset
261 VM_Version::initialize();
a61af66fc99e Initial load
duke
parents:
diff changeset
262
a61af66fc99e Initial load
duke
parents:
diff changeset
263 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
264 if (PrintMiscellaneous && Verbose) {
a61af66fc99e Initial load
duke
parents:
diff changeset
265 os::print_cpu_info(tty);
a61af66fc99e Initial load
duke
parents:
diff changeset
266 }
a61af66fc99e Initial load
duke
parents:
diff changeset
267 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
268 }
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
269
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
270 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
271 unsigned int num,
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
272 unsigned int den,
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
273 unsigned int switch_pt) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
274 if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
275 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
276 // 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
277 // 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
278 // 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
279 // 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
280 // and a chosen fraction of 5/8
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
281 // 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
282 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
283 return (ncpus <= switch_pt) ?
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
284 ncpus :
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
285 (switch_pt + ((ncpus - switch_pt) * num) / den);
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
286 } else {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
287 return ParallelGCThreads;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
288 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
289 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
290
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
291 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
292 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
293 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
294
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
295
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
296 // 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
297 // a global flag.
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
298 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
299 if (!_parallel_worker_threads_initialized) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
300 if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
301 _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
302 } else {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
303 _parallel_worker_threads = 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 _parallel_worker_threads_initialized = true;
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 return _parallel_worker_threads;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
308 }