src/cpu/x86/vm/sharedRuntime_x86_64.cpp

changeset 600
437d03ea40b1
parent 551
018d5b58dd4f
child 631
d1605aabd0a1
     1.1 --- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Wed May 21 13:46:23 2008 -0700
     1.2 +++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Wed May 21 16:31:35 2008 -0700
     1.3 @@ -1950,7 +1950,6 @@
     1.4    int total_strings = 0;
     1.5    int first_arg_to_pass = 0;
     1.6    int total_c_args = 0;
     1.7 -  int box_offset = java_lang_boxing_object::value_offset_in_bytes();
     1.8  
     1.9    // Skip the receiver as dtrace doesn't want to see it
    1.10    if( !method->is_static() ) {
    1.11 @@ -2197,8 +2196,10 @@
    1.12                __ testq(in_reg, in_reg);
    1.13                __ jcc(Assembler::zero, skipUnbox);
    1.14  
    1.15 +              BasicType bt = out_sig_bt[c_arg];
    1.16 +              int box_offset = java_lang_boxing_object::value_offset_in_bytes(bt);
    1.17                Address src1(in_reg, box_offset);
    1.18 -              if ( out_sig_bt[c_arg] == T_LONG ) {
    1.19 +              if ( bt == T_LONG ) {
    1.20                  __ movq(in_reg,  src1);
    1.21                  __ movq(stack_dst, in_reg);
    1.22                  assert(out_sig_bt[c_arg+1] == T_VOID, "must be");
    1.23 @@ -2460,8 +2461,10 @@
    1.24            Label skip;
    1.25            __ testq(r, r);
    1.26            __ jcc(Assembler::equal, skip);
    1.27 +          BasicType bt = out_sig_bt[c_arg];
    1.28 +          int box_offset = java_lang_boxing_object::value_offset_in_bytes(bt);
    1.29            Address src1(r, box_offset);
    1.30 -          if ( out_sig_bt[c_arg] == T_LONG ) {
    1.31 +          if ( bt == T_LONG ) {
    1.32              __ movq(r, src1);
    1.33            } else {
    1.34              __ movl(r, src1);

mercurial