# HG changeset patch # User Doug Simon # Date 1367919443 -7200 # Node ID ffbb0a3650390aabceafd98dadaf0e82256e4a65 # Parent 0fc67e3004715b250de6d7e4f7ca843e85f0d202# Parent 08af000f4b6946fd5c47c6f092af2f78aae505ed Merge. diff -r 0fc67e300471 -r ffbb0a365039 graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java --- a/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Tue May 07 11:07:14 2013 +0200 +++ b/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Tue May 07 11:37:23 2013 +0200 @@ -2134,7 +2134,7 @@ if (isByte(value)) { emitByte(0x6B); emitByte(0xC0 | encode); - emitByte(value); + emitByte(value & 0xFF); } else { emitByte(0x69); emitByte(0xC0 | encode); diff -r 0fc67e300471 -r ffbb0a365039 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Tue May 07 11:07:14 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Tue May 07 11:37:23 2013 +0200 @@ -34,7 +34,7 @@ // os information, register layout, code generation, ... public boolean cAssertions; - public boolean windowsOs; + public final boolean windowsOs = System.getProperty("os.name", "").startsWith("Windows"); public int codeEntryAlignment; public boolean verifyOops; public boolean ciTime; diff -r 0fc67e300471 -r ffbb0a365039 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Tue May 07 11:07:14 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Tue May 07 11:37:23 2013 +0200 @@ -77,9 +77,16 @@ boolean xVirtual = stateX != null && stateX.getState() == EscapeState.Virtual; boolean yVirtual = stateY != null && stateY.getState() == EscapeState.Virtual; - if (xVirtual ^ yVirtual) { - // one of them is virtual: they can never be the same objects - tool.replaceWithValue(LogicConstantNode.contradiction(graph())); + if (xVirtual && !yVirtual) { + if (stateX.getVirtualObject().hasIdentity()) { + // one of them is virtual: they can never be the same objects + tool.replaceWithValue(LogicConstantNode.contradiction(graph())); + } + } else if (!xVirtual && yVirtual) { + if (stateY.getVirtualObject().hasIdentity()) { + // one of them is virtual: they can never be the same objects + tool.replaceWithValue(LogicConstantNode.contradiction(graph())); + } } else if (xVirtual && yVirtual) { boolean xIdentity = stateX.getVirtualObject().hasIdentity(); boolean yIdentity = stateY.getVirtualObject().hasIdentity(); diff -r 0fc67e300471 -r ffbb0a365039 src/share/vm/graal/graalCompilerToVM.cpp --- a/src/share/vm/graal/graalCompilerToVM.cpp Tue May 07 11:07:14 2013 +0200 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Tue May 07 11:37:23 2013 +0200 @@ -643,11 +643,7 @@ #define set_int_array(name, value) do { env->SetObjectField(config, getFieldID(env, config, name, "[I"), value); } while (0) guarantee(HeapWordSize == sizeof(char*), "Graal assumption that HeadWordSize == machine word size is wrong"); -#ifdef _WIN64 - set_boolean("windowsOs", true); -#else - set_boolean("windowsOs", false); -#endif + set_boolean("cAssertions", DEBUG_ONLY(true) NOT_DEBUG(false)); set_boolean("verifyOops", VerifyOops); set_boolean("ciTime", CITime);