199 #ifndef PRODUCT |
199 #ifndef PRODUCT |
200 void LIR_OprDesc::validate_type() const { |
200 void LIR_OprDesc::validate_type() const { |
201 |
201 |
202 #ifdef ASSERT |
202 #ifdef ASSERT |
203 if (!is_pointer() && !is_illegal()) { |
203 if (!is_pointer() && !is_illegal()) { |
|
204 OprKind kindfield = kind_field(); // Factored out because of compiler bug, see 8002160 |
204 switch (as_BasicType(type_field())) { |
205 switch (as_BasicType(type_field())) { |
205 case T_LONG: |
206 case T_LONG: |
206 assert((kind_field() == cpu_register || kind_field() == stack_value) && |
207 assert((kindfield == cpu_register || kindfield == stack_value) && |
207 size_field() == double_size, "must match"); |
208 size_field() == double_size, "must match"); |
208 break; |
209 break; |
209 case T_FLOAT: |
210 case T_FLOAT: |
210 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) |
211 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) |
211 assert((kind_field() == fpu_register || kind_field() == stack_value |
212 assert((kindfield == fpu_register || kindfield == stack_value |
212 ARM_ONLY(|| kind_field() == cpu_register) |
213 ARM_ONLY(|| kindfield == cpu_register) |
213 PPC_ONLY(|| kind_field() == cpu_register) ) && |
214 PPC_ONLY(|| kindfield == cpu_register) ) && |
214 size_field() == single_size, "must match"); |
215 size_field() == single_size, "must match"); |
215 break; |
216 break; |
216 case T_DOUBLE: |
217 case T_DOUBLE: |
217 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) |
218 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) |
218 assert((kind_field() == fpu_register || kind_field() == stack_value |
219 assert((kindfield == fpu_register || kindfield == stack_value |
219 ARM_ONLY(|| kind_field() == cpu_register) |
220 ARM_ONLY(|| kindfield == cpu_register) |
220 PPC_ONLY(|| kind_field() == cpu_register) ) && |
221 PPC_ONLY(|| kindfield == cpu_register) ) && |
221 size_field() == double_size, "must match"); |
222 size_field() == double_size, "must match"); |
222 break; |
223 break; |
223 case T_BOOLEAN: |
224 case T_BOOLEAN: |
224 case T_CHAR: |
225 case T_CHAR: |
225 case T_BYTE: |
226 case T_BYTE: |