mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
6987555: JSR 292 unboxing to a boolean value fails on big-endian SPARC
Reviewed-by: never, jrose
This commit is contained in:
parent
e870866699
commit
98e9ecf9da
4 changed files with 231 additions and 35 deletions
|
@ -1568,7 +1568,7 @@ void MethodHandles::verify_BoundMethodHandle(Handle mh, Handle target, int argnu
|
|||
if (ptype != T_INT) {
|
||||
int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT);
|
||||
jint value = argument->int_field(value_offset);
|
||||
int vminfo = adapter_subword_vminfo(ptype);
|
||||
int vminfo = adapter_unbox_subword_vminfo(ptype);
|
||||
jint subword = truncate_subword_from_vminfo(value, vminfo);
|
||||
if (value != subword) {
|
||||
err = "bound subword value does not fit into the subword type";
|
||||
|
@ -2018,12 +2018,12 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
|
|||
assert(src == T_INT || is_subword_type(src), "source is not float");
|
||||
// Subword-related cases are int -> {boolean,byte,char,short}.
|
||||
ek_opt = _adapter_opt_i2i;
|
||||
vminfo = adapter_subword_vminfo(dest);
|
||||
vminfo = adapter_prim_to_prim_subword_vminfo(dest);
|
||||
break;
|
||||
case 2 *4+ 1:
|
||||
if (src == T_LONG && (dest == T_INT || is_subword_type(dest))) {
|
||||
ek_opt = _adapter_opt_l2i;
|
||||
vminfo = adapter_subword_vminfo(dest);
|
||||
vminfo = adapter_prim_to_prim_subword_vminfo(dest);
|
||||
} else if (src == T_DOUBLE && dest == T_FLOAT) {
|
||||
ek_opt = _adapter_opt_d2f;
|
||||
} else {
|
||||
|
@ -2051,7 +2051,7 @@ void MethodHandles::init_AdapterMethodHandle(Handle mh, Handle target, int argnu
|
|||
switch (type2size[dest]) {
|
||||
case 1:
|
||||
ek_opt = _adapter_opt_unboxi;
|
||||
vminfo = adapter_subword_vminfo(dest);
|
||||
vminfo = adapter_unbox_subword_vminfo(dest);
|
||||
break;
|
||||
case 2:
|
||||
ek_opt = _adapter_opt_unboxl;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue