Skip to content

Commit 21fce1e

Browse files
committed
Small refactoring: move utility method
1 parent c8beac0 commit 21fce1e

3 files changed

Lines changed: 26 additions & 26 deletions

File tree

src/main/java/one/nio/gen/BytecodeGenerator.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,30 @@ public static void emitUnboxing(MethodVisitor mv, Class type) {
263263
}
264264
}
265265

266+
public static void loadPrimitiveType(MethodVisitor mv, Class<?> clazz) {
267+
if (clazz == int.class) {
268+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;");
269+
} else if (clazz == boolean.class) {
270+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Boolean", "TYPE", "Ljava/lang/Class;");
271+
} else if (clazz == byte.class) {
272+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Byte", "TYPE", "Ljava/lang/Class;");
273+
} else if (clazz == char.class) {
274+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Character", "TYPE", "Ljava/lang/Class;");
275+
} else if (clazz == short.class) {
276+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Short", "TYPE", "Ljava/lang/Class;");
277+
} else if (clazz == float.class) {
278+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Float", "TYPE", "Ljava/lang/Class;");
279+
} else if (clazz == long.class) {
280+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Long", "TYPE", "Ljava/lang/Class;");
281+
} else if (clazz == double.class) {
282+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Double", "TYPE", "Ljava/lang/Class;");
283+
} else if (clazz == void.class) {
284+
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Void", "TYPE", "Ljava/lang/Class;");
285+
} else {
286+
throw new AssertionError("Not supported primitive type: " + clazz);
287+
}
288+
}
289+
266290
public static void generateDefault(MethodVisitor mv, Field field) {
267291
mv.visitInsn(defaultValueOpcode(Type.getType(field.getType())));
268292
}

src/main/java/one/nio/serial/gen/GenerationStrategy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package one.nio.serial.gen;
1818

19+
import one.nio.gen.BytecodeGenerator;
1920
import one.nio.serial.FieldDescriptor;
2021
import org.objectweb.asm.ClassWriter;
2122
import org.objectweb.asm.MethodVisitor;
@@ -26,7 +27,6 @@
2627
import java.lang.reflect.Field;
2728
import java.util.function.Consumer;
2829

29-
import static one.nio.serial.gen.HandlesStrategy.loadPrimitiveType;
3030
import static org.objectweb.asm.Opcodes.CHECKCAST;
3131

3232
public abstract class GenerationStrategy {
@@ -51,7 +51,7 @@ public void generateCast(MethodVisitor mv, Class dst) {
5151

5252
public void loadClassSafe(MethodVisitor mv, Class clazz) {
5353
if (clazz.isPrimitive()) {
54-
loadPrimitiveType(mv, clazz);
54+
BytecodeGenerator.loadPrimitiveType(mv, clazz);
5555
} else {
5656
mv.visitLdcInsn(Type.getType(clazz));;
5757
}

src/main/java/one/nio/serial/gen/HandlesStrategy.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -339,30 +339,6 @@ public static String getVarHandleAccessorName(Field fd, boolean isGetter) {
339339
return "$" + ((isGetter) ? "get" : "set") + "_" + getVarHandleName(fd);
340340
}
341341

342-
public static void loadPrimitiveType(MethodVisitor mv, Class<?> clazz) {
343-
if (clazz == int.class) {
344-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;");
345-
} else if (clazz == boolean.class) {
346-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Boolean", "TYPE", "Ljava/lang/Class;");
347-
} else if (clazz == byte.class) {
348-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Byte", "TYPE", "Ljava/lang/Class;");
349-
} else if (clazz == char.class) {
350-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Character", "TYPE", "Ljava/lang/Class;");
351-
} else if (clazz == short.class) {
352-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Short", "TYPE", "Ljava/lang/Class;");
353-
} else if (clazz == float.class) {
354-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Float", "TYPE", "Ljava/lang/Class;");
355-
} else if (clazz == long.class) {
356-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Long", "TYPE", "Ljava/lang/Class;");
357-
} else if (clazz == double.class) {
358-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Double", "TYPE", "Ljava/lang/Class;");
359-
} else if (clazz == void.class) {
360-
mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/Void", "TYPE", "Ljava/lang/Class;");
361-
} else {
362-
throw new AssertionError("Not supported primitive type: " + clazz);
363-
}
364-
}
365-
366342
@Override
367343
public void emitWriteObjectCall(MethodVisitor mv, String className, MethodHandleInfo methodType) {
368344
emitWriteObjectHandler = true;

0 commit comments

Comments
 (0)