Packages

case class TABLESWITCH(defaultOffset: Int, low: Int, high: Int, jumpOffsets: ArraySeq[Int]) extends CompoundConditionalBranchInstruction with TABLESWITCHLike with Product with Serializable

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TABLESWITCH
  2. Serializable
  3. Product
  4. Equals
  5. TABLESWITCHLike
  6. CompoundConditionalBranchInstruction
  7. CompoundConditionalBranchInstructionLike
  8. ConditionalBranchInstruction
  9. ConditionalBranchInstructionLike
  10. ControlTransferInstruction
  11. ControlTransferInstructionLike
  12. Instruction
  13. InstructionLike
  14. AnyRef
  15. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new TABLESWITCH(defaultOffset: Int, low: Int, high: Int, jumpOffsets: ArraySeq[Int])

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def asATHROW: ATHROW.type
    Definition Classes
    Instruction
  5. def asArithmeticInstruction: ArithmeticInstruction
    Definition Classes
    Instruction
  6. final def asCompoundConditionalBranchInstruction: TABLESWITCH.this.type
  7. final def asControlTransferInstruction: ControlTransferInstruction
  8. def asCreateNewArrayInstruction: CreateNewArrayInstruction
    Definition Classes
    Instruction
  9. def asGotoInstruction: GotoInstruction
    Definition Classes
    Instruction
  10. def asIF0Instruction: IF0Instruction[_]
    Definition Classes
    Instruction
  11. def asIFACMPInstruction: IFACMPInstruction[_]
    Definition Classes
    Instruction
  12. def asIFICMPInstruction: IFICMPInstruction[_]
    Definition Classes
    Instruction
  13. def asIFXNullInstruction: IFXNullInstruction[_]
    Definition Classes
    Instruction
  14. def asIINC: IINC
    Definition Classes
    Instruction
  15. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  16. def asInvocationInstruction: InvocationInstruction
    Definition Classes
    Instruction
  17. def asLOOKUPSWITCH: LOOKUPSWITCH
    Definition Classes
    Instruction
  18. def asLoadLocalVariableInstruction: LoadLocalVariableInstruction
    Definition Classes
    Instruction
  19. def asMethodInvocationInstruction: MethodInvocationInstruction
    Definition Classes
    Instruction
  20. def asNEW: NEW
    Definition Classes
    Instruction
  21. def asReturnInstruction: ReturnInstruction
    Definition Classes
    Instruction
  22. def asSimpleBranchInstruction: SimpleBranchInstruction
    Definition Classes
    Instruction
  23. def asSimpleConditionalBranchInstruction: SimpleConditionalBranchInstruction[_]
    Definition Classes
    Instruction
  24. def asStoreLocalVariableInstruction: StoreLocalVariableInstruction
    Definition Classes
    Instruction
  25. final def asTABLESWITCH: TABLESWITCH.this.type
    Definition Classes
    TABLESWITCHInstruction
  26. def caseValueOfJumpOffset(jumpOffset: Int): (List[Int], Boolean)

    Returns the case value(s) that are associated with the given jumpOffset.

    Returns the case value(s) that are associated with the given jumpOffset. If the jumpOffset is also the defaultOffset, the return value's second value is true.

    Definition Classes
    TABLESWITCHCompoundConditionalBranchInstruction
  27. def caseValues: IntIterator

    Returns all case values that are not related to the default branch.

    Returns all case values that are not related to the default branch.

    Definition Classes
    TABLESWITCHCompoundConditionalBranchInstructionLike
  28. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  29. val defaultOffset: Int
  30. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  31. final def expressionResult: NoExpression.type

    Returns the location – Stack, Register or NoExpression – where the value computed by this instruction is stored.

    Returns the location – Stack, Register or NoExpression – where the value computed by this instruction is stored. In this case an instruction is only considered to be an expression if it puts a value on the stack or in a register that is the result of some kind of computation; i.e., just copying, duplicating or moving a value between the stack and the registers is not considered to be an expression.

    Definition Classes
    ControlTransferInstructionLikeInstructionLike
    Note

    The CHECKCAST instruction is special in the sense that it just inspects the top-most value.

  32. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  33. val high: Int

    The largest case value.

    The largest case value. highlow

    Definition Classes
    TABLESWITCHTABLESWITCHLike
  34. final def indexOfNextInstruction(currentPC: Int)(implicit code: Code): Int

    The index of the next instruction in the (sparse) code array.

    The index of the next instruction in the (sparse) code array.

    Definition Classes
    TABLESWITCHInstruction
    Note

    This is primarily a convenience method that delegates to the method indexOfNextInstrution(PC,Boolean). However, given that this is also the standard method called by clients, it is often meaningful to directly implement this. In particular since most instructions cannot be modified by wide.

  35. final def indexOfNextInstruction(currentPC: PC, modifiedByWide: Boolean): Int

    The index of the next instruction in the code array.

    The index of the next instruction in the code array.

    Definition Classes
    TABLESWITCHLikeInstructionLike
  36. final def indexOfReadLocal: Int

    The index of the local (variable)/register that is read is returned.

    The index of the local (variable)/register that is read is returned. This method is only defined if readsLocal returns true.

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike
  37. final def indexOfWrittenLocal: Int

    The index of the local (variable)/register that is written.

    The index of the local (variable)/register that is written. This method is only defined if writesLocal returns true.

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike
  38. def isAthrow: Boolean
    Definition Classes
    InstructionLike
  39. def isCheckcast: Boolean
    Definition Classes
    Instruction
  40. final def isCompoundConditionalBranchInstruction: Boolean
  41. final def isControlTransferInstruction: Boolean
  42. def isGotoInstruction: Boolean
    Definition Classes
    Instruction
  43. def isIINC: Boolean
    Definition Classes
    Instruction
  44. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  45. def isInvocationInstruction: Boolean
    Definition Classes
    Instruction
  46. def isInvokeStatic: Boolean
    Definition Classes
    Instruction
  47. final def isIsomorphic(thisPC: PC, otherPC: PC)(implicit code: Code): Boolean

    Determines if this instruction is isomorphic to the given instruction.

    Determines if this instruction is isomorphic to the given instruction.

    Two instructions are isomporphic if they access the same operand and register values and if the instructions have the same bytecode representation, except of (A) (potential) padding bytes and (B) the branch offset of JSR(_W) instructions. In the first case the branch offsets are corrected by the number of padding bytes and in the second case the absolute addresses are compared (i.e., whether both instructions call the same subroutine).

    For example, an aload_0 instruction is only isomorphic to another aload_0 instruction and is not isomorphic to an aload(0) instruction – though the runtime effect is the same. However, a LOOKUPSWITCH (TABLESWITCH) instruction is considered isomorphic to another respective instruction if the only difference is the number of padding bytes. Furthermore, two JSR(_W) instructions are isomorphic if and only if they jump to the same subroutine.

    Definition Classes
    TABLESWITCHInstructionLike
    Note

    The number of padding bytes is generally calculated by (otherPC % 4) - (thisPC %4) (=== "padding other" - "padding this") and should be added to the branch offsets of this (XYZ)switch instruction when the branch targets are compared to the other instructions branchoffsets.

    // "padding b" - "padding a"
    // === (3 - (bPC % 4)) - (3 - (aPC % 4))
    // === (aPC % 4) - (bPC %4)
    ,

    this.isIsomorphic(thisPC,thisPC) is always true

  48. def isLoadConstantInstruction: Boolean
    Definition Classes
    InstructionLike
  49. def isLoadLocalVariableInstruction: Boolean
    Definition Classes
    Instruction
  50. def isMethodInvocationInstruction: Boolean
    Definition Classes
    Instruction
  51. def isMonitorInstruction: Boolean
    Definition Classes
    InstructionLike
  52. def isRET: Boolean
    Definition Classes
    InstructionLike
  53. def isReturnInstruction: Boolean
    Definition Classes
    InstructionLike
  54. def isSimpleBranchInstruction: Boolean
    Definition Classes
    Instruction
  55. def isSimpleConditionalBranchInstruction: Boolean
    Definition Classes
    Instruction
  56. def isStackManagementInstruction: Boolean
    Definition Classes
    Instruction
  57. def isStoreLocalVariableInstruction: Boolean
    Definition Classes
    Instruction
  58. val jumpOffsets: ArraySeq[Int]
  59. final def jumpTargets(currentPC: PC)(implicit code: Code, classHierarchy: ClassHierarchy = ClassHierarchy.PreInitializedClassHierarchy): Iterator[PC]

    Iterator over all (absolute) pcs to which this instruction will jump to.

    Iterator over all (absolute) pcs to which this instruction will jump to.

    returns

    All instructions to which this instruction explicitly jumps to. (The instruction to which an if-instruction i potentially falls through, is not a jump target w.r.t. i; it may still be a jump target w.r.t. some other control transfer instruction.)

    Definition Classes
    CompoundConditionalBranchInstructionControlTransferInstruction
    Note

    Computing the jump targets is particularly expensive in case of RET instructions, and should be avoided if only "all jump targets" of a method's body should be identified. In that case, collecting the PCs following the JSRs is sufficient.

  60. final def jvmExceptions: List[ObjectType]

    The exceptions that may be thrown by the JVM at runtime if the execution of this instruction fails.

    The exceptions that may be thrown by the JVM at runtime if the execution of this instruction fails. I.e., these are neither exceptions that are explicitly created and then thrown by user code nor errors that may arise due to an invalid code base (in particular LinkageErrors). However, OutOfMemoryErrors are possible.

    Definition Classes
    ControlTransferInstructionLikeInstructionLike
    Note

    The returned types always precisely describe the thrown exception; they are not upper bounds. All instructions – except of the InvocationInstructions and the ATHROW$ instruction – will always either succeed, throw a linkage time related exception or throw one of the specified exceptions.

  61. val low: Int

    The smallest case value.

    The smallest case value. highlow

    Definition Classes
    TABLESWITCHTABLESWITCHLike
  62. final def mayThrowExceptions: Boolean

    Returns true if the evaluation of the instruction may lead to some runtime exception.

    Returns true if the evaluation of the instruction may lead to some runtime exception. For example, in case of INVOKESTATIC jvmExceptions will return an empty list. However, in general the called method may throw an arbitrary exception.

    Errors (such as LinkageError) related to invalid projects are not considered.

    Definition Classes
    ControlTransferInstructionLikeInstructionLike
  63. final def mnemonic: String

    The mnemonic of the instruction as defined by the JVM specification.

    The mnemonic of the instruction as defined by the JVM specification.

    Definition Classes
    TABLESWITCHLikeInstructionLike
  64. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  65. final def nextInstructions(currentPC: PC, regularSuccessorsOnly: Boolean)(implicit code: Code, classHierarchy: ClassHierarchy = ClassHierarchy.PreInitializedClassHierarchy): List[PC]

    Returns the pcs of the instructions that may be executed next at runtime.

    Returns the pcs of the instructions that may be executed next at runtime. This method takes potentially thrown exceptions into account. I.e., every instruction that may throw an exception checks if it is handled locally and – if so – checks if an appropriate handler exists and – if so – also returns the first instruction of the handler. The chain may contain duplicates, iff the state is potentially different when the target instruction is reached.

    regularSuccessorsOnly

    If true, only those instructions are returned which are not related to an exception thrown by this instruction.

    returns

    The absolute addresses of all instructions that may be executed next at runtime.

    Definition Classes
    TABLESWITCHInstruction
  66. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  67. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  68. final def numberOfPoppedOperands(ctg: (Int) => ComputationalTypeCategory): Int

    The number of values that are popped from the operand stack.

    The number of values that are popped from the operand stack. Here, long and double values are also counted as one value though they use two stack slots. E.g., IADD (integer add) and LADD (long add) both pop two values and push one value.

    ctg

    A function that returns the computational type category of the value on the operand stack with a given value index. E.g., The top value on the operand stack has index '0' and may occupy one (for category 1 values) or two stack slots (for category 2 values.)

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike
    Note

    In case of some of the StackManagementInstruction the number of popped values is not fixed. In that case the number depends on the concrete layout of the operand stack. E.g., the POP2 instruction may just pop one categeory 2 value (of type long or double) or two category 1 values.

  69. final def numberOfPushedOperands(ctg: (Int) => ComputationalTypeCategory): Int

    The number of values that are put onto the operand stack.

    The number of values that are put onto the operand stack. Here, long and double values are also counted as one value though they use two stack slots. E.g., IADD (integer add) and LADD (long add) both pop two values and push one value.

    ctg

    A function that returns the computational type category of the value on the operand stack with a given value index. The top value on the operand stack has index '0' and may occupy one (for category 1 values) or two stack slots (for category 2 values.)

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike
    Note

    In case of some of the StackManagementInstruction this number is not fixed. In that case the number depends on the concrete layout of the operand stack. E.g., the DUP2 instruction may just duplicate one categeory 2 value (result is 1) (of type long or double) or two category 1 values (result is 2).

  70. final def opcode: Opcode

    The opcode of the instruction as defined by the JVM specification.

    The opcode of the instruction as defined by the JVM specification. The opcode is a value in the range [0..255].

    Definition Classes
    TABLESWITCHLikeInstructionLike
  71. def operandCount: Int

    The number of operand values popped from the operand stack.

    The number of operand values popped from the operand stack.

    Definition Classes
    CompoundConditionalBranchInstructionLikeConditionalBranchInstructionLike
  72. def productElementNames: Iterator[String]
    Definition Classes
    Product
  73. final def readsLocal: Boolean

    Returns true if this instruction reads/uses a local variable.

    Returns true if this instruction reads/uses a local variable.

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike
  74. def similar(other: Instruction): Boolean

    Checks for structural equality of two instructions.

    Checks for structural equality of two instructions.

    Definition Classes
    Instruction
    Note

    Implemted by using the underlying (compiler generated) equals methods.

  75. final def stackSlotsChange: Int

    The number of stack slots pushed or popped by this instruction.

    The number of stack slots pushed or popped by this instruction.

    Definition Classes
    CompoundConditionalBranchInstructionLikeInstructionLike
    Note

    Overall, each DUP instruction always pushes the same number of stack slots. Only the number of values that are processed may depend on the stack layout.

  76. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  77. def toLabeledInstruction(currentPC: PC): LabeledInstruction

    Converts this instruction to a LabeledInstruction, where relative jump targets are replaced by symbols using the program counters of the target instructions as Symbols (i.e., absolute targets).

    Converts this instruction to a LabeledInstruction, where relative jump targets are replaced by symbols using the program counters of the target instructions as Symbols (i.e., absolute targets).

    currentPC

    The pc of the current instruction.

    Definition Classes
    TABLESWITCHInstruction
  78. def toString(pc: PC): String

    Returns a string representation of this instruction.

    Returns a string representation of this instruction. If this instruction is a (conditional) jump instruction, then the PCs of the target instructions are given absolute address.

    Definition Classes
    TABLESWITCHInstructionLike
  79. def toString(): String
    Definition Classes
    TABLESWITCH → AnyRef → Any
  80. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  81. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  82. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  83. final def writesLocal: Boolean

    Returns true if this instruction writes/updates a local variable.

    Returns true if this instruction writes/updates a local variable.

    Definition Classes
    ConditionalBranchInstructionLikeInstructionLike

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from TABLESWITCHLike

Inherited from Instruction

Inherited from InstructionLike

Inherited from AnyRef

Inherited from Any

Ungrouped