src/cpu/x86/vm/x86_32.ad

changeset 548
ba764ed4b6f2
parent 506
3d62cb85208d
child 604
9148c65abefc
     1.1 --- a/src/cpu/x86/vm/x86_32.ad	Fri Apr 11 09:56:35 2008 -0400
     1.2 +++ b/src/cpu/x86/vm/x86_32.ad	Sun Apr 13 17:43:42 2008 -0400
     1.3 @@ -4538,8 +4538,8 @@
     1.4    // Location of C & interpreter return values
     1.5    c_return_value %{
     1.6      assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" );
     1.7 -    static int lo[Op_RegL+1] = { 0, 0, EAX_num,      EAX_num,      FPR1L_num,    FPR1L_num, EAX_num };
     1.8 -    static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
     1.9 +    static int lo[Op_RegL+1] = { 0, 0, OptoReg::Bad, EAX_num,      EAX_num,      FPR1L_num,    FPR1L_num, EAX_num };
    1.10 +    static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
    1.11  
    1.12      // in SSE2+ mode we want to keep the FPU stack clean so pretend
    1.13      // that C functions return float and double results in XMM0.
    1.14 @@ -4554,8 +4554,8 @@
    1.15    // Location of return values
    1.16    return_value %{
    1.17      assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" );
    1.18 -    static int lo[Op_RegL+1] = { 0, 0, EAX_num,      EAX_num,      FPR1L_num,    FPR1L_num, EAX_num };
    1.19 -    static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
    1.20 +    static int lo[Op_RegL+1] = { 0, 0, OptoReg::Bad, EAX_num,      EAX_num,      FPR1L_num,    FPR1L_num, EAX_num };
    1.21 +    static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
    1.22      if( ideal_reg == Op_RegD && UseSSE>=2 )
    1.23        return OptoRegPair(XMM0b_num,XMM0a_num);
    1.24      if( ideal_reg == Op_RegF && UseSSE>=1 )

mercurial