annotate src/cpu/sparc/vm/c1_FrameMap_sparc.hpp @ 6812:988bf00cc564

7200261: G1: Liveness counting inconsistencies during marking verification Summary: The clipping code in the routine that sets the bits for a range of cards, in the liveness accounting verification code was incorrect. It set all the bits in the card bitmap from the given starting index which would lead to spurious marking verification failures. Reviewed-by: brutisso, jwilhelm, jmasa
author johnc
date Thu, 27 Sep 2012 15:44:01 -0700
parents 8a02ca5e5576
children b9a9ed0f8eeb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1301
diff changeset
2 * Copyright (c) 1999, 2010, 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: 1301
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1301
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: 1301
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: 1783
diff changeset
25 #ifndef CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1783
diff changeset
26 #define CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1783
diff changeset
27
0
a61af66fc99e Initial load
duke
parents:
diff changeset
28 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
29
a61af66fc99e Initial load
duke
parents:
diff changeset
30 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
31 nof_reg_args = 6, // registers o0-o5 are available for parameter passing
a61af66fc99e Initial load
duke
parents:
diff changeset
32 first_available_sp_in_frame = frame::memory_parameter_word_sp_offset * BytesPerWord,
a61af66fc99e Initial load
duke
parents:
diff changeset
33 frame_pad_in_bytes = 0
a61af66fc99e Initial load
duke
parents:
diff changeset
34 };
a61af66fc99e Initial load
duke
parents:
diff changeset
35
a61af66fc99e Initial load
duke
parents:
diff changeset
36 static const int pd_c_runtime_reserved_arg_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 static LIR_Opr G0_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
39 static LIR_Opr G1_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
40 static LIR_Opr G2_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
41 static LIR_Opr G3_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
42 static LIR_Opr G4_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
43 static LIR_Opr G5_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
44 static LIR_Opr G6_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
45 static LIR_Opr G7_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
46 static LIR_Opr O0_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
47 static LIR_Opr O1_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
48 static LIR_Opr O2_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
49 static LIR_Opr O3_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
50 static LIR_Opr O4_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
51 static LIR_Opr O5_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
52 static LIR_Opr O6_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
53 static LIR_Opr O7_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
54 static LIR_Opr L0_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
55 static LIR_Opr L1_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
56 static LIR_Opr L2_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
57 static LIR_Opr L3_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
58 static LIR_Opr L4_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
59 static LIR_Opr L5_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
60 static LIR_Opr L6_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
61 static LIR_Opr L7_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
62 static LIR_Opr I0_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
63 static LIR_Opr I1_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
64 static LIR_Opr I2_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
65 static LIR_Opr I3_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
66 static LIR_Opr I4_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
67 static LIR_Opr I5_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
68 static LIR_Opr I6_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
69 static LIR_Opr I7_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
70
a61af66fc99e Initial load
duke
parents:
diff changeset
71 static LIR_Opr SP_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
72 static LIR_Opr FP_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
73
a61af66fc99e Initial load
duke
parents:
diff changeset
74 static LIR_Opr G0_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
75 static LIR_Opr G1_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
76 static LIR_Opr G2_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
77 static LIR_Opr G3_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
78 static LIR_Opr G4_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
79 static LIR_Opr G5_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
80 static LIR_Opr G6_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
81 static LIR_Opr G7_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
82 static LIR_Opr O0_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
83 static LIR_Opr O1_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
84 static LIR_Opr O2_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
85 static LIR_Opr O3_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
86 static LIR_Opr O4_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
87 static LIR_Opr O5_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
88 static LIR_Opr O6_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
89 static LIR_Opr O7_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
90 static LIR_Opr L0_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
91 static LIR_Opr L1_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
92 static LIR_Opr L2_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
93 static LIR_Opr L3_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
94 static LIR_Opr L4_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
95 static LIR_Opr L5_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
96 static LIR_Opr L6_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
97 static LIR_Opr L7_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
98 static LIR_Opr I0_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
99 static LIR_Opr I1_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
100 static LIR_Opr I2_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
101 static LIR_Opr I3_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
102 static LIR_Opr I4_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
103 static LIR_Opr I5_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
104 static LIR_Opr I6_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
105 static LIR_Opr I7_oop_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
106
6739
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
107 static LIR_Opr G0_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
108 static LIR_Opr G1_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
109 static LIR_Opr G2_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
110 static LIR_Opr G3_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
111 static LIR_Opr G4_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
112 static LIR_Opr G5_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
113 static LIR_Opr G6_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
114 static LIR_Opr G7_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
115 static LIR_Opr O0_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
116 static LIR_Opr O1_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
117 static LIR_Opr O2_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
118 static LIR_Opr O3_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
119 static LIR_Opr O4_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
120 static LIR_Opr O5_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
121 static LIR_Opr O6_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
122 static LIR_Opr O7_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
123 static LIR_Opr L0_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
124 static LIR_Opr L1_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
125 static LIR_Opr L2_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
126 static LIR_Opr L3_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
127 static LIR_Opr L4_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
128 static LIR_Opr L5_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
129 static LIR_Opr L6_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
130 static LIR_Opr L7_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
131 static LIR_Opr I0_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
132 static LIR_Opr I1_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
133 static LIR_Opr I2_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
134 static LIR_Opr I3_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
135 static LIR_Opr I4_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
136 static LIR_Opr I5_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
137 static LIR_Opr I6_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
138 static LIR_Opr I7_metadata_opr;
8a02ca5e5576 7195816: NPG: Crash in c1_ValueType - ShouldNotReachHere
roland
parents: 2002
diff changeset
139
0
a61af66fc99e Initial load
duke
parents:
diff changeset
140 static LIR_Opr in_long_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
141 static LIR_Opr out_long_opr;
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
142 static LIR_Opr g1_long_single_opr;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
143
a61af66fc99e Initial load
duke
parents:
diff changeset
144 static LIR_Opr F0_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
145 static LIR_Opr F0_double_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 static LIR_Opr Oexception_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
148 static LIR_Opr Oissuing_pc_opr;
a61af66fc99e Initial load
duke
parents:
diff changeset
149
a61af66fc99e Initial load
duke
parents:
diff changeset
150 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
151 static FloatRegister _fpu_regs [nof_fpu_regs];
a61af66fc99e Initial load
duke
parents:
diff changeset
152
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
153 static LIR_Opr as_long_single_opr(Register r) {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
154 return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
155 }
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
156 static LIR_Opr as_long_pair_opr(Register r) {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
157 return LIR_OprFact::double_cpu(cpu_reg2rnr(r->successor()), cpu_reg2rnr(r));
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
158 }
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
159
0
a61af66fc99e Initial load
duke
parents:
diff changeset
160 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
161
a61af66fc99e Initial load
duke
parents:
diff changeset
162 #ifdef _LP64
a61af66fc99e Initial load
duke
parents:
diff changeset
163 static LIR_Opr as_long_opr(Register r) {
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
164 return as_long_single_opr(r);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
165 }
a61af66fc99e Initial load
duke
parents:
diff changeset
166 static LIR_Opr as_pointer_opr(Register r) {
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
167 return as_long_single_opr(r);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
168 }
a61af66fc99e Initial load
duke
parents:
diff changeset
169 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
170 static LIR_Opr as_long_opr(Register r) {
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1579
diff changeset
171 return as_long_pair_opr(r);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
172 }
a61af66fc99e Initial load
duke
parents:
diff changeset
173 static LIR_Opr as_pointer_opr(Register r) {
a61af66fc99e Initial load
duke
parents:
diff changeset
174 return as_opr(r);
a61af66fc99e Initial load
duke
parents:
diff changeset
175 }
a61af66fc99e Initial load
duke
parents:
diff changeset
176 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
177 static LIR_Opr as_float_opr(FloatRegister r) {
a61af66fc99e Initial load
duke
parents:
diff changeset
178 return LIR_OprFact::single_fpu(r->encoding());
a61af66fc99e Initial load
duke
parents:
diff changeset
179 }
a61af66fc99e Initial load
duke
parents:
diff changeset
180 static LIR_Opr as_double_opr(FloatRegister r) {
a61af66fc99e Initial load
duke
parents:
diff changeset
181 return LIR_OprFact::double_fpu(r->successor()->encoding(), r->encoding());
a61af66fc99e Initial load
duke
parents:
diff changeset
182 }
a61af66fc99e Initial load
duke
parents:
diff changeset
183
a61af66fc99e Initial load
duke
parents:
diff changeset
184 static FloatRegister nr2floatreg (int rnr);
a61af66fc99e Initial load
duke
parents:
diff changeset
185
a61af66fc99e Initial load
duke
parents:
diff changeset
186 static VMReg fpu_regname (int n);
a61af66fc99e Initial load
duke
parents:
diff changeset
187
a61af66fc99e Initial load
duke
parents:
diff changeset
188 static bool is_caller_save_register (LIR_Opr reg);
a61af66fc99e Initial load
duke
parents:
diff changeset
189 static bool is_caller_save_register (Register r);
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1783
diff changeset
190
2002
ac637b7220d1 6985015: C1 needs to support compressed oops
iveresov
parents: 1972
diff changeset
191 static int nof_caller_save_cpu_regs() { return pd_nof_caller_save_cpu_regs_frame_map; }
ac637b7220d1 6985015: C1 needs to support compressed oops
iveresov
parents: 1972
diff changeset
192 static int last_cpu_reg() { return pd_last_cpu_reg; }
ac637b7220d1 6985015: C1 needs to support compressed oops
iveresov
parents: 1972
diff changeset
193
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1783
diff changeset
194 #endif // CPU_SPARC_VM_C1_FRAMEMAP_SPARC_HPP