|
|
@ -181,7 +181,7 @@ public final class InvokeOperator extends Operator |
|
|
|
CodeAnalyzer ca = clazz.getMethod(methodName, methodType).getCode(); |
|
|
|
CodeAnalyzer ca = clazz.getMethod(methodName, methodType).getCode(); |
|
|
|
if (ca == null) |
|
|
|
if (ca == null) |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
CodeInfo info = ca.getCodeInfo(); |
|
|
|
BytecodeInfo info = ca.getBytecodeInfo(); |
|
|
|
Value[] locals = new Value[info.getMaxLocals()]; |
|
|
|
Value[] locals = new Value[info.getMaxLocals()]; |
|
|
|
for (int i=0; i< locals.length; i++) |
|
|
|
for (int i=0; i< locals.length; i++) |
|
|
|
locals[i] = new Value(); |
|
|
|
locals[i] = new Value(); |
|
|
@ -192,7 +192,7 @@ public final class InvokeOperator extends Operator |
|
|
|
String result; |
|
|
|
String result; |
|
|
|
try { |
|
|
|
try { |
|
|
|
result = (String) Interpreter.interpretMethod |
|
|
|
result = (String) Interpreter.interpretMethod |
|
|
|
(clazz, info.getCode(), locals, stack); |
|
|
|
(clazz, info, locals, stack); |
|
|
|
} catch (InterpreterException ex) { |
|
|
|
} catch (InterpreterException ex) { |
|
|
|
Decompiler.err.println("Warning: Can't interpret method " |
|
|
|
Decompiler.err.println("Warning: Can't interpret method " |
|
|
|
+methodName); |
|
|
|
+methodName); |
|
|
@ -202,7 +202,7 @@ public final class InvokeOperator extends Operator |
|
|
|
ex.printStackTrace(Decompiler.err); |
|
|
|
ex.printStackTrace(Decompiler.err); |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
return new ConstOperator(Type.tString, result); |
|
|
|
return new ConstOperator(result); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Invokes never equals: they may return different values even if |
|
|
|
/* Invokes never equals: they may return different values even if |
|
|
|