+
+ byte[] codes = jcfaCode.getCodes();
+ JavaClass jc = jcfaCode.getJavaClass();
+
+ switch (jcfaCode.getOpcode()) {
+ case Constants.RETURN: {
+ break;
+ }
+ case Constants.GETSTATIC: {
+ jcfaCode.getComment()
+ .getCommentList()
+ .add(JcfaUtil.getConstantFieldrefString(jc, codes[1],
+ codes[2]));
+ break;
+ }
+ case Constants.LDC: {
+ jcfaCode.getComment().getCommentList()
+ .add(JcfaUtil.getConstantString(jc, codes[1]));
+ }
+ break;
+ case Constants.INVOKEVIRTUAL:
+ case Constants.INVOKESPECIAL: {
+ final int operand = JcfaUtil.byte2UnsignedShort(codes[1],
+ codes[2]);
+ jcfaCode.getComment().getCommentList()
+ .add(JcfaUtil.getConstantMethodRefString(jc, operand));
+ }
+ break;
+ case Constants.LOOKUPSWITCH:
+ int skipBytes = JcfaUtil.byte2Int(codes[1], codes[2], codes[3],
+ codes[4]);
+ jcfaCode.getComment().getCommentList()
+ .add(" TODO skipping bytes: " + (skipBytes));
+
+ int lookupOp = 5;
+
+ short diff = JcfaUtil.byte2UnsignedByte(codes[lookupOp++]);
+ jcfaCode.getComment().getCommentList()
+ .add(" TODO skipping bytes: " + (diff));
+
+ int loopCount = JcfaUtil
+ .byte2Int(codes[lookupOp++], codes[lookupOp++],
+ codes[lookupOp++], codes[lookupOp++]);
+ for (int index = 0; index < loopCount; index++) {
+ jcfaCode.getComment()
+ .getCommentList()
+ .add(JcfaUtil.byte2Int(codes[lookupOp++],
+ codes[lookupOp++], codes[lookupOp++],
+ codes[lookupOp++])
+ + ":"
+ + (JcfaUtil.byte2Int(codes[lookupOp++],
+ codes[lookupOp++],
+ codes[lookupOp++],
+ codes[lookupOp++])));
+ }
+
+ short diff2 = JcfaUtil.byte2UnsignedByte(codes[lookupOp++]);
+ jcfaCode.getComment().getCommentList()
+ .add(" TODO skipping bytes: " + (diff2));
+
+ break;
+ default: {
+ }
+ break;
+ }
+