Mercurial > hg > truffle
annotate src/share/vm/asm/register.hpp @ 20543:e7d0505c8a30
8059758: Footprint regressions with JDK-8038423
Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything.
Reviewed-by: jwilhelm, brutisso
author | tschatzl |
---|---|
date | Fri, 10 Oct 2014 15:51:58 +0200 |
parents | 166d744df0de |
children |
rev | line source |
---|---|
0 | 1 /* |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
2 * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
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:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_ASM_REGISTER_HPP |
26 #define SHARE_VM_ASM_REGISTER_HPP | |
27 | |
28 #include "utilities/top.hpp" | |
29 | |
0 | 30 // Use AbstractRegister as shortcut |
31 class AbstractRegisterImpl; | |
32 typedef AbstractRegisterImpl* AbstractRegister; | |
33 | |
34 | |
35 // The super class for platform specific registers. Instead of using value objects, | |
36 // registers are implemented as pointers. Subclassing is used so all registers can | |
37 // use the debugging suport below. No virtual functions are used for efficiency. | |
38 // They are canonicalized; i.e., registers are equal if their pointers are equal, | |
39 // and vice versa. A concrete implementation may just map the register onto 'this'. | |
40 | |
41 class AbstractRegisterImpl { | |
42 protected: | |
43 int value() const { return (int)(intx)this; } | |
44 }; | |
45 | |
46 | |
47 // | |
48 // Macros for use in defining Register instances. We'd like to be | |
49 // able to simply define const instances of the RegisterImpl* for each | |
50 // of the registers needed on a system in a header file. However many | |
51 // compilers don't handle this very well and end up producing a | |
52 // private definition in every file which includes the header file. | |
53 // Along with the static constructors necessary for initialization it | |
54 // can consume a significant amount of space in the result library. | |
55 // | |
56 // The following macros allow us to declare the instance in a .hpp and | |
57 // produce an enumeration value which has the same number. Then in a | |
58 // .cpp the the register instance can be defined using the enumeration | |
59 // value. This avoids the use of static constructors and multiple | |
60 // definitions per .cpp. In addition #defines for the register can be | |
61 // produced so that the constant registers can be inlined. These | |
62 // macros should not be used inside other macros, because you may get | |
63 // multiple evaluations of the macros which can give bad results. | |
64 // | |
65 // Here are some example uses and expansions. Note that the macro | |
66 // invocation is terminated with a ;. | |
67 // | |
68 // CONSTANT_REGISTER_DECLARATION(Register, G0, 0); | |
69 // | |
70 // extern const Register G0 ; | |
71 // enum { G0_RegisterEnumValue = 0 } ; | |
72 // | |
73 // REGISTER_DECLARATION(Register, Gmethod, G5); | |
74 // | |
75 // extern const Register Gmethod ; | |
76 // enum { Gmethod_RegisterEnumValue = G5_RegisterEnumValue } ; | |
77 // | |
78 // REGISTER_DEFINITION(Register, G0); | |
79 // | |
80 // const Register G0 = ( ( Register ) G0_RegisterEnumValue ) ; | |
81 // | |
82 | |
83 #define AS_REGISTER(type,name) ((type)name##_##type##EnumValue) | |
84 | |
85 #define CONSTANT_REGISTER_DECLARATION(type, name, value) \ | |
86 extern const type name; \ | |
87 enum { name##_##type##EnumValue = (value) } | |
88 | |
89 #define REGISTER_DECLARATION(type, name, value) \ | |
90 extern const type name; \ | |
91 enum { name##_##type##EnumValue = value##_##type##EnumValue } | |
92 | |
93 #define REGISTER_DEFINITION(type, name) \ | |
94 const type name = ((type)name##_##type##EnumValue) | |
95 | |
7204
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
96 #ifdef TARGET_ARCH_x86 |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
97 # include "register_x86.hpp" |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
98 #endif |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
99 #ifdef TARGET_ARCH_sparc |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
100 # include "register_sparc.hpp" |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
101 #endif |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
102 #ifdef TARGET_ARCH_zero |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
103 # include "register_zero.hpp" |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
104 #endif |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
105 #ifdef TARGET_ARCH_arm |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
106 # include "register_arm.hpp" |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
107 #endif |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
108 #ifdef TARGET_ARCH_ppc |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
109 # include "register_ppc.hpp" |
f0c2369fda5a
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
6842
diff
changeset
|
110 #endif |
0 | 111 |
112 | |
113 // Debugging support | |
114 | |
115 inline void assert_different_registers( | |
116 AbstractRegister a, | |
117 AbstractRegister b | |
118 ) { | |
119 assert( | |
120 a != b, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
121 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
122 p2i(a), p2i(b)) |
0 | 123 ); |
124 } | |
125 | |
126 | |
127 inline void assert_different_registers( | |
128 AbstractRegister a, | |
129 AbstractRegister b, | |
130 AbstractRegister c | |
131 ) { | |
132 assert( | |
133 a != b && a != c | |
134 && b != c, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
135 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
136 ", c=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
137 p2i(a), p2i(b), p2i(c)) |
0 | 138 ); |
139 } | |
140 | |
141 | |
142 inline void assert_different_registers( | |
143 AbstractRegister a, | |
144 AbstractRegister b, | |
145 AbstractRegister c, | |
146 AbstractRegister d | |
147 ) { | |
148 assert( | |
149 a != b && a != c && a != d | |
150 && b != c && b != d | |
151 && c != d, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
152 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
153 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
154 p2i(a), p2i(b), p2i(c), p2i(d)) |
0 | 155 ); |
156 } | |
157 | |
158 | |
159 inline void assert_different_registers( | |
160 AbstractRegister a, | |
161 AbstractRegister b, | |
162 AbstractRegister c, | |
163 AbstractRegister d, | |
164 AbstractRegister e | |
165 ) { | |
166 assert( | |
167 a != b && a != c && a != d && a != e | |
168 && b != c && b != d && b != e | |
169 && c != d && c != e | |
170 && d != e, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
171 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
172 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
173 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e)) |
0 | 174 ); |
175 } | |
176 | |
177 | |
178 inline void assert_different_registers( | |
179 AbstractRegister a, | |
180 AbstractRegister b, | |
181 AbstractRegister c, | |
182 AbstractRegister d, | |
183 AbstractRegister e, | |
184 AbstractRegister f | |
185 ) { | |
186 assert( | |
187 a != b && a != c && a != d && a != e && a != f | |
188 && b != c && b != d && b != e && b != f | |
189 && c != d && c != e && c != f | |
190 && d != e && d != f | |
191 && e != f, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
192 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
193 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
194 ", f=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
195 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f)) |
0 | 196 ); |
197 } | |
198 | |
199 | |
200 inline void assert_different_registers( | |
201 AbstractRegister a, | |
202 AbstractRegister b, | |
203 AbstractRegister c, | |
204 AbstractRegister d, | |
205 AbstractRegister e, | |
206 AbstractRegister f, | |
207 AbstractRegister g | |
208 ) { | |
209 assert( | |
210 a != b && a != c && a != d && a != e && a != f && a != g | |
211 && b != c && b != d && b != e && b != f && b != g | |
212 && c != d && c != e && c != f && c != g | |
213 && d != e && d != f && d != g | |
214 && e != f && e != g | |
215 && f != g, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
216 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
217 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
218 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
219 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g)) |
0 | 220 ); |
221 } | |
222 | |
223 | |
224 inline void assert_different_registers( | |
225 AbstractRegister a, | |
226 AbstractRegister b, | |
227 AbstractRegister c, | |
228 AbstractRegister d, | |
229 AbstractRegister e, | |
230 AbstractRegister f, | |
231 AbstractRegister g, | |
232 AbstractRegister h | |
233 ) { | |
234 assert( | |
235 a != b && a != c && a != d && a != e && a != f && a != g && a != h | |
236 && b != c && b != d && b != e && b != f && b != g && b != h | |
237 && c != d && c != e && c != f && c != g && c != h | |
238 && d != e && d != f && d != g && d != h | |
239 && e != f && e != g && e != h | |
240 && f != g && f != h | |
241 && g != h, | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
242 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
243 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
244 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT ", h=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
245 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g), p2i(h)) |
6266
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
246 ); |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
247 } |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
248 |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
249 |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
250 inline void assert_different_registers( |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
251 AbstractRegister a, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
252 AbstractRegister b, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
253 AbstractRegister c, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
254 AbstractRegister d, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
255 AbstractRegister e, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
256 AbstractRegister f, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
257 AbstractRegister g, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
258 AbstractRegister h, |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
259 AbstractRegister i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
260 ) { |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
261 assert( |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
262 a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
263 && b != c && b != d && b != e && b != f && b != g && b != h && b != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
264 && c != d && c != e && c != f && c != g && c != h && c != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
265 && d != e && d != f && d != g && d != h && d != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
266 && e != f && e != g && e != h && e != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
267 && f != g && f != h && f != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
268 && g != h && g != i |
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
1972
diff
changeset
|
269 && h != i, |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
270 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
271 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
272 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT ", h=" INTPTR_FORMAT |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
273 ", i=" INTPTR_FORMAT "", |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
7204
diff
changeset
|
274 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g), p2i(h), p2i(i)) |
0 | 275 ); |
276 } | |
1972 | 277 |
20438
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
278 inline void assert_different_registers( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
279 AbstractRegister a, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
280 AbstractRegister b, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
281 AbstractRegister c, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
282 AbstractRegister d, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
283 AbstractRegister e, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
284 AbstractRegister f, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
285 AbstractRegister g, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
286 AbstractRegister h, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
287 AbstractRegister i, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
288 AbstractRegister j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
289 ) { |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
290 assert( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
291 a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i && a != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
292 && b != c && b != d && b != e && b != f && b != g && b != h && b != i && b != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
293 && c != d && c != e && c != f && c != g && c != h && c != i && c != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
294 && d != e && d != f && d != g && d != h && d != i && d != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
295 && e != f && e != g && e != h && e != i && e != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
296 && f != g && f != h && f != i && f != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
297 && g != h && g != i && g != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
298 && h != i && h != j |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
299 && i != j, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
300 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
301 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
302 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT ", h=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
303 ", i=" INTPTR_FORMAT ", j=" INTPTR_FORMAT "", |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
304 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g), p2i(h), p2i(i), p2i(j)) |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
305 ); |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
306 } |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
307 |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
308 inline void assert_different_registers( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
309 AbstractRegister a, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
310 AbstractRegister b, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
311 AbstractRegister c, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
312 AbstractRegister d, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
313 AbstractRegister e, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
314 AbstractRegister f, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
315 AbstractRegister g, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
316 AbstractRegister h, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
317 AbstractRegister i, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
318 AbstractRegister j, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
319 AbstractRegister k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
320 ) { |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
321 assert( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
322 a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i && a != j && a !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
323 && b != c && b != d && b != e && b != f && b != g && b != h && b != i && b != j && b !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
324 && c != d && c != e && c != f && c != g && c != h && c != i && c != j && c !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
325 && d != e && d != f && d != g && d != h && d != i && d != j && d !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
326 && e != f && e != g && e != h && e != i && e != j && e !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
327 && f != g && f != h && f != i && f != j && f !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
328 && g != h && g != i && g != j && g !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
329 && h != i && h != j && h !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
330 && i != j && i !=k |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
331 && j !=k, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
332 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
333 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
334 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT ", h=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
335 ", i=" INTPTR_FORMAT ", j=" INTPTR_FORMAT ", k=" INTPTR_FORMAT "", |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
336 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g), p2i(h), p2i(i), p2i(j), p2i(k)) |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
337 ); |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
338 } |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
339 |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
340 inline void assert_different_registers( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
341 AbstractRegister a, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
342 AbstractRegister b, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
343 AbstractRegister c, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
344 AbstractRegister d, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
345 AbstractRegister e, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
346 AbstractRegister f, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
347 AbstractRegister g, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
348 AbstractRegister h, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
349 AbstractRegister i, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
350 AbstractRegister j, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
351 AbstractRegister k, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
352 AbstractRegister l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
353 ) { |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
354 assert( |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
355 a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i && a != j && a !=k && a !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
356 && b != c && b != d && b != e && b != f && b != g && b != h && b != i && b != j && b !=k && b !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
357 && c != d && c != e && c != f && c != g && c != h && c != i && c != j && c !=k && c !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
358 && d != e && d != f && d != g && d != h && d != i && d != j && d !=k && d !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
359 && e != f && e != g && e != h && e != i && e != j && e !=k && e !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
360 && f != g && f != h && f != i && f != j && f !=k && f !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
361 && g != h && g != i && g != j && g !=k && g !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
362 && h != i && h != j && h !=k && h !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
363 && i != j && i !=k && i !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
364 && j !=k && j !=l |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
365 && k !=l, |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
366 err_msg_res("registers must be different: a=" INTPTR_FORMAT ", b=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
367 ", c=" INTPTR_FORMAT ", d=" INTPTR_FORMAT ", e=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
368 ", f=" INTPTR_FORMAT ", g=" INTPTR_FORMAT ", h=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
369 ", i=" INTPTR_FORMAT ", j=" INTPTR_FORMAT ", k=" INTPTR_FORMAT |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
370 ", l=" INTPTR_FORMAT "", |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
371 p2i(a), p2i(b), p2i(c), p2i(d), p2i(e), p2i(f), p2i(g), p2i(h), p2i(i), p2i(j), p2i(k), p2i(l)) |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
372 ); |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
373 } |
166d744df0de
8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method
kvn
parents:
17937
diff
changeset
|
374 |
1972 | 375 #endif // SHARE_VM_ASM_REGISTER_HPP |