# HG changeset patch # User Thomas Wuerthinger # Date 1365530417 -7200 # Node ID 63e970d77f5153c17b8c42844f4ea6911bd60328 # Parent 0c3dc49514109ab8e819a742b078705ee3660a9a Common base class for method call operations. diff -r 0c3dc4951410 -r 63e970d77f51 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64IndirectCallOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64IndirectCallOp.java Tue Apr 09 19:57:12 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64IndirectCallOp.java Tue Apr 09 20:00:17 2013 +0200 @@ -52,7 +52,7 @@ @Use({REG}) protected Value metaspaceMethod; - AMD64IndirectCallOp(InvokeTarget targetMethod, Value result, Value[] parameters, Value[] temps, Value metaspaceMethod, Value targetAddress, LIRFrameState state) { + AMD64IndirectCallOp(ResolvedJavaMethod targetMethod, Value result, Value[] parameters, Value[] temps, Value metaspaceMethod, Value targetAddress, LIRFrameState state) { super(targetMethod, result, parameters, temps, targetAddress, state); this.metaspaceMethod = metaspaceMethod; } diff -r 0c3dc4951410 -r 63e970d77f51 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java Tue Apr 09 19:57:12 2013 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java Tue Apr 09 20:00:17 2013 +0200 @@ -56,16 +56,24 @@ } } - @Opcode("CALL_DIRECT") - public static class DirectCallOp extends CallOp { + public abstract static class MethodCallOp extends CallOp { protected final ResolvedJavaMethod callTarget; - public DirectCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + public MethodCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { super(result, parameters, temps, state); this.callTarget = callTarget; } + } + + @Opcode("CALL_DIRECT") + public static class DirectCallOp extends MethodCallOp { + + public DirectCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + super(callTarget, result, parameters, temps, state); + } + @Override public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { directCall(tasm, masm, callTarget, null, true, state); @@ -73,15 +81,12 @@ } @Opcode("CALL_INDIRECT") - public static class IndirectCallOp extends CallOp { + public static class IndirectCallOp extends MethodCallOp { @Use({REG}) protected Value targetAddress; - protected final InvokeTarget callTarget; - - public IndirectCallOp(InvokeTarget callTarget, Value result, Value[] parameters, Value[] temps, Value targetAddress, LIRFrameState state) { - super(result, parameters, temps, state); - this.callTarget = callTarget; + public IndirectCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, Value targetAddress, LIRFrameState state) { + super(callTarget, result, parameters, temps, state); this.targetAddress = targetAddress; }