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
-
Field Summary
FieldsFields inherited from class one.nio.gen.BytecodeGenerator
dumpPath, INSTANCE, totalBytes, totalClassesFields 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 -
Method Summary
Modifier and TypeMethodDescriptionprivate static voiddefineBootstrapClass(Method m, String classData) private static voidemitDefaultValue(org.objectweb.asm.MethodVisitor mv, Field field, Class<?> fieldType, String value) private static voidemitGetSerialField(org.objectweb.asm.MethodVisitor mv, Field f) private static org.objectweb.asm.LabelemitNullGuard(org.objectweb.asm.MethodVisitor mv, Class<?> dst) private static voidemitPutSerialField(org.objectweb.asm.MethodVisitor mv, Field f, boolean isRecord, FieldDescriptor fd) private static voidemitReadObject(Class cls, org.objectweb.asm.MethodVisitor mv, String className) private static voidemitTypeCast(org.objectweb.asm.MethodVisitor mv, Class<?> src, Class<?> dst) private static voidemitWriteObject(Class cls, org.objectweb.asm.MethodVisitor mv) static byte[]generate(Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields) private static voidgenerateCalcSize(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) private static voidgenerateConstructor(org.objectweb.asm.ClassVisitor cv, String className) private static voidgenerateCreateRecord(org.objectweb.asm.MethodVisitor mv, Class<?> cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields) private static voidgenerateFromJson(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, String className) private static voidgenerateRead(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, String className) private static voidgenerateReadJsonField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, List<Field> parents, boolean isRecord) private static voidgenerateReadJsonFieldInternal(org.objectweb.asm.MethodVisitor mv, Field ownField) private static voidgenerateSkip(org.objectweb.asm.ClassVisitor cv, FieldDescriptor[] fds) private static voidgenerateToJson(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) private static voidgenerateWrite(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) static Delegateinstantiate(Class cls, FieldDescriptor[] fds, byte[] code) static Delegateinstantiate(Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields) private static booleanisConcreteClass(Class cls) private static booleanisNotSerial(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, setDumpPathMethods 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 Details
-
index
-
MAGIC_CLASS
- See Also:
-
-
Constructor Details
-
DelegateGenerator
public DelegateGenerator()
-
-
Method Details
-
defineBootstrapClass
private static void defineBootstrapClass(Method m, String classData) throws ReflectiveOperationException - Throws:
ReflectiveOperationException
-
instantiate
-
instantiate
public static Delegate instantiate(Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields) -
generate
-
generateConstructor
-
generateCalcSize
private static void generateCalcSize(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) -
generateWrite
private static void generateWrite(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) -
emitWriteObject
-
generateRead
private static void generateRead(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, String className) -
emitReadObject
-
generateSkip
-
generateToJson
private static void generateToJson(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds) -
generateFromJson
private static void generateFromJson(org.objectweb.asm.ClassVisitor cv, Class cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields, String className) -
generateReadJsonField
private static void generateReadJsonField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, List<Field> parents, boolean isRecord) -
generateReadJsonFieldInternal
private static void generateReadJsonFieldInternal(org.objectweb.asm.MethodVisitor mv, Field ownField) -
generateCreateRecord
private static void generateCreateRecord(org.objectweb.asm.MethodVisitor mv, Class<?> cls, FieldDescriptor[] fds, FieldDescriptor[] defaultFields) -
isConcreteClass
-
isNotSerial
-
setDefaultField
private static void setDefaultField(org.objectweb.asm.MethodVisitor mv, FieldDescriptor fd, boolean isRecord) -
emitDefaultValue
-
emitTypeCast
-
emitGetSerialField
-
emitPutSerialField
private static void emitPutSerialField(org.objectweb.asm.MethodVisitor mv, Field f, boolean isRecord, FieldDescriptor fd) -
emitNullGuard
private static org.objectweb.asm.Label emitNullGuard(org.objectweb.asm.MethodVisitor mv, Class<?> dst)
-