< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64Call.java
Print this page
*** 38,47 ****
--- 38,48 ----
import org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler;
import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
import org.graalvm.compiler.lir.LIRFrameState;
import org.graalvm.compiler.lir.LIRInstructionClass;
import org.graalvm.compiler.lir.Opcode;
+ import org.graalvm.compiler.lir.StandardOp.LabelHoldingOp;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
import jdk.vm.ci.code.Register;
import jdk.vm.ci.meta.InvokeTarget;
import jdk.vm.ci.meta.ResolvedJavaMethod;
*** 124,134 ****
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) {
directCall(crb, masm, callTarget, null, state);
}
}
! public abstract static class ForeignCallOp extends CallOp {
protected final ForeignCallLinkage callTarget;
protected final Label label;
protected ForeignCallOp(LIRInstructionClass<? extends ForeignCallOp> c, ForeignCallLinkage callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state, Label label) {
super(c, result, parameters, temps, state);
--- 125,135 ----
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) {
directCall(crb, masm, callTarget, null, state);
}
}
! public abstract static class ForeignCallOp extends CallOp implements LabelHoldingOp {
protected final ForeignCallLinkage callTarget;
protected final Label label;
protected ForeignCallOp(LIRInstructionClass<? extends ForeignCallOp> c, ForeignCallLinkage callTarget, Value result, Value[] parameters, Value[] temps, LIRFrameState state, Label label) {
super(c, result, parameters, temps, state);
*** 145,154 ****
--- 146,160 ----
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) {
emitCall(crb, masm);
}
protected abstract void emitCall(CompilationResultBuilder crb, AArch64MacroAssembler masm);
+
+ @Override
+ public Label getLabel() {
+ return label;
+ }
}
@Opcode("NEAR_FOREIGN_CALL")
public static class DirectNearForeignCallOp extends ForeignCallOp {
public static final LIRInstructionClass<DirectNearForeignCallOp> TYPE = LIRInstructionClass.create(DirectNearForeignCallOp.class);
< prev index next >