< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp

Print this page

        

*** 891,901 **** ignored++; } else { int off = sig_extended.at(next_arg_comp)._offset; assert(off > 0, "offset in object should be positive"); size_t size_in_bytes = is_java_primitive(bt) ? type2aelembytes(bt) : wordSize; ! bool is_oop = (bt == T_OBJECT || bt == T_ARRAY); has_oop_field = has_oop_field || is_oop; gen_c2i_adapter_helper(masm, bt, next_arg_comp > 0 ? sig_extended.at(next_arg_comp-1)._bt : T_ILLEGAL, size_in_bytes, regs[next_arg_comp-ignored], Address(r11, off), extraspace, is_oop); } } while (vt != 0); --- 891,901 ---- ignored++; } else { int off = sig_extended.at(next_arg_comp)._offset; assert(off > 0, "offset in object should be positive"); size_t size_in_bytes = is_java_primitive(bt) ? type2aelembytes(bt) : wordSize; ! bool is_oop = (bt == T_OBJECT || bt == T_VALUETYPEPTR || bt == T_ARRAY); has_oop_field = has_oop_field || is_oop; gen_c2i_adapter_helper(masm, bt, next_arg_comp > 0 ? sig_extended.at(next_arg_comp-1)._bt : T_ILLEGAL, size_in_bytes, regs[next_arg_comp-ignored], Address(r11, off), extraspace, is_oop); } } while (vt != 0);
*** 1150,1160 **** ignored++; } else { int off = sig_extended.at(next_arg_comp)._offset; assert(off > 0, "offset in object should be positive"); size_t size_in_bytes = is_java_primitive(bt) ? type2aelembytes(bt) : wordSize; ! bool is_oop = (bt == T_OBJECT || bt == T_ARRAY); gen_i2c_adapter_helper(masm, bt, prev_bt, size_in_bytes, regs[next_arg_comp - ignored], Address(r10, off), is_oop); } } while (vt != 0); } } --- 1150,1160 ---- ignored++; } else { int off = sig_extended.at(next_arg_comp)._offset; assert(off > 0, "offset in object should be positive"); size_t size_in_bytes = is_java_primitive(bt) ? type2aelembytes(bt) : wordSize; ! bool is_oop = (bt == T_OBJECT || bt == T_VALUETYPEPTR || bt == T_ARRAY); gen_i2c_adapter_helper(masm, bt, prev_bt, size_in_bytes, regs[next_arg_comp - ignored], Address(r10, off), is_oop); } } while (vt != 0); } }
*** 1245,1254 **** --- 1245,1258 ---- sig_str[idx++] = '('; for (int index = 0; index < length; index++) { BasicType bt = sig_extended.at(index)._bt; if (bt == T_VALUETYPE) { has_value_argument = true; + } else if (bt == T_VALUETYPEPTR) { + // non-flattened value type field + sig_str[idx++] = type2char(T_VALUETYPE); + sig_str[idx++] = ';'; } else if (bt == T_VOID) { // Ignore } else { if (bt == T_ARRAY) { bt = T_OBJECT; // We don't know the element type, treat as Object
*** 4198,4208 **** Address to(rax, off); if (bt == T_FLOAT) { __ movflt(to, r_1->as_XMMRegister()); } else if (bt == T_DOUBLE) { __ movdbl(to, r_1->as_XMMRegister()); ! } else if (bt == T_OBJECT || bt == T_ARRAY) { __ store_heap_oop(to, r_1->as_Register()); } else { assert(is_java_primitive(bt), "unexpected basic type"); size_t size_in_bytes = type2aelembytes(bt); __ store_sized_value(to, r_1->as_Register(), size_in_bytes); --- 4202,4212 ---- Address to(rax, off); if (bt == T_FLOAT) { __ movflt(to, r_1->as_XMMRegister()); } else if (bt == T_DOUBLE) { __ movdbl(to, r_1->as_XMMRegister()); ! } else if (bt == T_OBJECT || bt == T_VALUETYPEPTR || bt == T_ARRAY) { __ store_heap_oop(to, r_1->as_Register()); } else { assert(is_java_primitive(bt), "unexpected basic type"); size_t size_in_bytes = type2aelembytes(bt); __ store_sized_value(to, r_1->as_Register(), size_in_bytes);
*** 4235,4245 **** Address from(rax, off); if (bt == T_FLOAT) { __ movflt(r_1->as_XMMRegister(), from); } else if (bt == T_DOUBLE) { __ movdbl(r_1->as_XMMRegister(), from); ! } else if (bt == T_OBJECT || bt == T_ARRAY) { __ load_heap_oop(r_1->as_Register(), from); } else { assert(is_java_primitive(bt), "unexpected basic type"); size_t size_in_bytes = type2aelembytes(bt); __ load_sized_value(r_1->as_Register(), from, size_in_bytes, bt != T_CHAR && bt != T_BOOLEAN); --- 4239,4249 ---- Address from(rax, off); if (bt == T_FLOAT) { __ movflt(r_1->as_XMMRegister(), from); } else if (bt == T_DOUBLE) { __ movdbl(r_1->as_XMMRegister(), from); ! } else if (bt == T_OBJECT || bt == T_VALUETYPEPTR || bt == T_ARRAY) { __ load_heap_oop(r_1->as_Register(), from); } else { assert(is_java_primitive(bt), "unexpected basic type"); size_t size_in_bytes = type2aelembytes(bt); __ load_sized_value(r_1->as_Register(), from, size_in_bytes, bt != T_CHAR && bt != T_BOOLEAN);
< prev index next >