Class FirstBlock

java.lang.Object
proguard.classfile.util.inject.location.FirstBlock
All Implemented Interfaces:
InjectStrategy

public class FirstBlock extends Object implements InjectStrategy
An implementation of the InjectStrategy interface to find the earliest location suitable for injecting method invocation instructions.
  • Constructor Details

    • FirstBlock

      public FirstBlock()
  • Method Details

    • getSingleInjectionLocation

      public InjectStrategy.InjectLocation getSingleInjectionLocation(ProgramClass targetClass, ProgramMethod targetMethod)
      Find the first offset to inject a method invocation. If the target method is a constructor, the offset is right after the `invokespecial` to the constructor of the current class or its super class.
      Specified by:
      getSingleInjectionLocation in interface InjectStrategy
      Parameters:
      targetClass - The class holding the method in which a method invocation will be injected.
      targetMethod - The target method to have a method invocation injected into.
      Returns:
      An InjectLocation instance indicating the first offset suitable for injection.
    • getAllSuitableInjectionLocation

      public InjectStrategy.InjectLocation[] getAllSuitableInjectionLocation(ProgramClass targetClass, ProgramMethod targetMethod)
      Find the first offset to inject a method invocation. If the target method is a constructor, the offset is right after the `invokespecial` to the constructor of the current class or its super class.
      Specified by:
      getAllSuitableInjectionLocation in interface InjectStrategy
      Parameters:
      targetClass - The class holding the method in which a method invocation will be injected.
      targetMethod - The target method to have a method invocation injected into.
      Returns:
      An array of one InjectLocation instance indicating the first offset suitable for injection.