Class

org.opalj.br.instructions

UNRESOLVED_INVOKEDYNAMIC

Related Doc: package instructions

Permalink

case class UNRESOLVED_INVOKEDYNAMIC(bootstrapMethod: BootstrapMethod, name: String, methodDescriptor: MethodDescriptor) extends InvocationInstruction with INVOKEDYNAMIC with Product with Serializable

Represents an invokedynamic instruction where we have no further, immediately usable information regarding the target.

Linear Supertypes
Serializable, Serializable, Product, Equals, INVOKEDYNAMIC, InvocationInstruction, ConstantLengthInstruction, Instruction, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. UNRESOLVED_INVOKEDYNAMIC
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. INVOKEDYNAMIC
  7. InvocationInstruction
  8. ConstantLengthInstruction
  9. Instruction
  10. AnyRef
  11. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Instance Constructors

  1. new UNRESOLVED_INVOKEDYNAMIC(bootstrapMethod: BootstrapMethod, name: String, methodDescriptor: MethodDescriptor)

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. val bootstrapMethod: BootstrapMethod

    Permalink
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. final def expressionResult: ExpressionResult

    Permalink

    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 a 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
    InvocationInstructionInstruction
    Note

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

  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def indexOfNextInstruction(currentPC: PC, modifiedByWide: Boolean): Int

    Permalink

    The index of the next instruction in the code array.

    The index of the next instruction in the code array.

    Definition Classes
    ConstantLengthInstructionInstruction
  12. final def indexOfNextInstruction(currentPC: PC)(implicit code: Code): Int

    Permalink

    The index of the next instruction in the code array.

    The index of the next instruction in the code array.

    Definition Classes
    ConstantLengthInstructionInstruction
    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.

  13. final def indexOfReadLocal: Int

    Permalink

    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
    InvocationInstructionInstruction
  14. final def indexOfWrittenLocal: Int

    Permalink

    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
    InvocationInstructionInstruction
  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. final def isIsomorphic(thisPC: PC, otherPC: PC)(implicit code: Code): Boolean

    Permalink

    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
    InvocationInstructionInstruction
    Note

    this.isIsomorphic(thisPC,thisPC) is always true

    ,

    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)
  17. final def jvmExceptions: List[ObjectType]

    Permalink

    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 (e.g. LinkageErrors). However, OutOfMemoryErrors are possible.

    Definition Classes
    INVOKEDYNAMICInstruction
  18. final def length: Int

    Permalink

    The number of bytes (in the Code array) used by the instruction.

    The number of bytes (in the Code array) used by the instruction.

    Definition Classes
    INVOKEDYNAMICConstantLengthInstruction
  19. val methodDescriptor: MethodDescriptor

    Permalink
  20. final def mnemonic: String

    Permalink

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

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

    Definition Classes
    INVOKEDYNAMICInstruction
  21. val name: String

    Permalink
  22. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  23. final def nextInstructions(currentPC: PC, regularSuccessorsOnly: Boolean)(implicit code: Code): PCs

    Permalink

    Given that we have – without any sophisticated analysis – no idea which exceptions may be thrown we make the safe assumption that any handler is a potential successor!

    Given that we have – without any sophisticated analysis – no idea which exceptions may be thrown we make the safe assumption that any handler is a potential successor!

    returns

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

    Definition Classes
    InvocationInstructionInstruction
  24. final def nextInstructions(currentPC: PC)(implicit code: Code): PCs

    Permalink

    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 occurs within a catch block and – if so – checks if an appropriate handler exists and – if so – also returns the first instruction of the handler.

    returns

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

    Definition Classes
    Instruction
  25. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  26. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  27. final def numberOfPoppedOperands(ctg: (Int) ⇒ ComputationalTypeCategory): Int

    Permalink

    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 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
    INVOKEDYNAMICInstruction
    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 POP2 instruction may just pop one categeory 2 value (of type long or double) or two category 1 values.

  28. final def numberOfPushedOperands(ctg: (Int) ⇒ ComputationalTypeCategory): Int

    Permalink

    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 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
    InvocationInstructionInstruction
    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).

  29. final def opcode: Opcode

    Permalink

    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
    INVOKEDYNAMICInstruction
  30. final def readsLocal: Boolean

    Permalink

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

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

    Definition Classes
    InvocationInstructionInstruction
  31. def resolveJDK8(repository: ClassFileRepository): Option[Method]

    Permalink

    Attempts to resolve the target method that is called using this invokedynamic instruction.

    Attempts to resolve the target method that is called using this invokedynamic instruction.

    Definition Classes
    INVOKEDYNAMIC
    Note

    Using this method it is possible to resolve the targets of invokedynamic instructions as generated by the Oracle Java 8 compiler. However, if the target cannot be resolved, None is returned; this method will never "crash".

  32. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  33. def toString(): String

    Permalink
    Definition Classes
    INVOKEDYNAMIC → AnyRef → Any
  34. def toString(currentPC: Int): String

    Permalink

    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.

    currentPC

    The program counter of this instruction. Used to resolve relative jump targets.

    Definition Classes
    Instruction
  35. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  37. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  38. final def writesLocal: Boolean

    Permalink

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

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

    Definition Classes
    InvocationInstructionInstruction

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from INVOKEDYNAMIC

Inherited from InvocationInstruction

Inherited from ConstantLengthInstruction

Inherited from Instruction

Inherited from AnyRef

Inherited from Any

Ungrouped