--- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Thu May 27 18:01:56 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Thu May 27 22:01:55 2010 -0700
@@ -2462,9 +2462,18 @@
}
#endif // _LP64
} else {
+#ifdef _LP64
+ Register r_lo;
+ if (right->type() == T_OBJECT || right->type() == T_ARRAY) {
+ r_lo = right->as_register();
+ } else {
+ r_lo = right->as_register_lo();
+ }
+#else
Register r_lo = right->as_register_lo();
Register r_hi = right->as_register_hi();
assert(l_lo != r_hi, "overwriting registers");
+#endif
switch (code) {
case lir_logic_and:
__ andptr(l_lo, r_lo);