From a58ace28de7e610aee53aa145d4ebcd463cd3314 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 13 Apr 1999 10:48:27 +0000 Subject: [PATCH] getIdentifier(ref) git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@584 379699f6-c40d-0410-875b-85095c16579e --- .../ConstantRuntimeEnvironment.java | 180 +++++++++--------- 1 file changed, 86 insertions(+), 94 deletions(-) diff --git a/jode/jode/obfuscator/ConstantRuntimeEnvironment.java b/jode/jode/obfuscator/ConstantRuntimeEnvironment.java index c3f34fb..d9d7a4f 100644 --- a/jode/jode/obfuscator/ConstantRuntimeEnvironment.java +++ b/jode/jode/obfuscator/ConstantRuntimeEnvironment.java @@ -56,96 +56,96 @@ public class ConstantRuntimeEnvironment extends SimpleRuntimeEnvironment { ///#endif static { - addWhite(new Reference("java.lang.String", "toCharArray", "()[C")); - addWhite(new Reference("java.lang.StringBuffer", "", + addWhite(new Reference("Ljava/lang/String;", "toCharArray", "()[C")); + addWhite(new Reference("Ljava/lang/StringBuffer;", "", "(Ljava/lang/String;)V")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(C)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(B)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(S)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(Z)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(F)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(I)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(J)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "append", + addWhite(new Reference("Ljava/lang/StringBuffer;", "append", "(D)Ljava/lang/StringBuffer;")); - addWhite(new Reference("java.lang.StringBuffer", "toString", + addWhite(new Reference("Ljava/lang/StringBuffer;", "toString", "()Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "", "()V")); - addWhite(new Reference("java.lang.String", "", "([C)V")); - addWhite(new Reference("java.lang.String", "", "([CII)V")); - addWhite(new Reference("java.lang.String", "", + addWhite(new Reference("Ljava/lang/String;", "", "()V")); + addWhite(new Reference("Ljava/lang/String;", "", "([C)V")); + addWhite(new Reference("Ljava/lang/String;", "", "([CII)V")); + addWhite(new Reference("Ljava/lang/String;", "", "(Ljava/lang/String;)V")); - addWhite(new Reference("java.lang.String", "", + addWhite(new Reference("Ljava/lang/String;", "", "(Ljava/lang/StringBuffer;)V")); - addWhite(new Reference("java.lang.String", "length", "()I")); - addWhite(new Reference("java.lang.String", "replace", + addWhite(new Reference("Ljava/lang/String;", "length", "()I")); + addWhite(new Reference("Ljava/lang/String;", "replace", "(CC)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(Z)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(B)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(S)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(C)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(D)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(F)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(I)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(J)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "valueOf", + addWhite(new Reference("Ljava/lang/String;", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "substring", + addWhite(new Reference("Ljava/lang/String;", "substring", "(I)Ljava/lang/String;")); - addWhite(new Reference("java.lang.String", "substring", + addWhite(new Reference("Ljava/lang/String;", "substring", "(II)Ljava/lang/String;")); - addWhite(new Reference("java.lang.reflect.Modifier", "toString", + addWhite(new Reference("Ljava.lang/reflect/Modifier;", "toString", "(I)Ljava/lang/String;")); - addWhite(new Reference("java.lang.Math", "abs", "(D)D")); - addWhite(new Reference("java.lang.Math", "abs", "(F)F")); - addWhite(new Reference("java.lang.Math", "abs", "(I)I")); - addWhite(new Reference("java.lang.Math", "abs", "(J)J")); - addWhite(new Reference("java.lang.Math", "acos", "(D)D")); - addWhite(new Reference("java.lang.Math", "asin", "(D)D")); - addWhite(new Reference("java.lang.Math", "atan", "(D)D")); - addWhite(new Reference("java.lang.Math", "atan2", "(D)D")); - addWhite(new Reference("java.lang.Math", "ceil", "(D)D")); - addWhite(new Reference("java.lang.Math", "cos", "(D)D")); - addWhite(new Reference("java.lang.Math", "exp", "(D)D")); - addWhite(new Reference("java.lang.Math", "floor", "(D)D")); - addWhite(new Reference("java.lang.Math", "IEEEremainder", "(DD)D")); - addWhite(new Reference("java.lang.Math", "log", "(D)D")); - addWhite(new Reference("java.lang.Math", "max", "(DD)D")); - addWhite(new Reference("java.lang.Math", "max", "(FF)F")); - addWhite(new Reference("java.lang.Math", "max", "(II)I")); - addWhite(new Reference("java.lang.Math", "max", "(JJ)J")); - addWhite(new Reference("java.lang.Math", "min", "(DD)D")); - addWhite(new Reference("java.lang.Math", "min", "(FF)F")); - addWhite(new Reference("java.lang.Math", "min", "(II)I")); - addWhite(new Reference("java.lang.Math", "min", "(JJ)J")); - addWhite(new Reference("java.lang.Math", "pow", "(DD)D")); - addWhite(new Reference("java.lang.Math", "rint", "(D)D")); - addWhite(new Reference("java.lang.Math", "round", "(D)J")); - addWhite(new Reference("java.lang.Math", "round", "(F)I")); - addWhite(new Reference("java.lang.Math", "sin", "(D)D")); - addWhite(new Reference("java.lang.Math", "sqrt", "(D)D")); - addWhite(new Reference("java.lang.Math", "tan", "(D)D")); - addWhite(new Reference("java.lang.Math", "toDegrees", "(D)D")); - addWhite(new Reference("java.lang.Math", "toRadians", "(D)D")); - addWhite(new Reference("java.lang.Math", "E", "D")); - addWhite(new Reference("java.lang.Math", "PI", "D")); + addWhite(new Reference("Ljava/lang/Math;", "abs", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "abs", "(F)F")); + addWhite(new Reference("Ljava/lang/Math;", "abs", "(I)I")); + addWhite(new Reference("Ljava/lang/Math;", "abs", "(J)J")); + addWhite(new Reference("Ljava/lang/Math;", "acos", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "asin", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "atan", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "atan2", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "ceil", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "cos", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "exp", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "floor", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "IEEEremainder", "(DD)D")); + addWhite(new Reference("Ljava/lang/Math;", "log", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "max", "(DD)D")); + addWhite(new Reference("Ljava/lang/Math;", "max", "(FF)F")); + addWhite(new Reference("Ljava/lang/Math;", "max", "(II)I")); + addWhite(new Reference("Ljava/lang/Math;", "max", "(JJ)J")); + addWhite(new Reference("Ljava/lang/Math;", "min", "(DD)D")); + addWhite(new Reference("Ljava/lang/Math;", "min", "(FF)F")); + addWhite(new Reference("Ljava/lang/Math;", "min", "(II)I")); + addWhite(new Reference("Ljava/lang/Math;", "min", "(JJ)J")); + addWhite(new Reference("Ljava/lang/Math;", "pow", "(DD)D")); + addWhite(new Reference("Ljava/lang/Math;", "rint", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "round", "(D)J")); + addWhite(new Reference("Ljava/lang/Math;", "round", "(F)I")); + addWhite(new Reference("Ljava/lang/Math;", "sin", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "sqrt", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "tan", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "toDegrees", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "toRadians", "(D)D")); + addWhite(new Reference("Ljava/lang/Math;", "E", "D")); + addWhite(new Reference("Ljava/lang/Math;", "PI", "D")); } MethodIdentifier m; @@ -158,17 +158,13 @@ public class ConstantRuntimeEnvironment extends SimpleRuntimeEnvironment { if (isWhite(ref)) return super.getField(ref, obj); Type type = Type.tType(ref.getType()); - ClassIdentifier ci = (ClassIdentifier) - m.clazz.bundle.getIdentifier(ref.getClazz()); - if (ci != null) { - FieldIdentifier fi = (FieldIdentifier) - ci.getIdentifier(ref.getName(), ref.getType()); - if (fi != null && !fi.isNotConstant()) { - Object result = fi.getConstant(); - if (result == null) - result = type.getDefaultValue(); + FieldIdentifier fi = (FieldIdentifier) + m.clazz.bundle.getIdentifier(ref); + if (fi != null && !fi.isNotConstant()) { + Object result = fi.getConstant(); + if (result == null) + result = type.getDefaultValue(); return result; - } } throw new InterpreterException("Field " + ref + " not constant"); } @@ -191,27 +187,23 @@ public class ConstantRuntimeEnvironment extends SimpleRuntimeEnvironment { if (isWhite(ref)) return super.invokeMethod(ref, isVirtual, cls, params); Type type = Type.tType(ref.getType()); - ClassIdentifier ci = (ClassIdentifier) - m.clazz.bundle.getIdentifier(ref.getClazz()); - if (ci != null) { - MethodIdentifier mi = (MethodIdentifier) - ci.getIdentifier(ref.getName(), ref.getType()); - if (mi != null) { - BytecodeInfo code = mi.getBytecode(); - if (code != null) { - MethodType mt = (MethodType) Type.tType(ref.getType()); - Value[] locals = new Value[code.getMaxLocals()]; - for (int i=0; i< locals.length; i++) - locals[i] = new Value(); - int slot = 0; - if (cls != null) - locals[slot++].setObject(cls); - for (int i = 0; i < params.length; i++) { - locals[slot].setObject(params[i]); - slot += mt.getParameterTypes()[i].stackSize(); - } - return Interpreter.interpretMethod(this, code, locals); + MethodIdentifier mi = (MethodIdentifier) + m.clazz.bundle.getIdentifier(ref); + if (mi != null) { + BytecodeInfo code = mi.getBytecode(); + if (code != null) { + MethodType mt = (MethodType) Type.tType(ref.getType()); + Value[] locals = new Value[code.getMaxLocals()]; + for (int i=0; i< locals.length; i++) + locals[i] = new Value(); + int slot = 0; + if (cls != null) + locals[slot++].setObject(cls); + for (int i = 0; i < params.length; i++) { + locals[slot].setObject(params[i]); + slot += mt.getParameterTypes()[i].stackSize(); } + return Interpreter.interpretMethod(this, code, locals); } } throw new InterpreterException("Invoking library method " + ref + ".");