annotate src/cpu/sparc/vm/vm_version_sparc.cpp @ 9790:6b515c453646

CompilationTask: print exception of compilation also when we don't exit the VM for example, this is useful for CTW, in order to see on which methods the compiler bails out
author Bernhard Urban <bernhard.urban@jku.at>
date Wed, 22 May 2013 16:28:12 +0200
parents 4a916f2ce331
children 46c544b8fbfc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
6179
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 4053
diff changeset
2 * Copyright (c) 1997, 2012, 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: 1518
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1518
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: 1518
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: 1914
diff changeset
25 #include "precompiled.hpp"
7204
f0c2369fda5a 8003250: SPARC: move MacroAssembler into separate file
twisti
parents: 6848
diff changeset
26 #include "asm/macroAssembler.inline.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
27 #include "memory/resourceArea.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
28 #include "runtime/java.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
29 #include "runtime/stubCodeGenerator.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
30 #include "vm_version_sparc.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
31 #ifdef TARGET_OS_FAMILY_linux
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
32 # include "os_linux.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
33 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
34 #ifdef TARGET_OS_FAMILY_solaris
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
35 # include "os_solaris.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1914
diff changeset
36 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 int VM_Version::_features = VM_Version::unknown_m;
a61af66fc99e Initial load
duke
parents:
diff changeset
39 const char* VM_Version::_features_str = "";
a61af66fc99e Initial load
duke
parents:
diff changeset
40
a61af66fc99e Initial load
duke
parents:
diff changeset
41 void VM_Version::initialize() {
a61af66fc99e Initial load
duke
parents:
diff changeset
42 _features = determine_features();
a61af66fc99e Initial load
duke
parents:
diff changeset
43 PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
a61af66fc99e Initial load
duke
parents:
diff changeset
44 PrefetchScanIntervalInBytes = prefetch_scan_interval_in_bytes();
a61af66fc99e Initial load
duke
parents:
diff changeset
45 PrefetchFieldsAhead = prefetch_fields_ahead();
a61af66fc99e Initial load
duke
parents:
diff changeset
46
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
47 assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 1, "invalid value");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
48 if( AllocatePrefetchInstr < 0 ) AllocatePrefetchInstr = 0;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
49 if( AllocatePrefetchInstr > 1 ) AllocatePrefetchInstr = 0;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
50
0
a61af66fc99e Initial load
duke
parents:
diff changeset
51 // Allocation prefetch settings
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
52 intx cache_line_size = prefetch_data_size();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
53 if( cache_line_size > AllocatePrefetchStepSize )
a61af66fc99e Initial load
duke
parents:
diff changeset
54 AllocatePrefetchStepSize = cache_line_size;
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
55
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
56 assert(AllocatePrefetchLines > 0, "invalid value");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
57 if( AllocatePrefetchLines < 1 ) // set valid value in product VM
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
58 AllocatePrefetchLines = 3;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
59 assert(AllocateInstancePrefetchLines > 0, "invalid value");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
60 if( AllocateInstancePrefetchLines < 1 ) // set valid value in product VM
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
61 AllocateInstancePrefetchLines = 1;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
62
a61af66fc99e Initial load
duke
parents:
diff changeset
63 AllocatePrefetchDistance = allocate_prefetch_distance();
a61af66fc99e Initial load
duke
parents:
diff changeset
64 AllocatePrefetchStyle = allocate_prefetch_style();
a61af66fc99e Initial load
duke
parents:
diff changeset
65
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
66 assert((AllocatePrefetchDistance % AllocatePrefetchStepSize) == 0 &&
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
67 (AllocatePrefetchDistance > 0), "invalid value");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
68 if ((AllocatePrefetchDistance % AllocatePrefetchStepSize) != 0 ||
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
69 (AllocatePrefetchDistance <= 0)) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
70 AllocatePrefetchDistance = AllocatePrefetchStepSize;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
71 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
72
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
73 if (AllocatePrefetchStyle == 3 && !has_blk_init()) {
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
74 warning("BIS instructions are not available on this CPU");
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
75 FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
76 }
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
77
3903
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
78 if (has_v9()) {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
79 assert(ArraycopySrcPrefetchDistance < 4096, "invalid value");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
80 if (ArraycopySrcPrefetchDistance >= 4096)
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
81 ArraycopySrcPrefetchDistance = 4064;
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
82 assert(ArraycopyDstPrefetchDistance < 4096, "invalid value");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
83 if (ArraycopyDstPrefetchDistance >= 4096)
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
84 ArraycopyDstPrefetchDistance = 4064;
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
85 } else {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
86 if (ArraycopySrcPrefetchDistance > 0) {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
87 warning("prefetch instructions are not available on this CPU");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
88 FLAG_SET_DEFAULT(ArraycopySrcPrefetchDistance, 0);
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
89 }
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
90 if (ArraycopyDstPrefetchDistance > 0) {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
91 warning("prefetch instructions are not available on this CPU");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
92 FLAG_SET_DEFAULT(ArraycopyDstPrefetchDistance, 0);
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
93 }
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
94 }
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
95
0
a61af66fc99e Initial load
duke
parents:
diff changeset
96 UseSSE = 0; // Only on x86 and x64
a61af66fc99e Initial load
duke
parents:
diff changeset
97
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
98 _supports_cx8 = has_v9();
6795
7eca5de9e0b6 7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
roland
parents: 6610
diff changeset
99 _supports_atomic_getset4 = true; // swap instruction
0
a61af66fc99e Initial load
duke
parents:
diff changeset
100
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
101 if (is_niagara()) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
102 // Indirect branch is the same cost as direct
a61af66fc99e Initial load
duke
parents:
diff changeset
103 if (FLAG_IS_DEFAULT(UseInlineCaches)) {
675
f6da6f0174ac 6821700: tune VM flags for peak performance
kvn
parents: 643
diff changeset
104 FLAG_SET_DEFAULT(UseInlineCaches, false);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
105 }
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
106 // Align loops on a single instruction boundary.
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
107 if (FLAG_IS_DEFAULT(OptoLoopAlignment)) {
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
108 FLAG_SET_DEFAULT(OptoLoopAlignment, 4);
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
109 }
6610
f99a36499b8c 7192128: G1: Extend fix for 6948537 to G1's BOT
johnc
parents: 6179
diff changeset
110 // When using CMS or G1, we cannot use memset() in BOT updates
f99a36499b8c 7192128: G1: Extend fix for 6948537 to G1's BOT
johnc
parents: 6179
diff changeset
111 // because the sun4v/CMT version in libc_psr uses BIS which
f99a36499b8c 7192128: G1: Extend fix for 6948537 to G1's BOT
johnc
parents: 6179
diff changeset
112 // exposes "phantom zeros" to concurrent readers. See 6948537.
f99a36499b8c 7192128: G1: Extend fix for 6948537 to G1's BOT
johnc
parents: 6179
diff changeset
113 if (FLAG_IS_DEFAULT(UseMemSetInBOT) && (UseConcMarkSweepGC || UseG1GC)) {
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
114 FLAG_SET_DEFAULT(UseMemSetInBOT, false);
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
115 }
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 10
diff changeset
116 #ifdef _LP64
642
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 641
diff changeset
117 // 32-bit oops don't make sense for the 64-bit VM on sparc
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 641
diff changeset
118 // since the 32-bit VM has the same registers and smaller objects.
660978a2a31a 6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents: 641
diff changeset
119 Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
6848
8e47bac5643a 7054512: Compress class pointers after perm gen removal
roland
parents: 6797
diff changeset
120 Universe::set_narrow_klass_shift(LogKlassAlignmentInBytes);
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 10
diff changeset
121 #endif // _LP64
0
a61af66fc99e Initial load
duke
parents:
diff changeset
122 #ifdef COMPILER2
a61af66fc99e Initial load
duke
parents:
diff changeset
123 // Indirect branch is the same cost as direct
a61af66fc99e Initial load
duke
parents:
diff changeset
124 if (FLAG_IS_DEFAULT(UseJumpTables)) {
675
f6da6f0174ac 6821700: tune VM flags for peak performance
kvn
parents: 643
diff changeset
125 FLAG_SET_DEFAULT(UseJumpTables, true);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
126 }
a61af66fc99e Initial load
duke
parents:
diff changeset
127 // Single-issue, so entry and loop tops are
a61af66fc99e Initial load
duke
parents:
diff changeset
128 // aligned on a single instruction boundary
a61af66fc99e Initial load
duke
parents:
diff changeset
129 if (FLAG_IS_DEFAULT(InteriorEntryAlignment)) {
675
f6da6f0174ac 6821700: tune VM flags for peak performance
kvn
parents: 643
diff changeset
130 FLAG_SET_DEFAULT(InteriorEntryAlignment, 4);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
131 }
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
132 if (is_niagara_plus()) {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
133 if (has_blk_init() && UseTLAB &&
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
134 FLAG_IS_DEFAULT(AllocatePrefetchInstr)) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
135 // Use BIS instruction for TLAB allocation prefetch.
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
136 FLAG_SET_ERGO(intx, AllocatePrefetchInstr, 1);
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
137 if (FLAG_IS_DEFAULT(AllocatePrefetchStyle)) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
138 FLAG_SET_ERGO(intx, AllocatePrefetchStyle, 3);
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
139 }
1367
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
140 if (FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
141 // Use smaller prefetch distance with BIS
1367
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
142 FLAG_SET_DEFAULT(AllocatePrefetchDistance, 64);
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
143 }
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
144 }
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
145 if (is_T4()) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
146 // Double number of prefetched cache lines on T4
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
147 // since L2 cache line size is smaller (32 bytes).
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
148 if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
149 FLAG_SET_ERGO(intx, AllocatePrefetchLines, AllocatePrefetchLines*2);
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
150 }
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
151 if (FLAG_IS_DEFAULT(AllocateInstancePrefetchLines)) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
152 FLAG_SET_ERGO(intx, AllocateInstancePrefetchLines, AllocateInstancePrefetchLines*2);
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
153 }
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
154 }
1367
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
155 if (AllocatePrefetchStyle != 3 && FLAG_IS_DEFAULT(AllocatePrefetchDistance)) {
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
156 // Use different prefetch distance without BIS
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
157 FLAG_SET_DEFAULT(AllocatePrefetchDistance, 256);
9e321dcfa5b7 6940726: Use BIS instruction for allocation prefetch on Sparc
kvn
parents: 1365
diff changeset
158 }
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
159 if (AllocatePrefetchInstr == 1) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
160 // Need a space at the end of TLAB for BIS since it
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
161 // will fault when accessing memory outside of heap.
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
162
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
163 // +1 for rounding up to next cache line, +1 to be safe
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
164 int lines = AllocatePrefetchLines + 2;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
165 int step_size = AllocatePrefetchStepSize;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
166 int distance = AllocatePrefetchDistance;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
167 _reserve_for_allocation_prefetch = (distance + step_size*lines)/(int)HeapWordSize;
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
168 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
169 }
a61af66fc99e Initial load
duke
parents:
diff changeset
170 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
171 }
a61af66fc99e Initial load
duke
parents:
diff changeset
172
643
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
173 // Use hardware population count instruction if available.
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
174 if (has_hardware_popc()) {
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
175 if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
675
f6da6f0174ac 6821700: tune VM flags for peak performance
kvn
parents: 643
diff changeset
176 FLAG_SET_DEFAULT(UsePopCountInstruction, true);
643
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
177 }
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
178 } else if (UsePopCountInstruction) {
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
179 warning("POPC instruction is not available on this CPU");
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
180 FLAG_SET_DEFAULT(UsePopCountInstruction, false);
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
181 }
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
182
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
183 // T4 and newer Sparc cpus have new compare and branch instruction.
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
184 if (has_cbcond()) {
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
185 if (FLAG_IS_DEFAULT(UseCBCond)) {
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
186 FLAG_SET_DEFAULT(UseCBCond, true);
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
187 }
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
188 } else if (UseCBCond) {
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
189 warning("CBCOND instruction is not available on this CPU");
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
190 FLAG_SET_DEFAULT(UseCBCond, false);
643
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
191 }
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
192
3892
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
193 assert(BlockZeroingLowLimit > 0, "invalid value");
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
194 if (has_block_zeroing()) {
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
195 if (FLAG_IS_DEFAULT(UseBlockZeroing)) {
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
196 FLAG_SET_DEFAULT(UseBlockZeroing, true);
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
197 }
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
198 } else if (UseBlockZeroing) {
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
199 warning("BIS zeroing instructions are not available on this CPU");
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
200 FLAG_SET_DEFAULT(UseBlockZeroing, false);
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
201 }
baf763f388e6 7059037: Use BIS for zeroing on T4
kvn
parents: 3854
diff changeset
202
3903
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
203 assert(BlockCopyLowLimit > 0, "invalid value");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
204 if (has_block_zeroing()) { // has_blk_init() && is_T4(): core's local L2 cache
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
205 if (FLAG_IS_DEFAULT(UseBlockCopy)) {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
206 FLAG_SET_DEFAULT(UseBlockCopy, true);
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
207 }
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
208 } else if (UseBlockCopy) {
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
209 warning("BIS instructions are not available or expensive on this CPU");
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
210 FLAG_SET_DEFAULT(UseBlockCopy, false);
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
211 }
2f9b79ddb05c 7039731: arraycopy could use prefetch on SPARC
kvn
parents: 3892
diff changeset
212
1730
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1579
diff changeset
213 #ifdef COMPILER2
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
214 // T4 and newer Sparc cpus have fast RDPC.
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
215 if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) {
4053
e3b0dcc327b9 7104561: UseRDPCForConstantTableBase doesn't work after shorten branches changes
twisti
parents: 3903
diff changeset
216 FLAG_SET_DEFAULT(UseRDPCForConstantTableBase, true);
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
217 }
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
218
1730
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1579
diff changeset
219 // Currently not supported anywhere.
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1579
diff changeset
220 FLAG_SET_DEFAULT(UseFPUForSpilling, false);
3851
95134e034042 7063629: use cbcond in C2 generated code on T4
kvn
parents: 3839
diff changeset
221
6179
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 4053
diff changeset
222 MaxVectorSize = 8;
8c92982cbbc4 7119644: Increase superword's vector size up to 256 bits
kvn
parents: 4053
diff changeset
223
3851
95134e034042 7063629: use cbcond in C2 generated code on T4
kvn
parents: 3839
diff changeset
224 assert((InteriorEntryAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size");
1730
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1579
diff changeset
225 #endif
f55c4f82ab9d 6978249: spill between cpu and fpu registers when those moves are fast
never
parents: 1579
diff changeset
226
3851
95134e034042 7063629: use cbcond in C2 generated code on T4
kvn
parents: 3839
diff changeset
227 assert((CodeEntryAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size");
95134e034042 7063629: use cbcond in C2 generated code on T4
kvn
parents: 3839
diff changeset
228 assert((OptoLoopAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size");
95134e034042 7063629: use cbcond in C2 generated code on T4
kvn
parents: 3839
diff changeset
229
0
a61af66fc99e Initial load
duke
parents:
diff changeset
230 char buf[512];
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
231 jio_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
232 (has_v9() ? ", v9" : (has_v8() ? ", v8" : "")),
643
c771b7f43bbf 6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents: 642
diff changeset
233 (has_hardware_popc() ? ", popc" : ""),
3839
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
234 (has_vis1() ? ", vis1" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
235 (has_vis2() ? ", vis2" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
236 (has_vis3() ? ", vis3" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
237 (has_blk_init() ? ", blk_init" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
238 (has_cbcond() ? ", cbcond" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
239 (is_ultra3() ? ", ultra3" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
240 (is_sun4v() ? ", sun4v" : ""),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
241 (is_niagara_plus() ? ", niagara_plus" : (is_niagara() ? ", niagara" : "")),
3d42f82cd811 7063628: Use cbcond on T4
kvn
parents: 3804
diff changeset
242 (is_sparc64() ? ", sparc64" : ""),
641
6af0a709d52b 6812587: Use auxv to determine SPARC hardware features on Solaris
twisti
parents: 196
diff changeset
243 (!has_hardware_mul32() ? ", no-mul32" : ""),
6af0a709d52b 6812587: Use auxv to determine SPARC hardware features on Solaris
twisti
parents: 196
diff changeset
244 (!has_hardware_div32() ? ", no-div32" : ""),
0
a61af66fc99e Initial load
duke
parents:
diff changeset
245 (!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
a61af66fc99e Initial load
duke
parents:
diff changeset
246
a61af66fc99e Initial load
duke
parents:
diff changeset
247 // buf is started with ", " or is empty
a61af66fc99e Initial load
duke
parents:
diff changeset
248 _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf);
a61af66fc99e Initial load
duke
parents:
diff changeset
249
3804
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
250 // UseVIS is set to the smallest of what hardware supports and what
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
251 // the command line requires. I.e., you cannot set UseVIS to 3 on
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
252 // older UltraSparc which do not support it.
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
253 if (UseVIS > 3) UseVIS=3;
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
254 if (UseVIS < 0) UseVIS=0;
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
255 if (!has_vis3()) // Drop to 2 if no VIS3 support
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
256 UseVIS = MIN2((intx)2,UseVIS);
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
257 if (!has_vis2()) // Drop to 1 if no VIS2 support
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
258 UseVIS = MIN2((intx)1,UseVIS);
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
259 if (!has_vis1()) // Drop to 0 if no VIS1 support
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
260 UseVIS = 0;
faa472957b38 7059034: Use movxtod/movdtox on T4
kvn
parents: 2080
diff changeset
261
7587
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
262 if (FLAG_IS_DEFAULT(ContendedPaddingWidth) &&
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
263 (cache_line_size > ContendedPaddingWidth))
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
264 ContendedPaddingWidth = cache_line_size;
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
265
0
a61af66fc99e Initial load
duke
parents:
diff changeset
266 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
267 if (PrintMiscellaneous && Verbose) {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
268 tty->print("Allocation");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
269 if (AllocatePrefetchStyle <= 0) {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
270 tty->print_cr(": no prefetching");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
271 } else {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
272 tty->print(" prefetching: ");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
273 if (AllocatePrefetchInstr == 0) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
274 tty->print("PREFETCH");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
275 } else if (AllocatePrefetchInstr == 1) {
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
276 tty->print("BIS");
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
277 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
278 if (AllocatePrefetchLines > 1) {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
279 tty->print_cr(" at distance %d, %d lines of %d bytes", AllocatePrefetchDistance, AllocatePrefetchLines, AllocatePrefetchStepSize);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
280 } else {
3854
1af104d6cf99 7079329: Adjust allocation prefetching for T4
kvn
parents: 3851
diff changeset
281 tty->print_cr(" at distance %d, one line of %d bytes", AllocatePrefetchDistance, AllocatePrefetchStepSize);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
282 }
a61af66fc99e Initial load
duke
parents:
diff changeset
283 }
a61af66fc99e Initial load
duke
parents:
diff changeset
284 if (PrefetchCopyIntervalInBytes > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
285 tty->print_cr("PrefetchCopyIntervalInBytes %d", PrefetchCopyIntervalInBytes);
a61af66fc99e Initial load
duke
parents:
diff changeset
286 }
a61af66fc99e Initial load
duke
parents:
diff changeset
287 if (PrefetchScanIntervalInBytes > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
288 tty->print_cr("PrefetchScanIntervalInBytes %d", PrefetchScanIntervalInBytes);
a61af66fc99e Initial load
duke
parents:
diff changeset
289 }
a61af66fc99e Initial load
duke
parents:
diff changeset
290 if (PrefetchFieldsAhead > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
291 tty->print_cr("PrefetchFieldsAhead %d", PrefetchFieldsAhead);
a61af66fc99e Initial load
duke
parents:
diff changeset
292 }
7587
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
293 if (ContendedPaddingWidth > 0) {
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
294 tty->print_cr("ContendedPaddingWidth %d", ContendedPaddingWidth);
4a916f2ce331 8003985: Support @Contended Annotation - JEP 142
jwilhelm
parents: 7204
diff changeset
295 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
296 }
a61af66fc99e Initial load
duke
parents:
diff changeset
297 #endif // PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
298 }
a61af66fc99e Initial load
duke
parents:
diff changeset
299
a61af66fc99e Initial load
duke
parents:
diff changeset
300 void VM_Version::print_features() {
a61af66fc99e Initial load
duke
parents:
diff changeset
301 tty->print_cr("Version:%s", cpu_features());
a61af66fc99e Initial load
duke
parents:
diff changeset
302 }
a61af66fc99e Initial load
duke
parents:
diff changeset
303
a61af66fc99e Initial load
duke
parents:
diff changeset
304 int VM_Version::determine_features() {
a61af66fc99e Initial load
duke
parents:
diff changeset
305 if (UseV8InstrsOnly) {
a61af66fc99e Initial load
duke
parents:
diff changeset
306 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) tty->print_cr("Version is Forced-V8");)
a61af66fc99e Initial load
duke
parents:
diff changeset
307 return generic_v8_m;
a61af66fc99e Initial load
duke
parents:
diff changeset
308 }
a61af66fc99e Initial load
duke
parents:
diff changeset
309
a61af66fc99e Initial load
duke
parents:
diff changeset
310 int features = platform_features(unknown_m); // platform_features() is os_arch specific
a61af66fc99e Initial load
duke
parents:
diff changeset
311
a61af66fc99e Initial load
duke
parents:
diff changeset
312 if (features == unknown_m) {
a61af66fc99e Initial load
duke
parents:
diff changeset
313 features = generic_v9_m;
a61af66fc99e Initial load
duke
parents:
diff changeset
314 warning("Cannot recognize SPARC version. Default to V9");
a61af66fc99e Initial load
duke
parents:
diff changeset
315 }
a61af66fc99e Initial load
duke
parents:
diff changeset
316
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
317 assert(is_T_family(features) == is_niagara(features), "Niagara should be T series");
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
318 if (UseNiagaraInstrs) { // Force code generation for Niagara
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
319 if (is_T_family(features)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
320 // Happy to accomodate...
a61af66fc99e Initial load
duke
parents:
diff changeset
321 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
322 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) tty->print_cr("Version is Forced-Niagara");)
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
323 features |= T_family_m;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
324 }
a61af66fc99e Initial load
duke
parents:
diff changeset
325 } else {
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
326 if (is_T_family(features) && !FLAG_IS_DEFAULT(UseNiagaraInstrs)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
327 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) tty->print_cr("Version is Forced-Not-Niagara");)
2080
c04052fd6ae1 7006505: Use kstat info to identify SPARC processor
kvn
parents: 1972
diff changeset
328 features &= ~(T_family_m | T1_model_m);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
329 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
330 // Happy to accomodate...
a61af66fc99e Initial load
duke
parents:
diff changeset
331 }
a61af66fc99e Initial load
duke
parents:
diff changeset
332 }
a61af66fc99e Initial load
duke
parents:
diff changeset
333
a61af66fc99e Initial load
duke
parents:
diff changeset
334 return features;
a61af66fc99e Initial load
duke
parents:
diff changeset
335 }
a61af66fc99e Initial load
duke
parents:
diff changeset
336
a61af66fc99e Initial load
duke
parents:
diff changeset
337 static int saved_features = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
338
a61af66fc99e Initial load
duke
parents:
diff changeset
339 void VM_Version::allow_all() {
a61af66fc99e Initial load
duke
parents:
diff changeset
340 saved_features = _features;
a61af66fc99e Initial load
duke
parents:
diff changeset
341 _features = all_features_m;
a61af66fc99e Initial load
duke
parents:
diff changeset
342 }
a61af66fc99e Initial load
duke
parents:
diff changeset
343
a61af66fc99e Initial load
duke
parents:
diff changeset
344 void VM_Version::revert() {
a61af66fc99e Initial load
duke
parents:
diff changeset
345 _features = saved_features;
a61af66fc99e Initial load
duke
parents:
diff changeset
346 }
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
347
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
348 unsigned int VM_Version::calc_parallel_worker_threads() {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
349 unsigned int result;
6797
3a327d0b8586 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
twisti
parents: 6795
diff changeset
350 if (is_M_series()) {
3a327d0b8586 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
twisti
parents: 6795
diff changeset
351 // for now, use same gc thread calculation for M-series as for niagara-plus
3a327d0b8586 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
twisti
parents: 6795
diff changeset
352 // in future, we may want to tweak parameters for nof_parallel_worker_thread
3a327d0b8586 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
twisti
parents: 6795
diff changeset
353 result = nof_parallel_worker_threads(5, 16, 8);
3a327d0b8586 7188176: The JVM should differentiate between T and M series and adjust GC ergonomics
twisti
parents: 6795
diff changeset
354 } else if (is_niagara_plus()) {
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
355 result = nof_parallel_worker_threads(5, 16, 8);
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
356 } else {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
357 result = nof_parallel_worker_threads(5, 8, 8);
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
358 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
359 return result;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
360 }