< prev index next >

src/hotspot/cpu/x86/stubGenerator_x86_64.cpp

Print this page

        

*** 414,426 **** __ ret(0); // handle return types different from T_INT __ BIND(is_value); if (ValueTypeReturnedAsFields) { ! // Handle value type returned as fields ! __ store_value_type_fields_to_buf(NULL); ! __ movptr(r13, result); } __ BIND(is_long); __ movq(Address(r13, 0), rax); __ jmp(exit); --- 414,434 ---- __ ret(0); // handle return types different from T_INT __ BIND(is_value); if (ValueTypeReturnedAsFields) { ! // Check for flattened return value ! __ testptr(rax, 1); ! __ jcc(Assembler::zero, is_long); ! // Initialize pre-allocated buffer ! __ mov(rbx, rax); ! __ andptr(rbx, -2); ! __ movptr(rbx, Address(rbx, InstanceKlass::adr_valueklass_fixed_block_offset())); ! __ movptr(rbx, Address(rbx, ValueKlass::pack_handler_offset())); ! __ movptr(rax, Address(r13, 0)); ! __ call(rbx); ! __ jmp(exit); } __ BIND(is_long); __ movq(Address(r13, 0), rax); __ jmp(exit);
< prev index next >