comparison 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
comparison
equal deleted inserted replaced
1847:a932f331ef90 1849:5beba6174298
1566 break; 1566 break;
1567 } 1567 }
1568 if (ptype != T_INT) { 1568 if (ptype != T_INT) {
1569 int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT); 1569 int value_offset = java_lang_boxing_object::value_offset_in_bytes(T_INT);
1570 jint value = argument->int_field(value_offset); 1570 jint value = argument->int_field(value_offset);
1571 int vminfo = adapter_subword_vminfo(ptype); 1571 int vminfo = adapter_unbox_subword_vminfo(ptype);
1572 jint subword = truncate_subword_from_vminfo(value, vminfo); 1572 jint subword = truncate_subword_from_vminfo(value, vminfo);
1573 if (value != subword) { 1573 if (value != subword) {
1574 err = "bound subword value does not fit into the subword type"; 1574 err = "bound subword value does not fit into the subword type";
1575 break; 1575 break;
1576 } 1576 }
2016 switch (type2size[src] *4+ type2size[dest]) { 2016 switch (type2size[src] *4+ type2size[dest]) {
2017 case 1 *4+ 1: 2017 case 1 *4+ 1:
2018 assert(src == T_INT || is_subword_type(src), "source is not float"); 2018 assert(src == T_INT || is_subword_type(src), "source is not float");
2019 // Subword-related cases are int -> {boolean,byte,char,short}. 2019 // Subword-related cases are int -> {boolean,byte,char,short}.
2020 ek_opt = _adapter_opt_i2i; 2020 ek_opt = _adapter_opt_i2i;
2021 vminfo = adapter_subword_vminfo(dest); 2021 vminfo = adapter_prim_to_prim_subword_vminfo(dest);
2022 break; 2022 break;
2023 case 2 *4+ 1: 2023 case 2 *4+ 1:
2024 if (src == T_LONG && (dest == T_INT || is_subword_type(dest))) { 2024 if (src == T_LONG && (dest == T_INT || is_subword_type(dest))) {
2025 ek_opt = _adapter_opt_l2i; 2025 ek_opt = _adapter_opt_l2i;
2026 vminfo = adapter_subword_vminfo(dest); 2026 vminfo = adapter_prim_to_prim_subword_vminfo(dest);
2027 } else if (src == T_DOUBLE && dest == T_FLOAT) { 2027 } else if (src == T_DOUBLE && dest == T_FLOAT) {
2028 ek_opt = _adapter_opt_d2f; 2028 ek_opt = _adapter_opt_d2f;
2029 } else { 2029 } else {
2030 assert(false, ""); 2030 assert(false, "");
2031 } 2031 }
2049 case _adapter_ref_to_prim: 2049 case _adapter_ref_to_prim:
2050 { 2050 {
2051 switch (type2size[dest]) { 2051 switch (type2size[dest]) {
2052 case 1: 2052 case 1:
2053 ek_opt = _adapter_opt_unboxi; 2053 ek_opt = _adapter_opt_unboxi;
2054 vminfo = adapter_subword_vminfo(dest); 2054 vminfo = adapter_unbox_subword_vminfo(dest);
2055 break; 2055 break;
2056 case 2: 2056 case 2:
2057 ek_opt = _adapter_opt_unboxl; 2057 ek_opt = _adapter_opt_unboxl;
2058 break; 2058 break;
2059 default: 2059 default: