Package serp.bytecode

Class ConvertInstruction

All Implemented Interfaces:
BCEntity, VisitAcceptor

public class ConvertInstruction extends TypedInstruction
A conversion opcode such as i2l, f2i, etc. Changing the types of the instruction will automatically update the underlying opcode. Converting from one type to the same type will result in a nop.
Author:
Abe White
  • Method Details

    • getLogicalStackChange

      public int getLogicalStackChange()
      Description copied from class: Instruction
      Return the logical number of stack positions changed by this instruction. In other words, ignore weirdness with longs and doubles taking two stack positions.
      Overrides:
      getLogicalStackChange in class Instruction
    • getStackChange

      public int getStackChange()
      Description copied from class: Instruction
      Return the number of stack positions this instruction pushes or pops during its execution.
      Overrides:
      getStackChange in class Instruction
      Returns:
      0 if the stack is not affected by this instruction, a positive number if it pushes onto the stack, and a negative number if it pops from the stack
    • getTypeName

      public String getTypeName()
      Description copied from class: TypedInstruction
      Return the type name for this instruction. If the type has not been set, this method will return null.
      Specified by:
      getTypeName in class TypedInstruction
    • setType

      public TypedInstruction setType(String type)
      Description copied from class: TypedInstruction
      Set the type of this instruction. Types that have no direct support will be converted accordingly.
      Specified by:
      setType in class TypedInstruction
      Returns:
      this instruction, for method chaining
    • getFromTypeName

      public String getFromTypeName()
      Return the name of the type being converted from. If neither type has been set, this method will return null.
    • getFromType

      public Class getFromType()
      Return the Class of the type being converted from. If neither type has been set, this method will return null.
    • getFromTypeBC

      public BCClass getFromTypeBC()
      Return the bytecode of the type being converted from. If neither type has been set, this method will return null.
    • setFromType

      public ConvertInstruction setFromType(String type)
      Set the type being converted from. Types that have no direct support will be converted accordingly.
      Returns:
      this instruction, for method chaining
    • setFromType

      public ConvertInstruction setFromType(Class type)
      Set the type being converted from. Types that have no direct support will be converted accordingly.
      Returns:
      this instruction, for method chaining
    • setFromType

      public ConvertInstruction setFromType(BCClass type)
      Set the type being converted from. Types that have no direct support will be converted accordingly.
      Returns:
      this instruction, for method chaining
    • equalsInstruction

      public boolean equalsInstruction(Instruction other)
      ConvertInstructions are equal if the types they convert between are either equal or unset.
      Overrides:
      equalsInstruction in class Instruction
    • acceptVisit

      public void acceptVisit(BCVisitor visit)
      Description copied from interface: VisitAcceptor
      Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
      Specified by:
      acceptVisit in interface VisitAcceptor
      Overrides:
      acceptVisit in class Instruction