fix: correctly handle array type

This commit is contained in:
金戟
2022-12-11 12:03:37 +08:00
parent c53f1e01f0
commit a463bcbfd9
2 changed files with 4 additions and 1 deletions

View File

@@ -153,7 +153,7 @@ public class OmniClassHandler extends BaseClassHandler {
il.add(new InsnNode(ICONST_0));
il.add(new TypeInsnNode(ANEWARRAY, CLASS_CONSTRUCTION_OPTION));
il.add(new MethodInsnNode(INVOKESTATIC, CLASS_OMNI_CONSTRUCTOR, METHOD_NEW_INSTANCE, METHOD_DESC_NEW_INSTANCE, false));
il.add(new TypeInsnNode(CHECKCAST, ClassUtil.toSlashSeparateJavaStyleName(p)));
il.add(new TypeInsnNode(CHECKCAST, (p.startsWith("[")) ? p : ClassUtil.toSlashSeparateJavaStyleName(p)));
}
il.add(new MethodInsnNode(INVOKESPECIAL, superName, CONSTRUCTOR,
METHOD_START + StringUtil.join("", parameters) + VOID_METHOD_END, false));

View File

@@ -187,6 +187,9 @@ public class BytecodeUtil {
put(IFNONNULL, -1);
}};
/**
* Java primitive type name to bytecode mapping
*/
public static Map<String, String> PRIMITIVE_TYPE_NAME_MAP = new HashMap<String, String>() {{
put("byte", String.valueOf((char)TYPE_BYTE));
put("char", String.valueOf((char)TYPE_CHAR));