/** * Checks if all parameters and return value of a method have primitive types. * * @param mtd Method. * @return boolean True if all parameters and return value are of primitive type, otherwise false. */ private static boolean isAllPrimitiveTypes(IMethod mtd) { if (!mtd.getReturnType().isPrimitiveType()) return false; for (int i = (mtd.isStatic() ? 0 : 1); i < mtd.getNumberOfParameters(); i++) { if (!mtd.getParameterType(i).isPrimitiveType()) return false; } return true; }
/** * Get astubx style method signature. {FullyQualifiedEnclosingType}: {UnqualifiedMethodReturnType} * {methodName} ([{UnqualifiedArgumentType}*]) * * @param mtd Method reference. * @return String Method signature. */ // TODO: handle generics and inner classes private static String getSignature(IMethod mtd) { String classType = mtd.getDeclaringClass().getName().toString().replaceAll("/", "\\.").substring(1); classType = classType.replaceAll("\\$", "\\."); // handle inner class String returnType = mtd.isInit() ? null : getSimpleTypeName(mtd.getReturnType()); String strArgTypes = ""; int argi = mtd.isStatic() ? 0 : 1; // Skip 'this' parameter for (; argi < mtd.getNumberOfParameters(); argi++) { strArgTypes += getSimpleTypeName(mtd.getParameterType(argi)); if (argi < mtd.getNumberOfParameters() - 1) strArgTypes += ", "; } return classType + ":" + (returnType == null ? "void " : returnType + " ") + mtd.getName().toString() + "(" + strArgTypes + ")"; } /**
String sign = ""; if (mtd.getNumberOfParameters() > (mtd.isStatic() ? 0 : 1)) {
/** * @return number of parameters to this method, including "this" */ public int getNumberOfParameters() { return method.getNumberOfParameters(); }
@Override public int getNumberOfParameters() { return method.getNumberOfParameters(); }
@Override public int getNumberOfParameters() { return method.getNumberOfParameters(); }
/** * @return number of parameters to this method, including "this" */ public int getNumberOfParameters() { return method.getNumberOfParameters(); }
protected TypeReference[][] makeParameterTypes(IMethod method) { TypeReference[][] result = new TypeReference[method.getNumberOfParameters()][]; for (int i = 0; i < result.length; i++) { result[i] = makeParameterTypes(method, i); } return result; }
@Override protected TypeReference[][] makeParameterTypes(IMethod method) { TypeReference[][] result = new TypeReference[method.getNumberOfParameters()][]; for (int i = 0; i < result.length; i++) { result[i] = makeParameterTypes(method, i); } return result; }
@Override protected TypeReference[][] makeParameterTypes(IMethod method) { TypeReference[][] result = new TypeReference[method.getNumberOfParameters()][]; for (int i = 0; i < result.length; i++) { result[i] = makeParameterTypes(method, i); } return result; }
public final boolean isParameter() { return valueNumber <= node.getMethod().getNumberOfParameters(); } }
protected TypeReference[][] makeParameterTypes(IMethod method) { TypeReference[][] result = new TypeReference[method.getNumberOfParameters()][]; for (int i = 0; i < result.length; i++) { result[i] = makeParameterTypes(method, i); } return result; }
/** * Get the ssa-number for a parameter to an IMethod. * * @see com.ibm.wala.util.ssa.ParameterAccessor */ private static int ssaFor(IMethod inCallTo, int paramNo) { assert (paramNo >= 0); assert (paramNo < inCallTo.getNumberOfParameters()); if (inCallTo.isStatic()) { return paramNo + 1; } else { return paramNo + 1; // TODO 2 or 1? } }
/** * Get the ssa-number for a parameter to an IMethod. * * @see com.ibm.wala.util.ssa.ParameterAccessor */ private static int ssaFor(IMethod inCallTo, int paramNo) { assert (paramNo >= 0); assert (paramNo < inCallTo.getNumberOfParameters()); if (inCallTo.isStatic()) { return paramNo + 1; } else { return paramNo + 1; // TODO 2 or 1? } }
public final boolean isParameter() { return valueNumber <= node.getMethod().getNumberOfParameters(); } }
/** * Get the first paramNo of a given type. * * @see com.ibm.wala.util.ssa.ParameterAccessor */ private static int firstOf(TypeName type, IMethod inCallTo) { for (int i = 0; i < inCallTo.getNumberOfParameters(); ++i) { if (inCallTo.getParameterType(i).getName().equals(type)) { return i; } } throw new IllegalArgumentException(type.toString() + " is not a parameter to " + inCallTo); }
/** * Get the first paramNo of a given type. * * @see com.ibm.wala.util.ssa.ParameterAccessor */ private static int firstOf(TypeName type, IMethod inCallTo) { for (int i = 0; i < inCallTo.getNumberOfParameters(); ++i) { if (inCallTo.getParameterType(i).getName().equals(type)) { return i; } } throw new IllegalArgumentException(type.toString() + " is not a parameter to " + inCallTo); }
private boolean returnsThis(IMethod method) { MethodReference mref = method.getReference(); if(method.getNumberOfParameters() < 1) return false; Boolean b = returnsThis_cache.get(mref); if(b != null) return b; for(SSAInstruction inst : factory.makeIR(method, Everywhere.EVERYWHERE, SSAOptions.defaultOptions()).getInstructions()) { if(inst instanceof SSAReturnInstruction) { SSAReturnInstruction ret = (SSAReturnInstruction)inst; if(ret.getResult() == 2) { returnsThis_cache.put(mref, true); return true; } } } returnsThis_cache.put(mref, false); return false; }
private boolean returnsThis(IMethod method) { MethodReference mref = method.getReference(); if(method.getNumberOfParameters() < 1) return false; Boolean b = returnsThis_cache.get(mref); if(b != null) return b; for(SSAInstruction inst : factory.makeIR(method, Everywhere.EVERYWHERE, SSAOptions.defaultOptions()).getInstructions()) { if(inst instanceof SSAReturnInstruction) { SSAReturnInstruction ret = (SSAReturnInstruction)inst; if(ret.getResult() == 2) { returnsThis_cache.put(mref, true); return true; } } } returnsThis_cache.put(mref, false); return false; }
private void processCallBackParams() { for (MethodParams mp:callBacks) { int params[] = new int[mp.getIMethod().getNumberOfParameters()]; int startPos; if (mp.getIMethod().isStatic()) { startPos = 0; } else { params[0] = typeToID.get(mp.getIMethod().getDeclaringClass().getReference()); startPos = 1; } for (int i = startPos; i < params.length; i++) { params[i] = makeArgument(mp.getIMethod().getParameterType(i)); } mp.setParams(params); } }