Mercurial > hg > graal-jvmci-8
annotate src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp @ 23822:626f594dffa6
8139040: Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux.
Reviewed-by: stuefe, coleenp, roland
author | csahu |
---|---|
date | Tue, 01 Mar 2016 12:50:37 +0530 |
parents | 7985a33bac9c |
children |
rev | line source |
---|---|
133 | 1 /* |
23419
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
2 * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved. |
133 | 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:
196
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
196
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:
196
diff
changeset
|
21 * questions. |
133 | 22 * |
23 */ | |
24 | |
1972 | 25 #include "precompiled.hpp" |
26 #include "runtime/os.hpp" | |
27 #include "vm_version_sparc.hpp" | |
133 | 28 |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
29 static bool cpuinfo_field_contains(const char* field, const char* value) { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
30 char line[1024]; |
133 | 31 bool rv = false; |
32 | |
33 FILE* fp = fopen("/proc/cpuinfo", "r"); | |
34 if (fp == NULL) { | |
35 return rv; | |
36 } | |
37 | |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
38 while (fgets(line, sizeof(line), fp) != NULL) { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
39 assert(strlen(line) < sizeof(line) - 1, "buffer line[1024] is too small."); |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
40 if (strncmp(line, field, strlen(field)) == 0) { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
41 if (strstr(line, value) != NULL) { |
133 | 42 rv = true; |
43 } | |
44 break; | |
45 } | |
46 } | |
47 | |
48 fclose(fp); | |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
49 return rv; |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
50 } |
133 | 51 |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
52 static bool detect_niagara() { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
53 return cpuinfo_field_contains("cpu", "Niagara"); |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
54 } |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
55 |
23419
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
56 static bool detect_M_family() { |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
57 return cpuinfo_field_contains("cpu", "SPARC-M"); |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
58 } |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
59 |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
60 static bool detect_blkinit() { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
61 return cpuinfo_field_contains("cpucaps", "blkinit"); |
133 | 62 } |
63 | |
64 int VM_Version::platform_features(int features) { | |
65 // Default to generic v9 | |
66 features = generic_v9_m; | |
67 | |
68 if (detect_niagara()) { | |
69 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) tty->print_cr("Detected Linux on Niagara");) | |
20194
a0ea36509b7b
8046769: Set T family feature bit on Niagara systems
mikael
parents:
1972
diff
changeset
|
70 features = niagara1_m | T_family_m; |
133 | 71 } |
72 | |
23419
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
73 if (detect_M_family()) { |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
74 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) tty->print_cr("Detected Linux on M family");) |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
75 features = sun4v_m | generic_v9_m | M_family_m | T_family_m; |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
76 } |
7985a33bac9c
8134161: JVM is creating too many GC helper threads on T7/M7 linux/sparc platform
gthornbr
parents:
22840
diff
changeset
|
77 |
22840
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
78 if (detect_blkinit()) { |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
79 features |= blk_init_instructions_m; |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
80 } |
ec3982ff3fed
8062672: JVM crashes during GC on various asserts which checks that HeapWord ptr is an oop
sjohanss
parents:
20194
diff
changeset
|
81 |
133 | 82 return features; |
83 } |