コードをより厳密な Java 7 ベリファイアに適合させる必要がありvisitFrame
、MethodNode に呼び出しを追加する必要があります (ツリー API を使用しています)。Type
visitFrame で使用される sへのマップ方法に関する情報を見つけることができなかっObject[]
たので、ここで私を助けてください...
これは私がこれまでに持っているものです:
private Object getFrameType(Type type) {
switch (type.getSort()) {
case Type.BOOLEAN:
case Type.CHAR:
case Type.BYTE:
case Type.SHORT:
case Type.INT:
return Opcodes.INTEGER;
case Type.LONG:
return Opcodes.LONG;
case Type.FLOAT:
return Opcodes.FLOAT;
case Type.DOUBLE:
return Opcodes.DOUBLE;
case Type.OBJECT:
case Type.ARRAY:
return type.getInternalName();
}
throw new RuntimeException(type + " can not be converted to frame type");
}
私が知りたいのはType.VOID
、 とは何Type.METHOD
ですか? Opcodes.TOP
、Opcodes.NULL
およびが必要になるのはOpcodes.UNINITIALIZED_THIS
いつですか?
UNINITIALIZED_THIS
はコンストラクターでのみ使用され、おそらく and を無視できるVOID
とMETHOD
思いますが、よくわかりませんし、何が何であるのか少しもわかりませんTOP
。