src/cpu/x86/vm/methodHandles_x86.cpp

changeset 2565
28bf941f445e
parent 2436
d810e9a3fc33
child 2603
1b4e6a5d98e0
     1.1 --- a/src/cpu/x86/vm/methodHandles_x86.cpp	Fri Feb 11 12:05:43 2011 -0800
     1.2 +++ b/src/cpu/x86/vm/methodHandles_x86.cpp	Mon Feb 14 03:21:18 2011 -0800
     1.3 @@ -602,24 +602,18 @@
     1.4        // make room for the new argument:
     1.5        __ movl(rax_argslot, rcx_bmh_vmargslot);
     1.6        __ lea(rax_argslot, __ argument_address(rax_argslot));
     1.7 -      insert_arg_slots(_masm, arg_slots * stack_move_unit(), arg_mask,
     1.8 -                       rax_argslot, rbx_temp, rdx_temp);
     1.9 +
    1.10 +      insert_arg_slots(_masm, arg_slots * stack_move_unit(), arg_mask, rax_argslot, rbx_temp, rdx_temp);
    1.11  
    1.12        // store bound argument into the new stack slot:
    1.13        __ load_heap_oop(rbx_temp, rcx_bmh_argument);
    1.14 -      Address prim_value_addr(rbx_temp, java_lang_boxing_object::value_offset_in_bytes(arg_type));
    1.15        if (arg_type == T_OBJECT) {
    1.16          __ movptr(Address(rax_argslot, 0), rbx_temp);
    1.17        } else {
    1.18 -        __ load_sized_value(rdx_temp, prim_value_addr,
    1.19 -                            type2aelembytes(arg_type), is_signed_subword_type(arg_type));
    1.20 -        __ movptr(Address(rax_argslot, 0), rdx_temp);
    1.21 -#ifndef _LP64
    1.22 -        if (arg_slots == 2) {
    1.23 -          __ movl(rdx_temp, prim_value_addr.plus_disp(wordSize));
    1.24 -          __ movl(Address(rax_argslot, Interpreter::stackElementSize), rdx_temp);
    1.25 -        }
    1.26 -#endif //_LP64
    1.27 +        Address prim_value_addr(rbx_temp, java_lang_boxing_object::value_offset_in_bytes(arg_type));
    1.28 +        const int arg_size = type2aelembytes(arg_type);
    1.29 +        __ load_sized_value(rdx_temp, prim_value_addr, arg_size, is_signed_subword_type(arg_type), rbx_temp);
    1.30 +        __ store_sized_value(Address(rax_argslot, 0), rdx_temp, arg_size, rbx_temp);
    1.31        }
    1.32  
    1.33        if (direct_to_method) {

mercurial