# HG changeset patch # User Stefan Anzinger # Date 1406214739 25200 # Node ID ca87d8c825acdb2d2cd8676a7ad95c36074019ad # Parent eda09bc52ab9071f8c017a9739a675bee909c003 [SPARC] InvokeInterface calls (vstubs) need the called interface in G5 register diff -r eda09bc52ab9 -r ca87d8c825ac graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotspotDirectVirtualCallOp.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotspotDirectVirtualCallOp.java Mon Jul 21 19:37:16 2014 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotspotDirectVirtualCallOp.java Thu Jul 24 08:12:19 2014 -0700 @@ -25,6 +25,7 @@ import static com.oracle.graal.nodes.java.MethodCallTargetNode.InvokeKind.*; import static com.oracle.graal.sparc.SPARC.*; +import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.asm.sparc.*; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Setx; @@ -55,7 +56,8 @@ // The mark for an invocation that uses an inline cache must be placed at the // instruction that loads the Klass from the inline cache. MarkId.recordMark(crb, invokeKind == Virtual ? MarkId.INVOKEVIRTUAL : MarkId.INVOKEINTERFACE); - new Setx(HotSpotGraalRuntime.runtime().getConfig().nonOopBits, g3, true).emit(masm); + Register scratchRegister = g5; + new Setx(HotSpotGraalRuntime.runtime().getConfig().nonOopBits, scratchRegister, true).emit(masm); super.emitCode(crb, masm); } }