From 1893470b46b9e0cd2d5702387e76ecc9a89fe842 Mon Sep 17 00:00:00 2001 From: iga Date: Thu, 3 Apr 2014 20:45:24 +0900 Subject: [PATCH] save --- .../jp/igapyon/jcfa/JcfaVersionConstants.java | 2 +- jcfa/src/jp/igapyon/jcfa/util/JcfaWriteUtil.java | 12 +++-- .../{JcfaOSClass.java => JcfaOSRef.java} | 2 +- .../jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.jcfa | 54 ++++++++++++++++++++++ 4 files changed, 64 insertions(+), 6 deletions(-) rename jcfa/src/jp/igapyon/jcfa/vo/operandstack/{JcfaOSClass.java => JcfaOSRef.java} (81%) create mode 100644 jcfa/testJavaClass/output/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.jcfa diff --git a/jcfa/src.generated/jp/igapyon/jcfa/JcfaVersionConstants.java b/jcfa/src.generated/jp/igapyon/jcfa/JcfaVersionConstants.java index 9610575..585a409 100644 --- a/jcfa/src.generated/jp/igapyon/jcfa/JcfaVersionConstants.java +++ b/jcfa/src.generated/jp/igapyon/jcfa/JcfaVersionConstants.java @@ -3,7 +3,7 @@ package jp.igapyon.jcfa; /* This source file is generated by JavaClassFileAnalyzer. */ /* Do not modify this source file. */ public class JcfaVersionConstants { - public static final String VERSION = "I201404030744"; + public static final String VERSION = "I201404032042"; public static final String getVersion() { return VERSION; diff --git a/jcfa/src/jp/igapyon/jcfa/util/JcfaWriteUtil.java b/jcfa/src/jp/igapyon/jcfa/util/JcfaWriteUtil.java index e8ca4f1..089d8b1 100644 --- a/jcfa/src/jp/igapyon/jcfa/util/JcfaWriteUtil.java +++ b/jcfa/src/jp/igapyon/jcfa/util/JcfaWriteUtil.java @@ -12,6 +12,7 @@ import jp.igapyon.jcfa.vo.JcfaField; import jp.igapyon.jcfa.vo.JcfaMethod; import jp.igapyon.jcfa.vo.JcfaUnit; import jp.igapyon.jcfa.vo.operandstack.JcfaOSLocalVariable; +import jp.igapyon.jcfa.vo.operandstack.JcfaOSRef; import org.apache.bcel.Constants; import org.apache.bcel.classfile.JavaClass; @@ -152,10 +153,13 @@ public class JcfaWriteUtil { break; } case Constants.GETSTATIC: { - jcfaCode.getComment() - .getCommentList() - .add(JcfaUtil.getConstantFieldrefString(jc, codes[1], - codes[2])); + final JcfaOSRef osRef = new JcfaOSRef(); + jcfaMethod.getFrame().getOperandStack().push(osRef); + osRef.setClassName(JcfaUtil.getConstantFieldrefString(jc, + codes[1], codes[2])); + + jcfaCode.getComment().getCommentList() + .add(osRef.getClassName()); break; } case Constants.LDC: { diff --git a/jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSClass.java b/jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.java similarity index 81% rename from jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSClass.java rename to jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.java index bba8f7e..9ad9415 100644 --- a/jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSClass.java +++ b/jcfa/src/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.java @@ -1,6 +1,6 @@ package jp.igapyon.jcfa.vo.operandstack; -public class JcfaOSClass extends JcfaOSNode { +public class JcfaOSRef extends JcfaOSNode { protected String className; public String getClassName() { diff --git a/jcfa/testJavaClass/output/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.jcfa b/jcfa/testJavaClass/output/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.jcfa new file mode 100644 index 0000000..d09d859 --- /dev/null +++ b/jcfa/testJavaClass/output/jp/igapyon/jcfa/vo/operandstack/JcfaOSRef.jcfa @@ -0,0 +1,54 @@ +package jp.igapyon.jcfa.vo.operandstack; + +/** TODO import func. is missing. */ +public class JcfaOSRef extends jp.igapyon.jcfa.vo.operandstack.JcfaOSNode { + /** */ + protected java.lang.String className; + + /** Constructor. */ + public JcfaOSRef() { + /* + * 0: aload_0 this + */ + + /* + * 1: invokespecial jp/igapyon/jcfa/vo/operandstack/JcfaOSNode#()V + */ + + /* 4: return */ + } + + /** Method. */ + public java.lang.String getClassName() { + /* + * 0: aload_0 this + */ + + /* + * 1: getfield TODO unsupported opcode + */ + + /* + * 4: areturn TODO unsupported opcode + */ + } + + /** + * Method. java.lang.String + */ + public void setClassName(java.lang.String arg0) { + /* + * 0: aload_0 this + */ + + /* + * 1: aload_1 TODO unsupported opcode + */ + + /* + * 2: putfield TODO unsupported opcode + */ + + /* 5: return */ + } +} \ No newline at end of file -- 2.11.0