Mercurial > hg > truffle
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]); |