if (operands == Constants.UNPREDICTABLE) {
switch (jcfaCode.getOpcode()) {
case Constants.TABLESWITCH: {
+ // pad
+ // pad
+ // pad
+ // pad
+ // defaultbyte1
+ // defaultbyte2
+ // defaultbyte3
+ // defaultbyte4
+ // lowbyte1
+ // lowbyte2
+ // lowbyte3
+ // lowbyte4
+ // highbyte1
+ // highbyte2
+ // highbyte3
+ // highbyte4
+ // jump offsets here...
+
jcfaCode.getComment().getCommentList()
.add(" TODO no support opecode and operands");
+ int result = JcfaUtil.byte2Int(codes[pc + 1], codes[pc + 2],
+ codes[pc + 3], codes[pc + 4]);
+ jcfaCode.getComment().getCommentList()
+ .add(" MEMO skipping operands: " + result);
+ System.out.println("skipBytes: " + result);
+ int lookupOp = pc + 5;
+ short diff = JcfaUtil.byte2UnsignedByte(codes[lookupOp++]);
+ System.out.println("diff: " + diff);
+
+ int loopCount = JcfaUtil
+ .byte2Int(codes[lookupOp++], codes[lookupOp++],
+ codes[lookupOp++], codes[lookupOp++]);
+ System.out.println("count: " + loopCount);
+
return Constants.UNPREDICTABLE;
}
case Constants.LOOKUPSWITCH: {
+ // pad
+ // pad
+ // pad
+ // pad
+ // defaultbyte1
+ // defaultbyte2
+ // defaultbyte3
+ // defaultbyte4
+ // npairs1
+ // npairs2
+ // npairs3
+ // npairs4
+ // match-offset pairs here...
+
int result = JcfaUtil.byte2Int(codes[pc + 1], codes[pc + 2],
codes[pc + 3], codes[pc + 4]);
jcfaCode.getComment().getCommentList()