< prev index next >
src/hotspot/share/runtime/deoptimization.cpp
Print this page
rev 59383 : [mq]: final
*** 1081,1107 ****
*((jshort *) check_alignment_get_addr(obj, index, 2)) = (jshort) *((jint *) &val);
break;
case 4:
*((jint *) check_alignment_get_addr(obj, index, 4)) = (jint) *((jint *) &val);
break;
! case 8: {
! #ifdef _LP64
! jlong res = (jlong) *((jlong *) &val);
! #else
! #ifdef SPARC
! // For SPARC we have to swap high and low words.
! jlong v = (jlong) *((jlong *) &val);
! jlong res = 0;
! res |= ((v & (jlong) 0xffffffff) << 32);
! res |= ((v >> 32) & (jlong) 0xffffffff);
! #else
! jlong res = (jlong) *((jlong *) &val);
! #endif // SPARC
! #endif
! *((jlong *) check_alignment_get_addr(obj, index, 8)) = res;
break;
- }
default:
ShouldNotReachHere();
}
}
#endif // INCLUDE_JVMCI
--- 1081,1093 ----
*((jshort *) check_alignment_get_addr(obj, index, 2)) = (jshort) *((jint *) &val);
break;
case 4:
*((jint *) check_alignment_get_addr(obj, index, 4)) = (jint) *((jint *) &val);
break;
! case 8:
! *((jlong *) check_alignment_get_addr(obj, index, 8)) = (jlong) *((jlong *) &val);
break;
default:
ShouldNotReachHere();
}
}
#endif // INCLUDE_JVMCI
*** 1120,1135 ****
StackValue* low =
StackValue::create_stack_value(fr, reg_map, sv->field_at(++i));
#ifdef _LP64
jlong res = (jlong)low->get_int();
#else
- #ifdef SPARC
- // For SPARC we have to swap high and low words.
- jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int());
- #else
jlong res = jlong_from((jint)value->get_int(), (jint)low->get_int());
- #endif //SPARC
#endif
obj->long_at_put(index, res);
break;
}
--- 1106,1116 ----
*** 1154,1169 ****
if (big_value) {
StackValue* low = StackValue::create_stack_value(fr, reg_map, sv->field_at(++i));
#ifdef _LP64
jlong res = (jlong)low->get_int();
#else
- #ifdef SPARC
- // For SPARC we have to swap high and low words.
- jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int());
- #else
jlong res = jlong_from((jint)value->get_int(), (jint)low->get_int());
- #endif //SPARC
#endif
obj->int_at_put(index, (jint)*((jint*)&res));
obj->int_at_put(++index, (jint)*(((jint*)&res) + 1));
} else {
val = value->get_int();
--- 1135,1145 ----
*** 1304,1319 ****
assert(value->type() == T_INT, "Agreement.");
StackValue* low = StackValue::create_stack_value(fr, reg_map, sv->field_at(++svIndex));
#ifdef _LP64
jlong res = (jlong)low->get_int();
#else
- #ifdef SPARC
- // For SPARC we have to swap high and low words.
- jlong res = jlong_from((jint)low->get_int(), (jint)value->get_int());
- #else
jlong res = jlong_from((jint)value->get_int(), (jint)low->get_int());
- #endif //SPARC
#endif
obj->long_field_put(offset, res);
break;
}
--- 1280,1290 ----
< prev index next >