Mercurial > hg > truffle
diff graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java @ 19526:8fc336a04d77
Create TYPE fields for LIRInstruction and CompositeValue. Renaming NodeClass#get to NodeClass#create.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Fri, 20 Feb 2015 22:22:55 +0100 |
parents | 35ae3e916582 |
children | 96ab2078eeaf |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Fri Feb 20 18:08:53 2015 +0100 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Fri Feb 20 22:22:55 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,13 +41,15 @@ public class SPARCCall { public abstract static class CallOp extends SPARCLIRInstruction { + public static final LIRInstructionClass<CallOp> TYPE = LIRInstructionClass.create(CallOp.class); @Def({REG, ILLEGAL}) protected Value result; @Use({REG, STACK}) protected Value[] parameters; @Temp protected Value[] temps; @State protected LIRFrameState state; - public CallOp(Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + protected CallOp(LIRInstructionClass<? extends CallOp> c, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + super(c); this.result = result; this.parameters = parameters; this.state = state; @@ -62,27 +64,32 @@ } public abstract static class MethodCallOp extends CallOp { + public static final LIRInstructionClass<MethodCallOp> TYPE = LIRInstructionClass.create(MethodCallOp.class); protected final ResolvedJavaMethod callTarget; - public MethodCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { - super(result, parameters, temps, state); + protected MethodCallOp(LIRInstructionClass<? extends MethodCallOp> c, ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + super(c, result, parameters, temps, state); this.callTarget = callTarget; } } @Opcode("CALL_DIRECT") - public static class DirectCallOp extends MethodCallOp /* implements SPARCDelayedControlTransfer */{ + public abstract static class DirectCallOp extends MethodCallOp /* + * implements + * SPARCDelayedControlTransfer + */{ + public static final LIRInstructionClass<DirectCallOp> TYPE = LIRInstructionClass.create(DirectCallOp.class); private boolean emitted = false; private int before = -1; - public DirectCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { - super(callTarget, result, parameters, temps, state); + public DirectCallOp(LIRInstructionClass<? extends DirectCallOp> c, ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + super(c, callTarget, result, parameters, temps, state); } @Override - public final void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { + public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { if (!emitted) { emitCallPrefixCode(crb, masm); directCall(crb, masm, callTarget, null, true, state); @@ -122,12 +129,14 @@ } @Opcode("CALL_INDIRECT") - public static class IndirectCallOp extends MethodCallOp { + public abstract static class IndirectCallOp extends MethodCallOp { + public static final LIRInstructionClass<IndirectCallOp> TYPE = LIRInstructionClass.create(IndirectCallOp.class); @Use({REG}) protected Value targetAddress; - public IndirectCallOp(ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, Value targetAddress, LIRFrameState state) { - super(callTarget, result, parameters, temps, state); + protected IndirectCallOp(LIRInstructionClass<? extends IndirectCallOp> c, ResolvedJavaMethod callTarget, Value result, Value[] parameters, Value[] temps, Value targetAddress, + LIRFrameState state) { + super(c, callTarget, result, parameters, temps, state); this.targetAddress = targetAddress; } @@ -144,11 +153,12 @@ } public abstract static class ForeignCallOp extends CallOp { + public static final LIRInstructionClass<ForeignCallOp> TYPE = LIRInstructionClass.create(ForeignCallOp.class); protected final ForeignCallLinkage callTarget; - public ForeignCallOp(ForeignCallLinkage callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { - super(result, parameters, temps, state); + public ForeignCallOp(LIRInstructionClass<? extends ForeignCallOp> c, ForeignCallLinkage callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { + super(c, result, parameters, temps, state); this.callTarget = callTarget; } @@ -159,10 +169,11 @@ } @Opcode("NEAR_FOREIGN_CALL") - public static class DirectNearForeignCallOp extends ForeignCallOp { + public static final class DirectNearForeignCallOp extends ForeignCallOp { + public static final LIRInstructionClass<DirectNearForeignCallOp> TYPE = LIRInstructionClass.create(DirectNearForeignCallOp.class); public DirectNearForeignCallOp(ForeignCallLinkage linkage, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { - super(linkage, result, parameters, temps, state); + super(TYPE, linkage, result, parameters, temps, state); } @Override @@ -172,10 +183,11 @@ } @Opcode("FAR_FOREIGN_CALL") - public static class DirectFarForeignCallOp extends ForeignCallOp { + public static final class DirectFarForeignCallOp extends ForeignCallOp { + public static final LIRInstructionClass<DirectFarForeignCallOp> TYPE = LIRInstructionClass.create(DirectFarForeignCallOp.class); public DirectFarForeignCallOp(ForeignCallLinkage callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state) { - super(callTarget, result, parameters, temps, state); + super(TYPE, callTarget, result, parameters, temps, state); } @Override