/// <summary> /// Compute the interProc mapping between callee and caller. /// This is a fixpoint of steps 1,2 and 3 /// </summary> /// <param name="caller"></param> /// <param name="callee"></param> /// <param name="thisRef"></param> /// <param name="arguments"></param> /// <returns></returns> private static InterProcMapping ComputeInterMapping(PTGraph callerPTG, PTGraph calleePTG, Variable thisRef, ExpressionList arguments, Variable vr) { /* // Be sure that every parameter has its value or load node foreach (Parameter p in callerPTG.ParameterMap.Keys) { callerPTG.GetValuesIfEmptyLoadNode(p, callerPTG.MethodLabel); } */ InterProcMapping ipm = new InterProcMapping(callerPTG, calleePTG, thisRef, arguments); ipm.RelateParams(); InterProcMapping oldImp = new InterProcMapping(ipm); do { oldImp = new InterProcMapping(ipm); ipm.MatchOutsideEdges(); ipm.MatchOutsideWithInsideInCallee(); } while (change(oldImp, ipm)); return ipm; }