# HG changeset patch # User Thomas Wuerthinger # Date 1365530232 -7200 # Node ID 0c3dc49514109ab8e819a742b078705ee3660a9a # Parent 14c629440b1a9d0a7e0c499400392e709ba59993 Move inner class for more logical ordering. diff -r 14c629440b1a -r 0c3dc4951410 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:56:30 2013 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java Tue Apr 09 19:57:12 2013 +0200 @@ -72,6 +72,31 @@ } } + @Opcode("CALL_INDIRECT") + public static class IndirectCallOp extends CallOp { + + @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; + this.targetAddress = targetAddress; + } + + @Override + public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { + indirectCall(tasm, masm, asRegister(targetAddress), callTarget, state); + } + + @Override + protected void verify() { + super.verify(); + assert isRegister(targetAddress) : "The current register allocator cannot handle variables to be used at call sites, it must be in a fixed register for now"; + } + } + public abstract static class RuntimeCallOp extends CallOp { protected final RuntimeCallTarget callTarget; @@ -116,31 +141,6 @@ } } - @Opcode("CALL_INDIRECT") - public static class IndirectCallOp extends CallOp { - - @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; - this.targetAddress = targetAddress; - } - - @Override - public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { - indirectCall(tasm, masm, asRegister(targetAddress), callTarget, state); - } - - @Override - protected void verify() { - super.verify(); - assert isRegister(targetAddress) : "The current register allocator cannot handle variables to be used at call sites, it must be in a fixed register for now"; - } - } - public static void directCall(TargetMethodAssembler tasm, AMD64MacroAssembler masm, InvokeTarget callTarget, Register scratch, boolean align, LIRFrameState info) { if (align) { emitAlignmentForDirectCall(tasm, masm);