LabelInstr.java

  1. package org.jruby.ir.instructions;

  2. import org.jruby.ir.IRVisitor;
  3. import org.jruby.ir.Operation;
  4. import org.jruby.ir.operands.Label;
  5. import org.jruby.ir.operands.Operand;
  6. import org.jruby.ir.transformations.inlining.CloneInfo;

  7. public class LabelInstr extends Instr implements FixedArityInstr {
  8.     public final Label label;

  9.     public LabelInstr(Label label) {
  10.         super(Operation.LABEL);

  11.         this.label = label;
  12.     }

  13.     @Override
  14.     public Operand[] getOperands() {
  15.         return new Operand[] { label };
  16.     }

  17.     @Override
  18.     public String toString() {
  19.         return label + ":";
  20.     }

  21.     @Override
  22.     public Instr clone(CloneInfo ii) {
  23.         return new LabelInstr(ii.getRenamedLabel(label));
  24.     }

  25.     @Override
  26.     public void visit(IRVisitor visitor) {
  27.         visitor.LabelInstr(this);
  28.     }

  29.     public Label getLabel() {
  30.         return label;
  31.     }
  32. }