comparison src/share/vm/c1/c1_LIR.hpp @ 2089:037c727f35fb

7009231: C1: Incorrect CAS code for longs on SPARC 32bit Summary: Fix CAS of longs on SPARC 32bit and cmove on SPARC 64bit. Reviewed-by: kvn
author iveresov
date Mon, 27 Dec 2010 21:51:31 -0800
parents ac637b7220d1
children 8033953d67ff
comparison
equal deleted inserted replaced
2088:8d0b933dda2d 2089:037c727f35fb
1566 , _fpu_stack_size(0) 1566 , _fpu_stack_size(0)
1567 , _tmp(LIR_OprFact::illegalOpr) { 1567 , _tmp(LIR_OprFact::illegalOpr) {
1568 assert(code == lir_cmp, "code check"); 1568 assert(code == lir_cmp, "code check");
1569 } 1569 }
1570 1570
1571 LIR_Op2(LIR_Code code, LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result) 1571 LIR_Op2(LIR_Code code, LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result, BasicType type)
1572 : LIR_Op(code, result, NULL) 1572 : LIR_Op(code, result, NULL)
1573 , _opr1(opr1) 1573 , _opr1(opr1)
1574 , _opr2(opr2) 1574 , _opr2(opr2)
1575 , _type(T_ILLEGAL) 1575 , _type(type)
1576 , _condition(condition) 1576 , _condition(condition)
1577 , _fpu_stack_size(0) 1577 , _fpu_stack_size(0)
1578 , _tmp(LIR_OprFact::illegalOpr) { 1578 , _tmp(LIR_OprFact::illegalOpr) {
1579 assert(code == lir_cmove, "code check"); 1579 assert(code == lir_cmove, "code check");
1580 assert(type != T_ILLEGAL, "cmove should have type");
1580 } 1581 }
1581 1582
1582 LIR_Op2(LIR_Code code, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result = LIR_OprFact::illegalOpr, 1583 LIR_Op2(LIR_Code code, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result = LIR_OprFact::illegalOpr,
1583 CodeEmitInfo* info = NULL, BasicType type = T_ILLEGAL) 1584 CodeEmitInfo* info = NULL, BasicType type = T_ILLEGAL)
1584 : LIR_Op(code, result, info) 1585 : LIR_Op(code, result, info)
1991 } 1992 }
1992 1993
1993 void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info); 1994 void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info);
1994 void cmp_reg_mem(LIR_Condition condition, LIR_Opr reg, LIR_Address* addr, CodeEmitInfo* info); 1995 void cmp_reg_mem(LIR_Condition condition, LIR_Opr reg, LIR_Address* addr, CodeEmitInfo* info);
1995 1996
1996 void cmove(LIR_Condition condition, LIR_Opr src1, LIR_Opr src2, LIR_Opr dst) { 1997 void cmove(LIR_Condition condition, LIR_Opr src1, LIR_Opr src2, LIR_Opr dst, BasicType type) {
1997 append(new LIR_Op2(lir_cmove, condition, src1, src2, dst)); 1998 append(new LIR_Op2(lir_cmove, condition, src1, src2, dst, type));
1998 } 1999 }
1999 2000
2000 void cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, 2001 void cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value,
2001 LIR_Opr t1, LIR_Opr t2, LIR_Opr result = LIR_OprFact::illegalOpr); 2002 LIR_Opr t1, LIR_Opr t2, LIR_Opr result = LIR_OprFact::illegalOpr);
2002 void cas_obj(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, 2003 void cas_obj(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value,