Class BSwitchInstr


public class BSwitchInstr extends MultiBranchInstr
Represents a multiple-target jump instruction based on a switch-like table
  • Constructor Details

  • Method Details

    • getOperands

      public Operand[] getOperands()
      Specified by:
      getOperands in class Instr
    • getCaseOperand

      public Operand getCaseOperand()
    • getJumps

      public int[] getJumps()
    • getRubyCaseLabel

      public Label getRubyCaseLabel()
    • getTargets

      public Label[] getTargets()
    • getElseTarget

      public Label getElseTarget()
    • getExpectedClass

      public Class getExpectedClass()
    • setOperand

      public void setOperand(int i, Operand operand)
      Specified by:
      setOperand in class Instr
    • clone

      public Instr clone(CloneInfo info)
      Description copied from class: Instr
      Clone the instruction for use in an inlining context (either when a scope is inlined into another scope, or when a block has to be cloned because its associated call belongs to an inlined scope). This might renaming variables and labels to eliminate naming conflicts. The implementation might vary on the cloning mode.
      Specified by:
      clone in class Instr
      Parameters:
      info - This object manages renaming of variables and labels, handles args and return values.
      Returns:
      a new instruction that can be used in the target scope.
    • encode

      public void encode(IRWriterEncoder e)
      Overrides:
      encode in class Instr
    • decode

      public static BSwitchInstr decode(IRReaderDecoder d)
    • interpretAndGetNewIPC

      public int interpretAndGetNewIPC(ThreadContext context, DynamicScope currDynScope, StaticScope currScope, IRubyObject self, Object[] temp, int ipc)
      Overrides:
      interpretAndGetNewIPC in class Instr
    • visit

      public void visit(IRVisitor visitor)
      Overrides:
      visit in class Instr
    • getJumpTargets

      public Label[] getJumpTargets()
      Specified by:
      getJumpTargets in class MultiBranchInstr