changeset 9292:90ca451a2f28

Make LIRGeneratorTool an interface.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 25 Apr 2013 11:39:54 +0200
parents cadb3702cb8f
children d006c9920e94
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java
diffstat 2 files changed, 53 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java	Wed Apr 24 21:50:26 2013 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java	Thu Apr 25 11:39:54 2013 +0200
@@ -52,7 +52,7 @@
 /**
  * This class traverses the HIR instructions and generates LIR instructions from them.
  */
-public abstract class LIRGenerator extends LIRGeneratorTool {
+public abstract class LIRGenerator implements LIRGeneratorTool {
 
     public final FrameMap frameMap;
     public final NodeMap<Value> nodeOperands;
@@ -826,6 +826,10 @@
         return frameMap;
     }
 
+    @Override
+    public void beforeRegisterAllocation() {
+    }
+
     public abstract void emitBitCount(Variable result, Value operand);
 
     public abstract void emitBitScanForward(Variable result, Value operand);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java	Wed Apr 24 21:50:26 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java	Thu Apr 25 11:39:54 2013 +0200
@@ -29,11 +29,11 @@
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.java.*;
 
-public abstract class LIRGeneratorTool {
+public interface LIRGeneratorTool {
 
-    public abstract TargetDescription target();
+    TargetDescription target();
 
-    public abstract CodeCacheProvider getRuntime();
+    CodeCacheProvider getRuntime();
 
     /**
      * Checks whether the supplied constant can be used without loading it into a register for most
@@ -43,100 +43,99 @@
      * @return True if the constant can be used directly, false if the constant needs to be in a
      *         register.
      */
-    public abstract boolean canInlineConstant(Constant c);
+    boolean canInlineConstant(Constant c);
 
-    public abstract RegisterAttributes attributes(Register register);
+    RegisterAttributes attributes(Register register);
 
-    public abstract Value operand(ValueNode object);
+    Value operand(ValueNode object);
 
-    public abstract AllocatableValue newVariable(Kind kind);
+    AllocatableValue newVariable(Kind kind);
 
-    public abstract Value setResult(ValueNode x, Value operand);
+    Value setResult(ValueNode x, Value operand);
 
-    public abstract Value emitMove(Value input);
+    Value emitMove(Value input);
 
-    public abstract void emitMove(Value dst, Value src);
+    void emitMove(Value dst, Value src);
 
-    public abstract Value emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode deopting);
+    Value emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode deopting);
 
-    public abstract void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value input, DeoptimizingNode deopting);
+    void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value input, DeoptimizingNode deopting);
 
-    public abstract Value emitLea(Value base, long displacement, Value index, int scale);
+    Value emitLea(Value base, long displacement, Value index, int scale);
 
-    public abstract Value emitLea(StackSlot slot);
+    Value emitLea(StackSlot slot);
 
-    public abstract Value emitNegate(Value input);
+    Value emitNegate(Value input);
 
-    public abstract Value emitAdd(Value a, Value b);
+    Value emitAdd(Value a, Value b);
 
-    public abstract Value emitSub(Value a, Value b);
+    Value emitSub(Value a, Value b);
 
-    public abstract Value emitMul(Value a, Value b);
+    Value emitMul(Value a, Value b);
 
-    public abstract Value emitDiv(Value a, Value b, DeoptimizingNode deopting);
+    Value emitDiv(Value a, Value b, DeoptimizingNode deopting);
 
-    public abstract Value emitRem(Value a, Value b, DeoptimizingNode deopting);
+    Value emitRem(Value a, Value b, DeoptimizingNode deopting);
 
-    public abstract Value emitUDiv(Value a, Value b, DeoptimizingNode deopting);
+    Value emitUDiv(Value a, Value b, DeoptimizingNode deopting);
 
-    public abstract Value emitURem(Value a, Value b, DeoptimizingNode deopting);
+    Value emitURem(Value a, Value b, DeoptimizingNode deopting);
 
-    public abstract Value emitAnd(Value a, Value b);
+    Value emitAnd(Value a, Value b);
 
-    public abstract Value emitOr(Value a, Value b);
+    Value emitOr(Value a, Value b);
 
-    public abstract Value emitXor(Value a, Value b);
+    Value emitXor(Value a, Value b);
 
-    public abstract Value emitShl(Value a, Value b);
+    Value emitShl(Value a, Value b);
 
-    public abstract Value emitShr(Value a, Value b);
+    Value emitShr(Value a, Value b);
 
-    public abstract Value emitUShr(Value a, Value b);
+    Value emitUShr(Value a, Value b);
 
-    public abstract Value emitConvert(ConvertNode.Op opcode, Value inputVal);
+    Value emitConvert(ConvertNode.Op opcode, Value inputVal);
 
-    public abstract void emitMembar(int barriers);
+    void emitMembar(int barriers);
 
-    public abstract void emitDeoptimize(DeoptimizationAction action, DeoptimizingNode deopting);
+    void emitDeoptimize(DeoptimizationAction action, DeoptimizingNode deopting);
 
-    public abstract void emitNullCheck(ValueNode v, DeoptimizingNode deopting);
+    void emitNullCheck(ValueNode v, DeoptimizingNode deopting);
 
-    public abstract Value emitCall(RuntimeCallTarget callTarget, CallingConvention cc, DeoptimizingNode info, Value... args);
+    Value emitCall(RuntimeCallTarget callTarget, CallingConvention cc, DeoptimizingNode info, Value... args);
 
-    public abstract void emitIf(IfNode i);
+    void emitIf(IfNode i);
 
-    public abstract void emitConditional(ConditionalNode i);
+    void emitConditional(ConditionalNode i);
 
-    public abstract void emitSwitch(SwitchNode i);
+    void emitSwitch(SwitchNode i);
 
-    public abstract void emitInvoke(Invoke i);
+    void emitInvoke(Invoke i);
 
-    public abstract void visitRuntimeCall(RuntimeCallNode i);
+    void visitRuntimeCall(RuntimeCallNode i);
 
     // Handling of block-end nodes still needs to be unified in the LIRGenerator.
-    public abstract void visitMerge(MergeNode i);
+    void visitMerge(MergeNode i);
 
-    public abstract void visitEndNode(EndNode i);
+    void visitEndNode(EndNode i);
 
-    public abstract void visitLoopEnd(LoopEndNode i);
+    void visitLoopEnd(LoopEndNode i);
 
-    public abstract void visitCompareAndSwap(CompareAndSwapNode i);
+    void visitCompareAndSwap(CompareAndSwapNode i);
 
     // These methods define the contract a runtime specific backend must provide.
 
-    public abstract void visitReturn(ReturnNode i);
+    void visitReturn(ReturnNode i);
 
-    public abstract void visitSafepointNode(SafepointNode i);
+    void visitSafepointNode(SafepointNode i);
 
-    public abstract void visitBreakpointNode(BreakpointNode i);
+    void visitBreakpointNode(BreakpointNode i);
 
-    public abstract void emitUnwind(Value operand);
+    void emitUnwind(Value operand);
 
     /**
      * Called just before register allocation is performed on the LIR owned by this generator.
      */
-    public void beforeRegisterAllocation() {
-    }
+    void beforeRegisterAllocation();
 
-    public abstract void visitInfopointNode(InfopointNode i);
+    void visitInfopointNode(InfopointNode i);
 }