Mercurial > hg > graal-jvmci-8
diff src/share/vm/c1/c1_LinearScan.cpp @ 13044:a905d33ce13a
8027751: C1 crashes in Weblogic with G1 enabled
Summary: Keep T_OBJECT operands in registers for logical operations on x64
Reviewed-by: kvn, roland
author | iveresov |
---|---|
date | Tue, 05 Nov 2013 00:59:30 -0800 |
parents | 9acbfe04b5c3 |
children | de6a9e811145 |
line wrap: on
line diff
--- a/src/share/vm/c1/c1_LinearScan.cpp Mon Nov 04 21:59:54 2013 +0100 +++ b/src/share/vm/c1/c1_LinearScan.cpp Tue Nov 05 00:59:30 2013 -0800 @@ -1138,8 +1138,10 @@ } } } - - } else if (opr_type != T_LONG) { + // We want to sometimes use logical operations on pointers, in particular in GC barriers. + // Since 64bit logical operations do not current support operands on stack, we have to make sure + // T_OBJECT doesn't get spilled along with T_LONG. + } else if (opr_type != T_LONG LP64_ONLY(&& opr_type != T_OBJECT)) { // integer instruction (note: long operands must always be in register) switch (op->code()) { case lir_cmp: