Packages

t

org.opalj.br.reader

CachedBytecodeReaderAndBinding

trait CachedBytecodeReaderAndBinding extends InstructionsDeserializer

Defines a method to parse an array of bytes (containing Java bytecode instructions) and to return an array of org.opalj.br.instructions.Instructions.

The target array has the same size as the source array to make sure that branch offsets etc. point to the correct instruction.

This reader caches the instructions – primarily – to save memory once all class files are loaded.

Source
CachedBytecodeReaderAndBinding.scala
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CachedBytecodeReaderAndBinding
  2. InstructionsDeserializer
  3. DeferredDynamicConstantResolution
  4. DeferredInvokedynamicResolution
  5. CodeBinding
  6. ConstantPoolBinding
  7. Constant_PoolReader
  8. Constant_PoolAbstractions
  9. AnyRef
  10. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type CONSTANT_Class_info = cp.CONSTANT_Class_info
  2. type CONSTANT_Double_info = cp.CONSTANT_Double_info
  3. type CONSTANT_Dynamic_info = cp.CONSTANT_Dynamic_info
  4. type CONSTANT_Fieldref_info = cp.CONSTANT_Fieldref_info
  5. type CONSTANT_Float_info = cp.CONSTANT_Float_info
  6. type CONSTANT_Integer_info = cp.CONSTANT_Integer_info
  7. type CONSTANT_InterfaceMethodref_info = cp.CONSTANT_InterfaceMethodref_info
  8. type CONSTANT_InvokeDynamic_info = cp.CONSTANT_InvokeDynamic_info
  9. type CONSTANT_Long_info = cp.CONSTANT_Long_info
  10. type CONSTANT_MethodHandle_info = cp.CONSTANT_MethodHandle_info
  11. type CONSTANT_MethodType_info = cp.CONSTANT_MethodType_info
  12. type CONSTANT_Methodref_info = cp.CONSTANT_Methodref_info
  13. type CONSTANT_Module_info = cp.CONSTANT_Module_info
  14. type CONSTANT_NameAndType_info = cp.CONSTANT_NameAndType_info
  15. type CONSTANT_Package_info = cp.CONSTANT_Package_info
  16. type CONSTANT_String_info = cp.CONSTANT_String_info
  17. type CONSTANT_Utf8_info = cp.CONSTANT_Utf8_info
  18. abstract type ClassFile <: br.ClassFile
  19. final type Constant_Pool = Array[Constant_Pool_Entry]
    Definition Classes
    Constant_PoolAbstractions
  20. type Constant_Pool_Entry = cp.Constant_Pool_Entry
  21. final type Constant_Pool_Index = Int
    Definition Classes
    Constant_PoolAbstractions
  22. type DeferredActionsStore = Buffer[(ClassFile) => ClassFile] with Constant_Pool_Entry

    A DeferredActionsStore stores all functions that need to perform post load actions.

    A DeferredActionsStore stores all functions that need to perform post load actions.

    One example is the resolution of references to attributes. (The constant pool is the only structure that is passed around and hence it is the only place where to store information/functions related to a specific class file).

    Definition Classes
    Constant_PoolAbstractions
  23. type Instructions = Array[Instruction]
    Definition Classes
    CodeBinding

Abstract Value Members

  1. abstract def cache: BytecodeInstructionsCache

Concrete 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 CONSTANT_Class_info(i: Int): CONSTANT_Class_info
  5. def CONSTANT_Double_info(d: Double): CONSTANT_Double_info
  6. def CONSTANT_Dynamic_info(bootstrap_method_attr_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Dynamic_info
  7. def CONSTANT_Fieldref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Fieldref_info
  8. def CONSTANT_Float_info(f: Float): CONSTANT_Float_info
  9. def CONSTANT_Integer_info(i: Int): CONSTANT_Integer_info
  10. def CONSTANT_InterfaceMethodref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_InterfaceMethodref_info
  11. def CONSTANT_InvokeDynamic_info(bootstrap_method_attr_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_InvokeDynamic_info
  12. def CONSTANT_Long_info(l: Long): CONSTANT_Long_info
  13. def CONSTANT_MethodHandle_info(reference_kind: Int, reference_index: Int): CONSTANT_MethodHandle_info
  14. def CONSTANT_MethodType_info(descriptor_index: Constant_Pool_Index): CONSTANT_MethodType_info
  15. def CONSTANT_Methodref_info(class_index: Constant_Pool_Index, name_and_type_index: Constant_Pool_Index): CONSTANT_Methodref_info
  16. def CONSTANT_Module_info(name_index: Constant_Pool_Index): CONSTANT_Module_info
  17. def CONSTANT_NameAndType_info(name_index: Constant_Pool_Index, descriptor_index: Constant_Pool_Index): CONSTANT_NameAndType_info
  18. def CONSTANT_Package_info(name_index: Constant_Pool_Index): CONSTANT_Package_info
  19. def CONSTANT_String_info(i: Int): CONSTANT_String_info
  20. def CONSTANT_Utf8_info(r: Array[Byte], s: String): CONSTANT_Utf8_info
  21. def Constant_Pool(in: DataInputStream): Constant_Pool
    Definition Classes
    Constant_PoolReader
  22. def Instructions(cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, source: Array[Byte]): Instructions

    Transforms an array of bytes into an array of org.opalj.br.instructions.Instructions.

    Transforms an array of bytes into an array of org.opalj.br.instructions.Instructions.

    Definition Classes
    CachedBytecodeReaderAndBindingInstructionsDeserializer
  23. def applyDeferredActions(cp: Constant_Pool, classFile: ClassFile): ClassFile

    This method is called/needs to be called after the class file was completely loaded to perform class file specific transformations.

    This method is called/needs to be called after the class file was completely loaded to perform class file specific transformations.

    Definition Classes
    Constant_PoolReaderConstant_PoolAbstractions
  24. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  25. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  26. implicit val constantPoolEntryType: ClassTag[cp.Constant_Pool_Entry]
  27. implicit def cpIndexTocpEntry(index: Constant_Pool_Index)(implicit cp: Constant_Pool): Constant_Pool_Entry
    Definition Classes
    ConstantPoolBinding
  28. def createDeferredActionsStore(): DeferredActionsStore

    Creates a storage area for functions that will be called after the class file was completely loaded.

    Creates a storage area for functions that will be called after the class file was completely loaded. This makes it possible to register functions that are newly created for a special class file object to perform actions related to that specific class file object. For further information study the resolving process of invokedynamic instructions.

    Attributes
    protected[this]
    Definition Classes
    ConstantPoolBindingConstant_PoolReader
  29. def deferredDynamicConstantResolution(classFile: ClassFile, cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, dynamicInfo: CONSTANT_Dynamic_info, instructions: Array[Instruction], pc: PC): ClassFile

    Resolves an org.opalj.br.instructions.INCOMPLETE_LDC instruction using the BootstrapMethodTable of the class.

    Resolves an org.opalj.br.instructions.INCOMPLETE_LDC instruction using the BootstrapMethodTable of the class.

    Deferred resolution is necessary since the BootstrapMethodTable – which is an attribute of the class file – is loaded after the methods.

    classFile

    The ClassFile with which the deferred action was registered.

    cp

    The class file's Constant_Pool.

    dynamicInfo

    The consttant pool entry describing the dynamic constant.

    instructions

    This method's array of instructions.Instructions. (The array returned by the #Instructions method.)

    pc

    The program counter of the invokedynamic instruction.

    Attributes
    protected
    Definition Classes
    DeferredDynamicConstantResolution
    Note

    This method is called (back) after the class file was completely loaded. Registration as a callback method happens whenever an ldc instruction is found in a method's byte code that refers to a dynamic constant.

    Overriding this Method

    To perform additional analyses on dynamic constant loading ldc instructions, e.g., to fully resolve the constant, a subclass may override this method to do so. When you override this method, you should call this method (super.deferredResolveDynamicConstantResolution) to ensure that the default resolution is carried out.

  30. def deferredInvokedynamicResolution(classFile: ClassFile, cp: Constant_Pool, ap_name_index: Constant_Pool_Index, ap_descriptor_index: Constant_Pool_Index, invokeDynamicInfo: CONSTANT_InvokeDynamic_info, instructions: Array[Instruction], pc: PC): ClassFile

    Resolves an org.opalj.br.instructions.INCOMPLETE_INVOKEDYNAMIC instruction using the BootstrapMethodTable of the class.

    Resolves an org.opalj.br.instructions.INCOMPLETE_INVOKEDYNAMIC instruction using the BootstrapMethodTable of the class.

    Deferred resolution is necessary since the BootstrapMethodTable – which is an attribute of the class file – is loaded after the methods.

    classFile

    The ClassFile with which the deferred action was registered.

    cp

    The class file's Constant_Pool.

    invokeDynamicInfo

    The org.opalj.br.instructions.INVOKEDYNAMIC instruction's constant pool entry.

    instructions

    This method's array of instructions.Instructions. (The array returned by the #Instructions method.)

    pc

    The program counter of the invokedynamic instruction.

    Attributes
    protected
    Definition Classes
    DeferredInvokedynamicResolution
    Note

    This method is called (back) after the class file was completely loaded. Registration as a callback method happens whenever an invokedynamic instruction is found in a method's byte code.

    Overriding this Method

    To perform additional analyses on invokedynamic instructions, e.g., to fully resolve the call target, a subclass may override this method to do so. When you override this method, you should call this method (super.deferredResolveInvokedynamicResolution) to ensure that the default resolution is carried out.

  31. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  32. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  33. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  34. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  35. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  36. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  37. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  38. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  39. def registerDeferredAction(cp: Constant_Pool)(deferredAction: (ClassFile) => ClassFile): Unit
    Definition Classes
    Constant_PoolReader
  40. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  41. def toString(): String
    Definition Classes
    AnyRef → Any
  42. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  43. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  44. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

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

Inherited from CodeBinding

Inherited from ConstantPoolBinding

Inherited from Constant_PoolReader

Inherited from AnyRef

Inherited from Any

Ungrouped