From e1aca5c144e4b88780e19ac67f466e66a2d4def5 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 28 Oct 1998 12:47:22 +0000 Subject: [PATCH] call useType for static fields git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@82 379699f6-c40d-0410-875b-85095c16579e --- jode/jode/expr/GetFieldOperator.java | 38 +++++++++---------------- jode/jode/expr/PutFieldOperator.java | 42 +++++++++------------------- 2 files changed, 26 insertions(+), 54 deletions(-) diff --git a/jode/jode/expr/GetFieldOperator.java b/jode/jode/expr/GetFieldOperator.java index 2dfc84c..65c8946 100644 --- a/jode/jode/expr/GetFieldOperator.java +++ b/jode/jode/expr/GetFieldOperator.java @@ -24,6 +24,7 @@ public class GetFieldOperator extends Operator { boolean staticFlag; CpoolRef field; CodeAnalyzer codeAnalyzer; + Type classType; public GetFieldOperator(CodeAnalyzer codeAnalyzer, boolean staticFlag, CpoolRef field) { @@ -31,6 +32,9 @@ public class GetFieldOperator extends Operator { this.codeAnalyzer = codeAnalyzer; this.staticFlag = staticFlag; this.field = field; + classType = Type.tClass(field.getCpoolClass().getName().getString()); + if (staticFlag) + classType.useType(); } public int getPriority() { @@ -42,41 +46,25 @@ public class GetFieldOperator extends Operator { } public int getOperandPriority(int i) { - if (staticFlag) { - /* shouldn't be called */ - throw new RuntimeException("Field is static"); - } return 900; } public Type getOperandType(int i) { - if (staticFlag) { - /* shouldn't be called */ - throw new RuntimeException("Field is static"); - } - return Type.tClass(field.getCpoolClass() - .getName().getString()); + return classType; } public void setOperandType(Type types[]) { } public String toString(String[] operands) { - String object; - if (staticFlag) { - if (field.getCpoolClass().getName().getString() - .equals(codeAnalyzer.getClazz().getName())) - return field.getNameAndType().getName().getString(); - object = - codeAnalyzer.getTypeString - (Type.tClass(field.getCpoolClass() - .getName().getString())); - } else { - if (operands[0].equals("this")) - return field.getNameAndType().getName().getString(); - object = operands[0]; - } - return object + "." + field.getNameAndType().getName().getString(); + String fieldName = field.getNameAndType().getName().getString(); + return staticFlag + ? (classType.equals(Type.tType(codeAnalyzer.getClazz())) + ? fieldName + : classType.toString() + "." + fieldName) + : (operands[0].equals("this") + ? fieldName + : operands[0] + "." + fieldName); } public boolean equals(Object o) { diff --git a/jode/jode/expr/PutFieldOperator.java b/jode/jode/expr/PutFieldOperator.java index fce0e3d..389dc34 100644 --- a/jode/jode/expr/PutFieldOperator.java +++ b/jode/jode/expr/PutFieldOperator.java @@ -24,6 +24,7 @@ public class PutFieldOperator extends StoreInstruction { CodeAnalyzer codeAnalyzer; boolean staticFlag; CpoolRef field; + Type classType; public PutFieldOperator(CodeAnalyzer codeAnalyzer, boolean staticFlag, CpoolRef field) { @@ -31,6 +32,9 @@ public class PutFieldOperator extends StoreInstruction { this.codeAnalyzer = codeAnalyzer; this.staticFlag = staticFlag; this.field = field; + classType = Type.tClass(field.getCpoolClass().getName().getString()); + if (staticFlag) + classType.useType(); } public boolean matches(Operator loadop) { @@ -43,45 +47,25 @@ public class PutFieldOperator extends StoreInstruction { } public int getLValueOperandPriority(int i) { - if (staticFlag) { - /* shouldn't be called */ - throw new RuntimeException("Field is static"); - } return 900; } public Type getLValueOperandType(int i) { - if (staticFlag) { - /* shouldn't be called */ - throw new AssertError("Field is static"); - } - return Type.tClass(field.getCpoolClass() - .getName().getString()); + return classType; } public void setLValueOperandType(Type[] t) { - if (staticFlag) { - /* shouldn't be called */ - throw new AssertError("Field is static"); - } - return; } public String getLValueString(String[] operands) { - String object; - if (staticFlag) { - if (field.getCpoolClass().getName().getString() - .replace(java.io.File.separatorChar, '.') - .equals(codeAnalyzer.getClazz().getName())) - return field.getNameAndType().getName().getString(); - object = codeAnalyzer.getTypeString - (Type.tClass(field.getCpoolClass().getName().getString())); - } else { - if (operands[0].equals("this")) - return field.getNameAndType().getName().getString(); - object = operands[0]; - } - return object + "." + field.getNameAndType().getName().getString(); + String fieldName = field.getNameAndType().getName().getString(); + return staticFlag + ? (classType.equals(Type.tType(codeAnalyzer.getClazz())) + ? fieldName + : classType.toString() + "." + fieldName) + : (operands[0].equals("this") + ? fieldName + : operands[0] + "." + fieldName); } public boolean equals(Object o) {