Mercurial > hg > truffle
comparison src/share/vm/opto/matcher.cpp @ 1730:f55c4f82ab9d
6978249: spill between cpu and fpu registers when those moves are fast
Reviewed-by: kvn
author | never |
---|---|
date | Thu, 19 Aug 2010 14:51:47 -0700 |
parents | e9ff18c4ace7 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1729:13b87063b4d8 | 1730:f55c4f82ab9d |
---|---|
453 idealreg2spillmask[Op_RegF]->OR(C->FIRST_STACK_mask()); | 453 idealreg2spillmask[Op_RegF]->OR(C->FIRST_STACK_mask()); |
454 *idealreg2spillmask[Op_RegD] = *idealreg2regmask[Op_RegD]; | 454 *idealreg2spillmask[Op_RegD] = *idealreg2regmask[Op_RegD]; |
455 idealreg2spillmask[Op_RegD]->OR(C->FIRST_STACK_mask()); | 455 idealreg2spillmask[Op_RegD]->OR(C->FIRST_STACK_mask()); |
456 *idealreg2spillmask[Op_RegP] = *idealreg2regmask[Op_RegP]; | 456 *idealreg2spillmask[Op_RegP] = *idealreg2regmask[Op_RegP]; |
457 idealreg2spillmask[Op_RegP]->OR(C->FIRST_STACK_mask()); | 457 idealreg2spillmask[Op_RegP]->OR(C->FIRST_STACK_mask()); |
458 | |
459 if (UseFPUForSpilling) { | |
460 // This mask logic assumes that the spill operations are | |
461 // symmetric and that the registers involved are the same size. | |
462 // On sparc for instance we may have to use 64 bit moves will | |
463 // kill 2 registers when used with F0-F31. | |
464 idealreg2spillmask[Op_RegI]->OR(*idealreg2regmask[Op_RegF]); | |
465 idealreg2spillmask[Op_RegF]->OR(*idealreg2regmask[Op_RegI]); | |
466 #ifdef _LP64 | |
467 idealreg2spillmask[Op_RegN]->OR(*idealreg2regmask[Op_RegF]); | |
468 idealreg2spillmask[Op_RegL]->OR(*idealreg2regmask[Op_RegD]); | |
469 idealreg2spillmask[Op_RegD]->OR(*idealreg2regmask[Op_RegL]); | |
470 idealreg2spillmask[Op_RegP]->OR(*idealreg2regmask[Op_RegD]); | |
471 #else | |
472 idealreg2spillmask[Op_RegP]->OR(*idealreg2regmask[Op_RegF]); | |
473 #endif | |
474 } | |
458 | 475 |
459 // Make up debug masks. Any spill slot plus callee-save registers. | 476 // Make up debug masks. Any spill slot plus callee-save registers. |
460 // Caller-save registers are assumed to be trashable by the various | 477 // Caller-save registers are assumed to be trashable by the various |
461 // inline-cache fixup routines. | 478 // inline-cache fixup routines. |
462 *idealreg2debugmask [Op_RegN]= *idealreg2spillmask[Op_RegN]; | 479 *idealreg2debugmask [Op_RegN]= *idealreg2spillmask[Op_RegN]; |