Package one.nio.gen

Class BytecodeGenerator

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String dumpPath  
      static BytecodeGenerator INSTANCE  
      private static org.slf4j.Logger log  
      protected java.util.concurrent.atomic.AtomicInteger totalBytes  
      protected java.util.concurrent.atomic.AtomicInteger totalClasses  
      • Fields inherited from interface org.objectweb.asm.Opcodes

        AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V9
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Class<?> defineClass​(byte[] classData)  
      java.lang.Class<?> defineClassIfNotExists​(java.lang.String className, byte[] classData)  
      void dumpClass​(byte[] classData, java.lang.String className)  
      static void emitBoxing​(org.objectweb.asm.MethodVisitor mv, java.lang.Class type)  
      static void emitDouble​(org.objectweb.asm.MethodVisitor mv, double c)  
      static void emitFloat​(org.objectweb.asm.MethodVisitor mv, float c)  
      static void emitGetField​(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)  
      static void emitInt​(org.objectweb.asm.MethodVisitor mv, int c)  
      static void emitInvoke​(org.objectweb.asm.MethodVisitor mv, java.lang.invoke.MethodHandleInfo m)  
      static void emitInvoke​(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Constructor c)  
      static void emitInvoke​(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Method m)  
      static void emitLong​(org.objectweb.asm.MethodVisitor mv, long c)  
      static void emitPutField​(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)  
      static void emitThrow​(org.objectweb.asm.MethodVisitor mv, java.lang.String exceptionClass, java.lang.String message)  
      static void emitUnboxing​(org.objectweb.asm.MethodVisitor mv, java.lang.Class type)  
      java.lang.String getDumpPath()  
      private static java.lang.String getMethodDescriptor​(java.lang.invoke.MethodType method)  
      int getTotalBytes()  
      int getTotalClasses()  
      <T> T instantiate​(byte[] classData, java.lang.Class<T> iface)  
      void setDumpPath​(java.lang.String dumpPath)  
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

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

      • log

        private static final org.slf4j.Logger log
      • totalClasses

        protected final java.util.concurrent.atomic.AtomicInteger totalClasses
      • totalBytes

        protected final java.util.concurrent.atomic.AtomicInteger totalBytes
      • dumpPath

        protected java.lang.String dumpPath
    • Constructor Detail

      • BytecodeGenerator

        public BytecodeGenerator()
      • BytecodeGenerator

        public BytecodeGenerator​(java.lang.ClassLoader parent)
    • Method Detail

      • defineClass

        public java.lang.Class<?> defineClass​(byte[] classData)
      • defineClassIfNotExists

        public java.lang.Class<?> defineClassIfNotExists​(java.lang.String className,
                                                         byte[] classData)
      • instantiate

        public <T> T instantiate​(byte[] classData,
                                 java.lang.Class<T> iface)
      • dumpClass

        public void dumpClass​(byte[] classData,
                              java.lang.String className)
      • emitGetField

        public static void emitGetField​(org.objectweb.asm.MethodVisitor mv,
                                        java.lang.reflect.Field f)
      • emitPutField

        public static void emitPutField​(org.objectweb.asm.MethodVisitor mv,
                                        java.lang.reflect.Field f)
      • emitInvoke

        public static void emitInvoke​(org.objectweb.asm.MethodVisitor mv,
                                      java.lang.reflect.Method m)
      • emitInvoke

        public static void emitInvoke​(org.objectweb.asm.MethodVisitor mv,
                                      java.lang.invoke.MethodHandleInfo m)
      • getMethodDescriptor

        private static java.lang.String getMethodDescriptor​(java.lang.invoke.MethodType method)
      • emitInvoke

        public static void emitInvoke​(org.objectweb.asm.MethodVisitor mv,
                                      java.lang.reflect.Constructor c)
      • emitThrow

        public static void emitThrow​(org.objectweb.asm.MethodVisitor mv,
                                     java.lang.String exceptionClass,
                                     java.lang.String message)
      • emitInt

        public static void emitInt​(org.objectweb.asm.MethodVisitor mv,
                                   int c)
      • emitLong

        public static void emitLong​(org.objectweb.asm.MethodVisitor mv,
                                    long c)
      • emitFloat

        public static void emitFloat​(org.objectweb.asm.MethodVisitor mv,
                                     float c)
      • emitDouble

        public static void emitDouble​(org.objectweb.asm.MethodVisitor mv,
                                      double c)
      • emitBoxing

        public static void emitBoxing​(org.objectweb.asm.MethodVisitor mv,
                                      java.lang.Class type)
      • emitUnboxing

        public static void emitUnboxing​(org.objectweb.asm.MethodVisitor mv,
                                        java.lang.Class type)