Mercurial > hg > truffle
diff src/share/vm/prims/methodHandles.cpp @ 1849:5beba6174298
6987555: JSR 292 unboxing to a boolean value fails on big-endian SPARC
Reviewed-by: never, jrose
author | twisti |
---|---|
date | Wed, 13 Oct 2010 01:19:43 -0700 |
parents | 3e8fbc61cee8 |
children | 8213b0f5c92d |
line wrap: on
line diff
--- a/src/share/vm/prims/methodHandles.cpp Tue Oct 12 02:21:06 2010 -0700 +++ b/src/share/vm/prims/methodHandles.cpp Wed Oct 13 01:19:43 2010 -0700 @@ -1568,7 +1568,7 @@ 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 @@ 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 @@ 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;