Class InvokeInjectionPointSelector

    • Method Detail

      • getFirstInsn

        @Nullable
        public org.objectweb.asm.tree.AbstractInsnNode getFirstInsn​(@NotNull
                                                                    org.objectweb.asm.tree.MethodNode method,
                                                                    @Nullable
                                                                    SlicedInjectionPointSelector from,
                                                                    @Nullable
                                                                    SlicedInjectionPointSelector to,
                                                                    @NotNull
                                                                    SimpleRemapper remapper,
                                                                    @NotNull
                                                                    java.lang.StringBuilder sharedBuilder)
        Description copied from class: InjectionPointSelector
        Obtains the first AbstractInsnNode that corresponds to the first applicable entrypoint within the provided method as defined by this InjectionPointSelector. The AbstractInsnNode may not be virtual, that is it may not have an opcode value of -1.

        Implementations of this method are trusted to not go out of bounds when it comes to the slices. Failure to do so could have nasty consequences for user behaviour as micromixin-transformer or any other caller is not guaranteed to verify the location of the matched instruction (but inversely it is not guaranteed that such as check won't be introduced in the future).

        Specified by:
        getFirstInsn in class InjectionPointSelector
        Parameters:
        method - The method to find the entrypoints in.
        from - The InjectionPointSelector that represents the start of the slice where the injection point should be selected from. May be null to represent HEAD (start of method).
        to - The InjectionPointSelector that represents the end of the slice where the injection point should be selected from. May be null to represent TAIL (end of method).
        remapper - The remapper instance to make use of. This is used to remap any references of the mixin class to the target class when applying injection point constraints.
        sharedBuilder - Shared StringBuilder instance to reduce StringBuilder allocations.
        Returns:
        The first matched instruction, or null if no instructions match.
      • getMatchedInstructions

        @NotNull
        public java.util.Collection<? extends org.objectweb.asm.tree.AbstractInsnNode> getMatchedInstructions​(@NotNull
                                                                                                              org.objectweb.asm.tree.MethodNode method,
                                                                                                              @Nullable
                                                                                                              SlicedInjectionPointSelector from,
                                                                                                              @Nullable
                                                                                                              SlicedInjectionPointSelector to,
                                                                                                              @NotNull
                                                                                                              SimpleRemapper remapper,
                                                                                                              @NotNull
                                                                                                              java.lang.StringBuilder sharedBuilder)
        Description copied from class: InjectionPointSelector
        Obtains the AbstractInsnNodes that correspond to every applicable entrypoint within the provided method as defined by this InjectionPointSelector.

        Implementations of this method are trusted to not go out of bounds when it comes to the slices. Failure to do so could have nasty consequences for user behaviour as micromixin-transformer or any other caller is not guaranteed to verify the location of the matched instructions (but inversely it is not guaranteed that such as check won't be introduced in the future).

        Specified by:
        getMatchedInstructions in class InjectionPointSelector
        Parameters:
        method - The method to find the entrypoints in.
        from - The InjectionPointSelector that represents the start of the slice where the injection point should be selected from. May be null to represent HEAD (start of method).
        to - The InjectionPointSelector that represents the end of the slice where the injection point should be selected from. May be null to represent TAIL (end of method).
        remapper - The remapper instance to make use of. This is used to remap any references of the mixin class to the target class when applying injection point constraints.
        sharedBuilder - Shared StringBuilder instance to reduce StringBuilder allocations.
        Returns:
        The selected instruction nodes that correspond to this entry point.
      • supportsRedirect

        public boolean supportsRedirect()
        Description copied from class: InjectionPointSelector
        WARNING WARNING WARNING The method was deprecated for removal in the 0.6.X lifecycle and will get removed at an unspecified point in time (this might fall within the 0.7.X lifecycle!). This method is no longer considered to be part of the public API.

        Checks whether the injection point can be used in conjunction with the Redirect-annotation. Generally should only be true if this injection point selector can select method instruction nodes.

        Overrides:
        supportsRedirect in class InjectionPointSelector
        Returns:
        True if usable in redirects, false otherwise.