OSDN Git Service

save
[jcfa/jcfa.git] / jcfa / src / jp / igapyon / jcfa / JavaClassFileAnalyzer.java
index 970477e..ff42296 100644 (file)
@@ -6,6 +6,7 @@ import java.io.IOException;
 import jp.igapyon.jcfa.util.JcfaUtil;\r
 import jp.igapyon.jcfa.util.JcfaWriteUtil;\r
 import jp.igapyon.jcfa.vo.JcfaClass;\r
+import jp.igapyon.jcfa.vo.JcfaCode;\r
 import jp.igapyon.jcfa.vo.JcfaField;\r
 import jp.igapyon.jcfa.vo.JcfaMethod;\r
 import jp.igapyon.jcfa.vo.JcfaUnit;\r
@@ -172,25 +173,34 @@ public class JavaClassFileAnalyzer {
 \r
                final byte[] codes = code.getCode();\r
                for (int pc = 0; pc < codes.length; pc++) {\r
-                       final short opcode = JcfaUtil.byte2UnsignedByte(codes[pc]);\r
-                       short operands = Constants.NO_OF_OPERANDS[opcode];\r
+                       final JcfaCode jcfaCode = new JcfaCode();\r
+                       jcfaMethod.getCodeList().add(jcfaCode);\r
+\r
+                       jcfaCode.setOpcode(JcfaUtil.byte2UnsignedByte(codes[pc]));\r
+                       jcfaCode.getComment().getCommentList()\r
+                                       .add("opcode: " + jcfaCode.getOpcode());\r
+\r
+                       short operands = Constants.NO_OF_OPERANDS[jcfaCode.getOpcode()];\r
                        if (operands < 0) {\r
-                               System.err.println("  TODO negative value:"\r
-                                               + Constants.OPCODE_NAMES[opcode] + ": " + operands);\r
-                               // break;\r
+                               jcfaCode.getComment()\r
+                                               .getCommentList()\r
+                                               .add("TODO negative value:"\r
+                                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]\r
+                                                               + ": " + operands);\r
+                               break;\r
                        }\r
 \r
-                       switch (opcode) {\r
+                       switch (jcfaCode.getOpcode()) {\r
                        case Constants.RETURN: {\r
                                System.out.println("    " + pc + ": "\r
-                                               + Constants.OPCODE_NAMES[opcode]);\r
+                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]);\r
                                break;\r
                        }\r
                        case Constants.GETSTATIC: {\r
                                System.out.println("    "\r
                                                + pc\r
                                                + ": "\r
-                                               + Constants.OPCODE_NAMES[opcode]\r
+                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()]\r
                                                + ": "\r
                                                + JcfaUtil.getConstantFieldrefString(jc, codes[pc + 1],\r
                                                                codes[pc + 2]));\r
@@ -198,7 +208,7 @@ public class JavaClassFileAnalyzer {
                        }\r
                        case Constants.LDC: {\r
                                System.out.println("    " + pc + ": "\r
-                                               + Constants.OPCODE_NAMES[opcode] + ": "\r
+                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + ": "\r
                                                + JcfaUtil.getConstantString(jc, codes[pc + 1]));\r
                        }\r
                                break;\r
@@ -207,7 +217,7 @@ public class JavaClassFileAnalyzer {
                                final int operand = JcfaUtil.byte2UnsignedShort(codes[pc + 1],\r
                                                codes[pc + 2]);\r
                                System.out.println("    " + pc + ": "\r
-                                               + Constants.OPCODE_NAMES[opcode] + ": "\r
+                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + ": "\r
                                                + JcfaUtil.getConstantMethodRefString(jc, operand));\r
                        }\r
                                break;\r
@@ -243,8 +253,8 @@ public class JavaClassFileAnalyzer {
                                break;\r
                        default: {\r
                                System.out.println("    " + pc + ": "\r
-                                               + Constants.OPCODE_NAMES[opcode] + " (" + operands\r
-                                               + ")");\r
+                                               + Constants.OPCODE_NAMES[jcfaCode.getOpcode()] + " ("\r
+                                               + operands + ")");\r
                        }\r
                                break;\r
                        }\r