Mercurial > hg > graal-jvmci-8
comparison src/share/vm/c1/c1_LIR.cpp @ 1297:c466efa608d5
6932496: c1: deoptimization of jsr subroutine fails on sparcv9
Summary: store jsr ret bci as intptr constant in c1 debug info
Reviewed-by: never
author | roland |
---|---|
date | Fri, 05 Mar 2010 13:58:34 +0100 |
parents | 3cf667df43ef |
children | fc2c71045ada |
comparison
equal
deleted
inserted
replaced
1296:d8e270c4f609 | 1297:c466efa608d5 |
---|---|
74 return LIR_OprFact::oopConst(NULL); | 74 return LIR_OprFact::oopConst(NULL); |
75 } else { | 75 } else { |
76 return LIR_OprFact::oopConst(type->as_ObjectType()->encoding()); | 76 return LIR_OprFact::oopConst(type->as_ObjectType()->encoding()); |
77 } | 77 } |
78 } | 78 } |
79 case addressTag: return LIR_OprFact::intConst(type->as_AddressConstant()->value()); | 79 case addressTag: return LIR_OprFact::addressConst(type->as_AddressConstant()->value()); |
80 case intTag : return LIR_OprFact::intConst(type->as_IntConstant()->value()); | 80 case intTag : return LIR_OprFact::intConst(type->as_IntConstant()->value()); |
81 case floatTag : return LIR_OprFact::floatConst(type->as_FloatConstant()->value()); | 81 case floatTag : return LIR_OprFact::floatConst(type->as_FloatConstant()->value()); |
82 case longTag : return LIR_OprFact::longConst(type->as_LongConstant()->value()); | 82 case longTag : return LIR_OprFact::longConst(type->as_LongConstant()->value()); |
83 case doubleTag : return LIR_OprFact::doubleConst(type->as_DoubleConstant()->value()); | 83 case doubleTag : return LIR_OprFact::doubleConst(type->as_DoubleConstant()->value()); |
84 default: ShouldNotReachHere(); return LIR_OprFact::intConst(-1); | 84 default: ShouldNotReachHere(); return LIR_OprFact::intConst(-1); |
87 | 87 |
88 | 88 |
89 LIR_Opr LIR_OprFact::dummy_value_type(ValueType* type) { | 89 LIR_Opr LIR_OprFact::dummy_value_type(ValueType* type) { |
90 switch (type->tag()) { | 90 switch (type->tag()) { |
91 case objectTag: return LIR_OprFact::oopConst(NULL); | 91 case objectTag: return LIR_OprFact::oopConst(NULL); |
92 case addressTag: | 92 case addressTag:return LIR_OprFact::addressConst(0); |
93 case intTag: return LIR_OprFact::intConst(0); | 93 case intTag: return LIR_OprFact::intConst(0); |
94 case floatTag: return LIR_OprFact::floatConst(0.0); | 94 case floatTag: return LIR_OprFact::floatConst(0.0); |
95 case longTag: return LIR_OprFact::longConst(0); | 95 case longTag: return LIR_OprFact::longConst(0); |
96 case doubleTag: return LIR_OprFact::doubleConst(0.0); | 96 case doubleTag: return LIR_OprFact::doubleConst(0.0); |
97 default: ShouldNotReachHere(); return LIR_OprFact::intConst(-1); | 97 default: ShouldNotReachHere(); return LIR_OprFact::intConst(-1); |
1409 | 1409 |
1410 | 1410 |
1411 // LIR_Address | 1411 // LIR_Address |
1412 void LIR_Const::print_value_on(outputStream* out) const { | 1412 void LIR_Const::print_value_on(outputStream* out) const { |
1413 switch (type()) { | 1413 switch (type()) { |
1414 case T_ADDRESS:out->print("address:%d",as_jint()); break; | |
1414 case T_INT: out->print("int:%d", as_jint()); break; | 1415 case T_INT: out->print("int:%d", as_jint()); break; |
1415 case T_LONG: out->print("lng:%lld", as_jlong()); break; | 1416 case T_LONG: out->print("lng:%lld", as_jlong()); break; |
1416 case T_FLOAT: out->print("flt:%f", as_jfloat()); break; | 1417 case T_FLOAT: out->print("flt:%f", as_jfloat()); break; |
1417 case T_DOUBLE: out->print("dbl:%f", as_jdouble()); break; | 1418 case T_DOUBLE: out->print("dbl:%f", as_jdouble()); break; |
1418 case T_OBJECT: out->print("obj:0x%x", as_jobject()); break; | 1419 case T_OBJECT: out->print("obj:0x%x", as_jobject()); break; |