# HG changeset patch # User Stefan Anzinger # Date 1428660038 -7200 # Node ID 7f4339cca3042aed6fd3ddbd1808a1f5c3184747 # Parent e0b3dc6b025cc1f7a5b6f0b345682634c4b88d0e [SPARC] Save thread register when doing a foreign call which destroys registers. diff -r e0b3dc6b025c -r 7f4339cca304 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Thu Apr 09 23:40:18 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Fri Apr 10 12:00:38 2015 +0200 @@ -129,7 +129,7 @@ assert deoptInfo != null || getStub() != null; } - if (hotspotLinkage.needsJavaFrameAnchor()) { + if (linkage.destroysRegisters() || hotspotLinkage.needsJavaFrameAnchor()) { HotSpotRegistersProvider registers = getProviders().getRegisters(); Register thread = registers.getThreadRegister(); Value threadTemp = newVariable(LIRKind.value(Kind.Long));