1 /* |
1 /* |
2 * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
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 |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 * |
22 * |
23 */ |
23 */ |
|
24 |
|
25 #ifndef SHARE_VM_CODE_VMREG_HPP |
|
26 #define SHARE_VM_CODE_VMREG_HPP |
|
27 |
|
28 #include "memory/allocation.hpp" |
|
29 #include "utilities/globalDefinitions.hpp" |
|
30 #ifdef TARGET_ARCH_x86 |
|
31 # include "register_x86.hpp" |
|
32 #endif |
|
33 #ifdef TARGET_ARCH_sparc |
|
34 # include "register_sparc.hpp" |
|
35 #endif |
|
36 #ifdef TARGET_ARCH_zero |
|
37 # include "register_zero.hpp" |
|
38 #endif |
|
39 #ifdef COMPILER2 |
|
40 #include "opto/adlcVMDeps.hpp" |
|
41 #include "utilities/ostream.hpp" |
|
42 #ifdef TARGET_ARCH_MODEL_x86_32 |
|
43 # include "adfiles/adGlobals_x86_32.hpp" |
|
44 #endif |
|
45 #ifdef TARGET_ARCH_MODEL_x86_64 |
|
46 # include "adfiles/adGlobals_x86_64.hpp" |
|
47 #endif |
|
48 #ifdef TARGET_ARCH_MODEL_sparc |
|
49 # include "adfiles/adGlobals_sparc.hpp" |
|
50 #endif |
|
51 #ifdef TARGET_ARCH_MODEL_zero |
|
52 # include "adfiles/adGlobals_zero.hpp" |
|
53 #endif |
|
54 #endif |
24 |
55 |
25 //------------------------------VMReg------------------------------------------ |
56 //------------------------------VMReg------------------------------------------ |
26 // The VM uses 'unwarped' stack slots; the compiler uses 'warped' stack slots. |
57 // The VM uses 'unwarped' stack slots; the compiler uses 'warped' stack slots. |
27 // Register numbers below VMRegImpl::stack0 are the same for both. Register |
58 // Register numbers below VMRegImpl::stack0 are the same for both. Register |
28 // numbers above stack0 are either warped (in the compiler) or unwarped |
59 // numbers above stack0 are either warped (in the compiler) or unwarped |
122 return value() - stack0->value(); |
153 return value() - stack0->value(); |
123 } |
154 } |
124 |
155 |
125 static void set_regName(); |
156 static void set_regName(); |
126 |
157 |
127 #include "incls/_vmreg_pd.hpp.incl" |
158 #ifdef TARGET_ARCH_x86 |
|
159 # include "vmreg_x86.hpp" |
|
160 #endif |
|
161 #ifdef TARGET_ARCH_sparc |
|
162 # include "vmreg_sparc.hpp" |
|
163 #endif |
|
164 #ifdef TARGET_ARCH_zero |
|
165 # include "vmreg_zero.hpp" |
|
166 #endif |
|
167 |
128 |
168 |
129 }; |
169 }; |
130 |
170 |
131 //---------------------------VMRegPair------------------------------------------- |
171 //---------------------------VMRegPair------------------------------------------- |
132 // Pairs of 32-bit registers for arguments. |
172 // Pairs of 32-bit registers for arguments. |
179 VMReg first() const { return _first; } |
219 VMReg first() const { return _first; } |
180 VMRegPair(VMReg s, VMReg f) { _second = s; _first = f; } |
220 VMRegPair(VMReg s, VMReg f) { _second = s; _first = f; } |
181 VMRegPair(VMReg f) { _second = VMRegImpl::Bad(); _first = f; } |
221 VMRegPair(VMReg f) { _second = VMRegImpl::Bad(); _first = f; } |
182 VMRegPair() { _second = VMRegImpl::Bad(); _first = VMRegImpl::Bad(); } |
222 VMRegPair() { _second = VMRegImpl::Bad(); _first = VMRegImpl::Bad(); } |
183 }; |
223 }; |
|
224 |
|
225 #endif // SHARE_VM_CODE_VMREG_HPP |