Package one.nio.serial.gen
Class DelegateGenerator
- java.lang.Object
-
- java.lang.ClassLoader
-
- one.nio.gen.BytecodeGenerator
-
- one.nio.serial.gen.DelegateGenerator
-
- All Implemented Interfaces:
BytecodeGeneratorMXBean,org.objectweb.asm.Opcodes
public class DelegateGenerator extends BytecodeGenerator
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.concurrent.atomic.AtomicIntegerindexprivate static java.lang.StringMAGIC_CLASS-
Fields inherited from class one.nio.gen.BytecodeGenerator
dumpPath, INSTANCE, totalBytes, 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
-
-
Constructor Summary
Constructors Constructor Description DelegateGenerator()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static voiddefineBootstrapClass(java.lang.reflect.Method m, java.lang.String classData)private static voidemitDefaultValue(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field field, java.lang.Class<?> fieldType, java.lang.String value)private static voidemitGetSerialField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)private static org.objectweb.asm.LabelemitNullGuard(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> dst)private static voidemitPutSerialField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f, boolean isRecord, FieldDescriptor fd)private static voidemitReadObject(java.lang.Class cls, org.objectweb.asm.MethodVisitor mv, java.lang.String className)private static voidemitTypeCast(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> src, java.lang.Class<?> dst)private static voidemitWriteObject(java.lang.Class cls, org.objectweb.asm.MethodVisitor mv)static byte[]generate(java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)private static voidgenerateCalcSize(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)private static voidgenerateConstructor(org.objectweb.asm.ClassVisitor cv, java.lang.String className)private static voidgenerateCreateRecord(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)private static voidgenerateFromJson(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, java.lang.String className)private static voidgenerateRead(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, java.lang.String className)private static voidgenerateReadJsonField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, java.util.List<java.lang.reflect.Field> parents, boolean isRecord)private static voidgenerateReadJsonFieldInternal(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field ownField)private static voidgenerateSkip(org.objectweb.asm.ClassVisitor cv, FieldDescriptor[] fds)private static voidgenerateToJson(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)private static voidgenerateWrite(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)static Delegateinstantiate(java.lang.Class cls, FieldDescriptor[] fds, byte[] code)static Delegateinstantiate(java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)private static booleanisConcreteClass(java.lang.Class cls)private static booleanisNotSerial(java.lang.reflect.Field field)private static voidsetDefaultField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, boolean isRecord)-
Methods inherited from class one.nio.gen.BytecodeGenerator
defineClass, defineClassIfNotExists, dumpClass, emitBoxing, emitDouble, emitFloat, emitGetField, emitInt, emitInvoke, emitInvoke, emitInvoke, emitLong, emitPutField, emitThrow, emitUnboxing, getDumpPath, getTotalBytes, getTotalClasses, instantiate, setDumpPath
-
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
-
index
private static final java.util.concurrent.atomic.AtomicInteger index
-
MAGIC_CLASS
private static final java.lang.String MAGIC_CLASS
- See Also:
- Constant Field Values
-
-
Method Detail
-
defineBootstrapClass
private static void defineBootstrapClass(java.lang.reflect.Method m, java.lang.String classData) throws java.lang.ReflectiveOperationException- Throws:
java.lang.ReflectiveOperationException
-
instantiate
public static Delegate instantiate(java.lang.Class cls, FieldDescriptor[] fds, byte[] code)
-
instantiate
public static Delegate instantiate(java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)
-
generate
public static byte[] generate(java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)
-
generateConstructor
private static void generateConstructor(org.objectweb.asm.ClassVisitor cv, java.lang.String className)
-
generateCalcSize
private static void generateCalcSize(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)
-
generateWrite
private static void generateWrite(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)
-
emitWriteObject
private static void emitWriteObject(java.lang.Class cls, org.objectweb.asm.MethodVisitor mv)
-
generateRead
private static void generateRead(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, java.lang.String className)
-
emitReadObject
private static void emitReadObject(java.lang.Class cls, org.objectweb.asm.MethodVisitor mv, java.lang.String className)
-
generateSkip
private static void generateSkip(org.objectweb.asm.ClassVisitor cv, FieldDescriptor[] fds)
-
generateToJson
private static void generateToJson(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds)
-
generateFromJson
private static void generateFromJson(org.objectweb.asm.ClassVisitor cv, java.lang.Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, java.lang.String className)
-
generateReadJsonField
private static void generateReadJsonField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, java.util.List<java.lang.reflect.Field> parents, boolean isRecord)
-
generateReadJsonFieldInternal
private static void generateReadJsonFieldInternal(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field ownField)
-
generateCreateRecord
private static void generateCreateRecord(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields)
-
isConcreteClass
private static boolean isConcreteClass(java.lang.Class cls)
-
isNotSerial
private static boolean isNotSerial(java.lang.reflect.Field field)
-
setDefaultField
private static void setDefaultField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, boolean isRecord)
-
emitDefaultValue
private static void emitDefaultValue(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field field, java.lang.Class<?> fieldType, java.lang.String value)
-
emitTypeCast
private static void emitTypeCast(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> src, java.lang.Class<?> dst)
-
emitGetSerialField
private static void emitGetSerialField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f)
-
emitPutSerialField
private static void emitPutSerialField(org.objectweb.asm.MethodVisitor mv, java.lang.reflect.Field f, boolean isRecord, FieldDescriptor fd)
-
emitNullGuard
private static org.objectweb.asm.Label emitNullGuard(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> dst)
-
-