Package one.nio.gen
Class BytecodeGenerator
- java.lang.Object
-
- java.lang.ClassLoader
-
- one.nio.gen.BytecodeGenerator
-
- All Implemented Interfaces:
BytecodeGeneratorMXBean,org.objectweb.asm.Opcodes
- Direct Known Subclasses:
DateFormatGenerator,DelegateGenerator,RequestHandlerGenerator,StubGenerator
public class BytecodeGenerator extends java.lang.ClassLoader implements BytecodeGeneratorMXBean, org.objectweb.asm.Opcodes
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringdumpPathstatic BytecodeGeneratorINSTANCEprivate static org.slf4j.Loggerlogprotected java.util.concurrent.atomic.AtomicIntegertotalBytesprotected java.util.concurrent.atomic.AtomicIntegertotalClasses-
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
-
-
Constructor Summary
Constructors Constructor Description BytecodeGenerator()BytecodeGenerator(java.lang.ClassLoader parent)
-
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)voiddumpClass(byte[] classData, java.lang.String className)static voidemitBoxing(org.objectweb.asm.MethodVisitor mv, java.lang.Class type)static voidemitDouble(org.objectweb.asm.MethodVisitor mv, double c)static voidemitFloat(org.objectweb.asm.MethodVisitor mv, float c)static voidemitGetField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)static voidemitInt(org.objectweb.asm.MethodVisitor mv, int c)static voidemitInvoke(org.objectweb.asm.MethodVisitor mv, java.lang.invoke.MethodHandleInfo m)static voidemitInvoke(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Constructor c)static voidemitInvoke(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Method m)static voidemitLong(org.objectweb.asm.MethodVisitor mv, long c)static voidemitPutField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)static voidemitThrow(org.objectweb.asm.MethodVisitor mv, java.lang.String exceptionClass, java.lang.String message)static voidemitUnboxing(org.objectweb.asm.MethodVisitor mv, java.lang.Class type)java.lang.StringgetDumpPath()private static java.lang.StringgetMethodDescriptor(java.lang.invoke.MethodType method)intgetTotalBytes()intgetTotalClasses()<T> Tinstantiate(byte[] classData, java.lang.Class<T> iface)voidsetDumpPath(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
-
-
-
-
Field Detail
-
log
private static final org.slf4j.Logger log
-
INSTANCE
public static final BytecodeGenerator INSTANCE
-
totalClasses
protected final java.util.concurrent.atomic.AtomicInteger totalClasses
-
totalBytes
protected final java.util.concurrent.atomic.AtomicInteger totalBytes
-
dumpPath
protected java.lang.String dumpPath
-
-
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)
-
getDumpPath
public java.lang.String getDumpPath()
- Specified by:
getDumpPathin interfaceBytecodeGeneratorMXBean
-
setDumpPath
public void setDumpPath(java.lang.String dumpPath)
- Specified by:
setDumpPathin interfaceBytecodeGeneratorMXBean
-
getTotalClasses
public int getTotalClasses()
- Specified by:
getTotalClassesin interfaceBytecodeGeneratorMXBean
-
getTotalBytes
public int getTotalBytes()
- Specified by:
getTotalBytesin interfaceBytecodeGeneratorMXBean
-
-