diff -r 7588156f5cf9 -r c2d3caa64b3e src/share/vm/opto/matcher.cpp --- a/src/share/vm/opto/matcher.cpp Mon Sep 05 17:09:05 2011 -0700 +++ b/src/share/vm/opto/matcher.cpp Wed Sep 07 09:35:52 2011 +0200 @@ -501,6 +501,12 @@ idealreg2spillmask[Op_RegP]->OR(*idealreg2regmask[Op_RegD]); #else idealreg2spillmask[Op_RegP]->OR(*idealreg2regmask[Op_RegF]); +#ifdef ARM + // ARM has support for moving 64bit values between a pair of + // integer registers and a double register + idealreg2spillmask[Op_RegL]->OR(*idealreg2regmask[Op_RegD]); + idealreg2spillmask[Op_RegD]->OR(*idealreg2regmask[Op_RegL]); +#endif #endif }