@Override public void visitInvokeInst(Quad q) { ParamListOperand argList = Invoke.getParamList(q); RegisterOperand vo = Invoke.getDest(q); int args = argList.length(); // was args > 1 if (vo != null && args > 0) { Register v = vo.getRegister(); jq_Method meth = Invoke.getMethod(q).getMethod(); jq_Class cl = meth.getDeclaringClass(); if (v.getType().isReferenceType()) { // String mname = meth.getName().toString(); // System.out.println("INewColl inspecting call to " + mname); if (isCollectionType(cl) && !meth.isStatic()) { jq_Type destType = meth.getReturnType(); // System.out.println("INewColl saw call to " + meth + " returning " + destType); if (isCollectionType(destType)) { Register thisObj = Invoke.getParam(q, 0).getRegister(); int iID = domI.indexOf(q); int vID = domV.indexOf(v); int thisID = domV.indexOf(thisObj); super.add(iID, vID, thisID); } } } } }
@Override public void visitInvokeInst(Quad q) { int optPos = ConfDefines.confOptionWritePos(q); if (optPos >= 0) { int i_id = domI.indexOf(q); // int o_id = domUV.indexOf(vo.getRegister()); ParamListOperand plo = Invoke.getParamList(q); if (plo.length() > optPos) { RegisterOperand arg = Invoke.getParam(q, optPos); int parm_id = domV.indexOf(arg.getRegister()); if (i_id > -1 && parm_id > -1) add(i_id, 0, parm_id); } else { System.err.println( "trouble on " + method.getName() + q.getLineNumber() + " expected at least " + optPos + " params"); } } }