public MethodCallValue withNewArgs(List<TypedValue> newArgs) { return new MethodCallValue(owner, name, desc, newArgs, type); }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((base == null) ? 0 : base.hashCode()); return result; }
public String toString() { return base.toString() + "." + super.toString(); } @Override public <I,O,E extends Exception> O visit(TypedValueVisitor<I,O,E> visitor, I input) throws E
@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
MethodSignature sig = methodCall.getSignature(); if (sig.equals(TransformationClassAnalyzer.newBigDecimalLong) || sig.equals(TransformationClassAnalyzer.newBigDecimalInt) MethodSignature sig = methodCall.getSignature(); if (sig.equals(TransformationClassAnalyzer.bigIntegerValueOfLong))
@Override public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; VirtualMethodCallValue other = (VirtualMethodCallValue) obj; if (base == null) { if (other.base != null) return false; } else if (!base.equals(other.base)) return false; return true; } }
@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; } }
MethodSignature sig = methodCall.getSignature(); if (sig.equals(TransformationClassAnalyzer.bigIntegerValueOfLong))