Mercurial > hg > graal-compiler
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, |