public final class com.oracle.svm.core.graal.amd64.AMD64FarReturnOp extends org.graalvm.compiler.lir.amd64.AMD64BlockEndOp
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.core.graal.amd64.AMD64FarReturnOp
  super_class: org.graalvm.compiler.lir.amd64.AMD64BlockEndOp
{
  public static final org.graalvm.compiler.lir.LIRInstructionClass<com.oracle.svm.core.graal.amd64.AMD64FarReturnOp> TYPE;
    descriptor: Lorg/graalvm/compiler/lir/LIRInstructionClass;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/compiler/lir/LIRInstructionClass<Lcom/oracle/svm/core/graal/amd64/AMD64FarReturnOp;>;

  jdk.vm.ci.meta.AllocatableValue result;
    descriptor: Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.lir.LIRInstruction$Use(value = {org.graalvm.compiler.lir.LIRInstruction$OperandFlag.REG:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;, org.graalvm.compiler.lir.LIRInstruction$OperandFlag.ILLEGAL:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;})

  jdk.vm.ci.meta.AllocatableValue sp;
    descriptor: Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.lir.LIRInstruction$Use(value = {org.graalvm.compiler.lir.LIRInstruction$OperandFlag.REG:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;})

  jdk.vm.ci.meta.AllocatableValue ip;
    descriptor: Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.lir.LIRInstruction$Use(value = {org.graalvm.compiler.lir.LIRInstruction$OperandFlag.REG:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;})

  private final boolean fromMethodWithCalleeSavedRegisters;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 48
            ldc Lcom/oracle/svm/core/graal/amd64/AMD64FarReturnOp;
            invokestatic org.graalvm.compiler.lir.LIRInstructionClass.create:(Ljava/lang/Class;)Lorg/graalvm/compiler/lir/LIRInstructionClass;
            putstatic com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.TYPE:Lorg/graalvm/compiler/lir/LIRInstructionClass;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.AllocatableValue, boolean);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/AllocatableValue;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.oracle.svm.core.graal.amd64.AMD64FarReturnOp this
        start local 1 // jdk.vm.ci.meta.AllocatableValue result
        start local 2 // jdk.vm.ci.meta.AllocatableValue sp
        start local 3 // jdk.vm.ci.meta.AllocatableValue ip
        start local 4 // boolean fromMethodWithCalleeSavedRegisters
         0: .line 56
            aload 0 /* this */
            getstatic com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.TYPE:Lorg/graalvm/compiler/lir/LIRInstructionClass;
            invokespecial org.graalvm.compiler.lir.amd64.AMD64BlockEndOp.<init>:(Lorg/graalvm/compiler/lir/LIRInstructionClass;)V
         1: .line 57
            aload 0 /* this */
            aload 1 /* result */
            putfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.result:Ljdk/vm/ci/meta/AllocatableValue;
         2: .line 58
            aload 0 /* this */
            aload 2 /* sp */
            putfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.sp:Ljdk/vm/ci/meta/AllocatableValue;
         3: .line 59
            aload 0 /* this */
            aload 3 /* ip */
            putfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.ip:Ljdk/vm/ci/meta/AllocatableValue;
         4: .line 60
            aload 0 /* this */
            iload 4 /* fromMethodWithCalleeSavedRegisters */
            putfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.fromMethodWithCalleeSavedRegisters:Z
         5: .line 61
            return
        end local 4 // boolean fromMethodWithCalleeSavedRegisters
        end local 3 // jdk.vm.ci.meta.AllocatableValue ip
        end local 2 // jdk.vm.ci.meta.AllocatableValue sp
        end local 1 // jdk.vm.ci.meta.AllocatableValue result
        end local 0 // com.oracle.svm.core.graal.amd64.AMD64FarReturnOp this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0    6     0                                this  Lcom/oracle/svm/core/graal/amd64/AMD64FarReturnOp;
            0    6     1                              result  Ljdk/vm/ci/meta/AllocatableValue;
            0    6     2                                  sp  Ljdk/vm/ci/meta/AllocatableValue;
            0    6     3                                  ip  Ljdk/vm/ci/meta/AllocatableValue;
            0    6     4  fromMethodWithCalleeSavedRegisters  Z
    MethodParameters:
                                    Name  Flags
      result                              
      sp                                  
      ip                                  
      fromMethodWithCalleeSavedRegisters  

  public void emitCode(org.graalvm.compiler.lir.asm.CompilationResultBuilder, org.graalvm.compiler.asm.amd64.AMD64MacroAssembler);
    descriptor: (Lorg/graalvm/compiler/lir/asm/CompilationResultBuilder;Lorg/graalvm/compiler/asm/amd64/AMD64MacroAssembler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // com.oracle.svm.core.graal.amd64.AMD64FarReturnOp this
        start local 1 // org.graalvm.compiler.lir.asm.CompilationResultBuilder crb
        start local 2 // org.graalvm.compiler.asm.amd64.AMD64MacroAssembler masm
         0: .line 65
            getstatic com.oracle.svm.core.SubstrateOptions.PreserveFramePointer:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 5
         1: .line 72
            new org.graalvm.compiler.asm.Label
            dup
            invokespecial org.graalvm.compiler.asm.Label.<init>:()V
            astore 3 /* done */
        start local 3 // org.graalvm.compiler.asm.Label done
         2: .line 73
            aload 2 /* masm */
            getstatic jdk.vm.ci.amd64.AMD64.rsp:Ljdk/vm/ci/code/Register;
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.sp:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            getstatic org.graalvm.compiler.asm.amd64.AMD64Assembler$ConditionFlag.Equal:Lorg/graalvm/compiler/asm/amd64/AMD64Assembler$ConditionFlag;
            aload 3 /* done */
            iconst_1
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.cmpqAndJcc:(Ljdk/vm/ci/code/Register;Ljdk/vm/ci/code/Register;Lorg/graalvm/compiler/asm/amd64/AMD64Assembler$ConditionFlag;Lorg/graalvm/compiler/asm/Label;Z)I
            pop
         3: .line 79
            aload 2 /* masm */
            getstatic jdk.vm.ci.amd64.AMD64.rbp:Ljdk/vm/ci/code/Register;
            new org.graalvm.compiler.asm.amd64.AMD64Address
            dup
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.sp:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            invokestatic com.oracle.svm.core.FrameAccess.returnAddressSize:()I
            invokestatic com.oracle.svm.core.FrameAccess.singleton:()Lcom/oracle/svm/core/FrameAccess;
            invokevirtual com.oracle.svm.core.FrameAccess.savedBasePointerSize:()I
            iadd
            ineg
            invokespecial org.graalvm.compiler.asm.amd64.AMD64Address.<init>:(Ljdk/vm/ci/code/Register;I)V
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.movq:(Ljdk/vm/ci/code/Register;Lorg/graalvm/compiler/asm/amd64/AMD64Address;)V
         4: .line 80
            aload 2 /* masm */
            aload 3 /* done */
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.bind:(Lorg/graalvm/compiler/asm/Label;)V
        end local 3 // org.graalvm.compiler.asm.Label done
         5: .line 83
      StackMap locals:
      StackMap stack:
            aload 2 /* masm */
            getstatic jdk.vm.ci.amd64.AMD64.rsp:Ljdk/vm/ci/code/Register;
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.sp:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.movq:(Ljdk/vm/ci/code/Register;Ljdk/vm/ci/code/Register;)V
         6: .line 85
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.fromMethodWithCalleeSavedRegisters:Z
            ifeq 12
         7: .line 91
            new org.graalvm.compiler.asm.amd64.AMD64Address
            dup
            getstatic jdk.vm.ci.amd64.AMD64.rsp:Ljdk/vm/ci/code/Register;
            invokestatic com.oracle.svm.core.FrameAccess.returnAddressSize:()I
            ineg
            invokespecial org.graalvm.compiler.asm.amd64.AMD64Address.<init>:(Ljdk/vm/ci/code/Register;I)V
            astore 3 /* ipAddress */
        start local 3 // org.graalvm.compiler.asm.amd64.AMD64Address ipAddress
         8: .line 92
            aload 2 /* masm */
            aload 3 /* ipAddress */
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.ip:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.movq:(Lorg/graalvm/compiler/asm/amd64/AMD64Address;Ljdk/vm/ci/code/Register;)V
         9: .line 93
            invokestatic com.oracle.svm.core.graal.amd64.AMD64CalleeSavedRegisters.singleton:()Lcom/oracle/svm/core/graal/amd64/AMD64CalleeSavedRegisters;
            aload 2 /* masm */
            iconst_0
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.result:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            invokevirtual com.oracle.svm.core.graal.amd64.AMD64CalleeSavedRegisters.emitRestore:(Lorg/graalvm/compiler/asm/amd64/AMD64MacroAssembler;ILjdk/vm/ci/code/Register;)V
        10: .line 94
            aload 2 /* masm */
            aload 3 /* ipAddress */
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.jmp:(Lorg/graalvm/compiler/asm/amd64/AMD64Address;)V
        end local 3 // org.graalvm.compiler.asm.amd64.AMD64Address ipAddress
        11: .line 96
            goto 13
        12: .line 97
      StackMap locals:
      StackMap stack:
            aload 2 /* masm */
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.amd64.AMD64FarReturnOp.ip:Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic jdk.vm.ci.code.ValueUtil.asRegister:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.asm.amd64.AMD64MacroAssembler.jmp:(Ljdk/vm/ci/code/Register;)V
        13: .line 99
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.graalvm.compiler.asm.amd64.AMD64MacroAssembler masm
        end local 1 // org.graalvm.compiler.lir.asm.CompilationResultBuilder crb
        end local 0 // com.oracle.svm.core.graal.amd64.AMD64FarReturnOp this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lcom/oracle/svm/core/graal/amd64/AMD64FarReturnOp;
            0   14     1        crb  Lorg/graalvm/compiler/lir/asm/CompilationResultBuilder;
            0   14     2       masm  Lorg/graalvm/compiler/asm/amd64/AMD64MacroAssembler;
            2    5     3       done  Lorg/graalvm/compiler/asm/Label;
            8   11     3  ipAddress  Lorg/graalvm/compiler/asm/amd64/AMD64Address;
    MethodParameters:
      Name  Flags
      crb   
      masm  
}
SourceFile: "AMD64FarReturnOp.java"
InnerClasses:
  public final ConditionFlag = org.graalvm.compiler.asm.amd64.AMD64Assembler$ConditionFlag of org.graalvm.compiler.asm.amd64.AMD64Assembler
  public final OperandFlag = org.graalvm.compiler.lir.LIRInstruction$OperandFlag of org.graalvm.compiler.lir.LIRInstruction
  public abstract Use = org.graalvm.compiler.lir.LIRInstruction$Use of org.graalvm.compiler.lir.LIRInstruction
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.lir.Opcode(value = "FAR_RETURN")