Class KotlinDefaultArgumentsFilter

  • All Implemented Interfaces:
    IFilter

    public final class KotlinDefaultArgumentsFilter
    extends java.lang.Object
    implements IFilter
    Filters branches that Kotlin compiler generates for default arguments. For each default argument Kotlin compiler generates following bytecode to determine if it should be used or not:
     ILOAD maskVar
     ICONST_x, BIPUSH, SIPUSH, LDC or LDC_W
     IAND
     IFEQ label
     default argument
     label:
     
    Where maskVar is penultimate argument of synthetic method with suffix "$default". And its value can't be zero - invocation with all arguments uses original non synthetic method, thus IFEQ instructions should be ignored.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void filter​(org.objectweb.asm.tree.MethodNode methodNode, IFilterContext context, IFilterOutput output)
      This method is called for every method.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • KotlinDefaultArgumentsFilter

        public KotlinDefaultArgumentsFilter()
    • Method Detail

      • filter

        public void filter​(org.objectweb.asm.tree.MethodNode methodNode,
                           IFilterContext context,
                           IFilterOutput output)
        Description copied from interface: IFilter
        This method is called for every method. The filter implementation is expected to inspect the provided method and report its result to the given IFilterOutput instance.
        Specified by:
        filter in interface IFilter
        Parameters:
        methodNode - method to inspect
        context - context information for the method
        output - callback to report filtering results to