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 )