@Override public TypedValue methodCallValue(MethodCallValue val, I in) throws E { if (remap.containsKey(val)) return remap.get(val); I param = val.visit(parameter, in); MethodCallValue newVal = val; List<TypedValue> newArgs = new Vector<TypedValue>(val.args.size()); boolean isChanged = false; for (TypedValue arg: val.args) { TypedValue newArg = arg.visit(rewriter, param); if (newArg != arg) isChanged = true; newArgs.add(newArg); } if (isChanged) newVal = val.withNewArgs(newArgs); TypedValue returnVal = newVal.visit(rewriter, in); remap.put(val, returnVal); return returnVal; } @Override public TypedValue staticMethodCallValue(MethodCallValue.StaticMethodCallValue val, I in) throws E
@Override public TypedValue staticMethodCallValue(MethodCallValue.StaticMethodCallValue val, I in) throws E { if (remap.containsKey(val)) return remap.get(val); I param = val.visit(parameter, in); MethodCallValue newVal = val; List<TypedValue> newArgs = new Vector<TypedValue>(val.args.size()); boolean isChanged = false; for (TypedValue arg: val.args) { TypedValue newArg = arg.visit(this, param); newArg = newArg.visit(rewriter, param); if (newArg != arg) isChanged = true; newArgs.add(newArg); } if (isChanged) newVal = val.withNewArgs(newArgs); TypedValue returnVal = newVal.visit(rewriter, in); remap.put(val, returnVal); return returnVal; } @Override public TypedValue virtualMethodCallValue(MethodCallValue.VirtualMethodCallValue val, I in) throws E
@Override public TypedValue virtualMethodCallValue(MethodCallValue.VirtualMethodCallValue val, I in) throws E { if (remap.containsKey(val)) return remap.get(val); I param = val.visit(parameter, in); MethodCallValue newVal = val; List<TypedValue> newArgs = new Vector<TypedValue>(val.args.size()); boolean isChanged = false; for (TypedValue arg: val.args) { TypedValue newArg = arg.visit(this, param); newArg = newArg.visit(rewriter, param); if (newArg != arg) isChanged = true; newArgs.add(newArg); } TypedValue newBase = val.base.visit(this, param); newBase = newBase.visit(rewriter, param); if (isChanged || val.base != newBase) newVal = val.withNewArgs(newArgs, newBase); TypedValue returnVal = newVal.visit(rewriter, in); remap.put(val, returnVal); return returnVal; } }