Class EmitUtils


  • public class EmitUtils
    extends java.lang.Object
    • Method Detail

      • null_constructor

        public static void null_constructor​(ClassEmitter ce)
      • process_array

        public static void process_array​(CodeEmitter e,
                                         org.objectweb.asm.Type type,
                                         ProcessArrayCallback callback)
        Process an array on the stack. Assumes the top item on the stack is an array of the specified type. For each element in the array, puts the element on the stack and triggers the callback.
        Parameters:
        type - the type of the array (type.isArray() must be true)
        callback - the callback triggered for each element
      • process_arrays

        public static void process_arrays​(CodeEmitter e,
                                          org.objectweb.asm.Type type,
                                          ProcessArrayCallback callback)
        Process two arrays on the stack in parallel. Assumes the top two items on the stack are arrays of the specified class. The arrays must be the same length. For each pair of elements in the arrays, puts the pair on the stack and triggers the callback.
        Parameters:
        type - the type of the arrays (type.isArray() must be true)
        callback - the callback triggered for each pair of elements
      • load_class_this

        public static void load_class_this​(CodeEmitter e)
      • load_class

        public static void load_class​(CodeEmitter e,
                                      org.objectweb.asm.Type type)
      • push_array

        public static void push_array​(CodeEmitter e,
                                      java.lang.Object[] array)
      • push_object

        public static void push_object​(CodeEmitter e,
                                       java.lang.Object obj)
      • not_equals

        public static void not_equals​(CodeEmitter e,
                                      org.objectweb.asm.Type type,
                                      org.objectweb.asm.Label notEquals,
                                      CustomizerRegistry registry)
        Branches to the specified label if the top two items on the stack are not equal. The items must both be of the specified class. Equality is determined by comparing primitive values directly and by invoking the equals method for Objects. Arrays are recursively processed in the same manner.
      • wrap_throwable

        public static void wrap_throwable​(Block block,
                                          org.objectweb.asm.Type wrapper)
      • add_properties

        public static void add_properties​(ClassEmitter ce,
                                          java.lang.String[] names,
                                          org.objectweb.asm.Type[] types)
      • add_property

        public static void add_property​(ClassEmitter ce,
                                        java.lang.String name,
                                        org.objectweb.asm.Type type,
                                        java.lang.String fieldName)
      • wrap_undeclared_throwable

        public static void wrap_undeclared_throwable​(CodeEmitter e,
                                                     Block handler,
                                                     org.objectweb.asm.Type[] exceptions,
                                                     org.objectweb.asm.Type wrapper)