src/share/vm/c1/c1_LIR.cpp

changeset 9215
8843990f569c
parent 9214
950e185f5ded
child 9249
8401c6dc109a
equal deleted inserted replaced
9214:950e185f5ded 9215:8843990f569c
262 } 262 }
263 } 263 }
264 264
265 #ifdef MIPS 265 #ifdef MIPS
266 bool LIR_OprDesc::has_common_register(LIR_Opr opr) const { 266 bool LIR_OprDesc::has_common_register(LIR_Opr opr) const {
267 #ifdef _LP64
268 return is_same_register(opr);
269 #else
270 if (!(is_register() && opr->is_register())) return false; 267 if (!(is_register() && opr->is_register())) return false;
271 if (!(kind_field() == opr->kind_field())) return false;
272 268
273 if (is_single_cpu()) { 269 if (is_single_cpu()) {
274 if (opr->is_single_cpu()) { 270 if (opr->is_single_cpu()) {
275 return as_register() == opr->as_register(); 271 return as_register() == opr->as_register();
276 } else { 272 } else if (opr->is_double_cpu()) {
277 Register dst = as_register(); 273 Register dst = as_register();
278 Register lo = opr->as_register_lo(); 274 Register lo = opr->as_register_lo();
275 #ifdef _LP64
276 if (dst == lo) return true;
277 #else
279 Register hi = opr->as_register_hi(); 278 Register hi = opr->as_register_hi();
280 if (dst == lo || dst == hi) return true; 279 if (dst == lo || dst == hi) return true;
281 } 280 #endif
282 281 }
283 } else { 282
283 } else if (is_double_cpu()) {
284 Register dst_lo = as_register_lo(); 284 Register dst_lo = as_register_lo();
285 #ifndef _LP64
285 Register dst_hi = as_register_hi(); 286 Register dst_hi = as_register_hi();
287 #endif
286 288
287 if (opr->is_single_cpu()) { 289 if (opr->is_single_cpu()) {
288 Register src = opr->as_register(); 290 Register src = opr->as_register();
291 #ifndef _LP64
289 if (dst_lo == src || dst_hi == src) return true; 292 if (dst_lo == src || dst_hi == src) return true;
290 } else { 293 #else
294 if (dst_lo == src) return true;
295 #endif
296 } else if (opr->is_double_cpu()) {
291 Register src_lo = opr->as_register_lo(); 297 Register src_lo = opr->as_register_lo();
298 #ifndef _LP64
292 Register src_hi = opr->as_register_hi(); 299 Register src_hi = opr->as_register_hi();
293 if (dst_lo == src_lo || 300 if (dst_lo == src_lo ||
294 dst_lo == src_hi || 301 dst_lo == src_hi ||
295 dst_hi == src_lo || 302 dst_hi == src_lo ||
296 dst_hi == src_hi) return true; 303 dst_hi == src_hi) return true;
304 #else
305 if (dst_lo == src_lo) return true;
306 #endif
297 } 307 }
298 } 308 }
299 return false; 309 return false;
300 #endif
301 } 310 }
302 #endif 311 #endif
303 312
304 void LIR_Op2::verify() const { 313 void LIR_Op2::verify() const {
305 #ifdef ASSERT 314 #ifdef ASSERT

mercurial