< prev index next >
src/hotspot/share/runtime/deoptimization.cpp
Print this page
rev 59103 : imported patch hotspot
*** 1080,1106 ****
*((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
--- 1080,1092 ----
*((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
*** 1119,1134 ****
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;
}
--- 1105,1115 ----
*** 1153,1168 ****
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();
--- 1134,1144 ----
*** 1303,1318 ****
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;
}
--- 1279,1289 ----
< prev index next >