comparison src/cpu/x86/vm/x86_32.ad @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents 3d62cb85208d
children 9148c65abefc
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
4536 %} 4536 %}
4537 4537
4538 // Location of C & interpreter return values 4538 // Location of C & interpreter return values
4539 c_return_value %{ 4539 c_return_value %{
4540 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" ); 4540 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" );
4541 static int lo[Op_RegL+1] = { 0, 0, EAX_num, EAX_num, FPR1L_num, FPR1L_num, EAX_num }; 4541 static int lo[Op_RegL+1] = { 0, 0, OptoReg::Bad, EAX_num, EAX_num, FPR1L_num, FPR1L_num, EAX_num };
4542 static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num }; 4542 static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
4543 4543
4544 // in SSE2+ mode we want to keep the FPU stack clean so pretend 4544 // in SSE2+ mode we want to keep the FPU stack clean so pretend
4545 // that C functions return float and double results in XMM0. 4545 // that C functions return float and double results in XMM0.
4546 if( ideal_reg == Op_RegD && UseSSE>=2 ) 4546 if( ideal_reg == Op_RegD && UseSSE>=2 )
4547 return OptoRegPair(XMM0b_num,XMM0a_num); 4547 return OptoRegPair(XMM0b_num,XMM0a_num);
4552 %} 4552 %}
4553 4553
4554 // Location of return values 4554 // Location of return values
4555 return_value %{ 4555 return_value %{
4556 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" ); 4556 assert( ideal_reg >= Op_RegI && ideal_reg <= Op_RegL, "only return normal values" );
4557 static int lo[Op_RegL+1] = { 0, 0, EAX_num, EAX_num, FPR1L_num, FPR1L_num, EAX_num }; 4557 static int lo[Op_RegL+1] = { 0, 0, OptoReg::Bad, EAX_num, EAX_num, FPR1L_num, FPR1L_num, EAX_num };
4558 static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num }; 4558 static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
4559 if( ideal_reg == Op_RegD && UseSSE>=2 ) 4559 if( ideal_reg == Op_RegD && UseSSE>=2 )
4560 return OptoRegPair(XMM0b_num,XMM0a_num); 4560 return OptoRegPair(XMM0b_num,XMM0a_num);
4561 if( ideal_reg == Op_RegF && UseSSE>=1 ) 4561 if( ideal_reg == Op_RegF && UseSSE>=1 )
4562 return OptoRegPair(OptoReg::Bad,XMM0a_num); 4562 return OptoRegPair(OptoReg::Bad,XMM0a_num);
4563 return OptoRegPair(hi[ideal_reg],lo[ideal_reg]); 4563 return OptoRegPair(hi[ideal_reg],lo[ideal_reg]);