Ejemplo n.º 1
0
        // Get the least elements representing the bottom for the lattice of m
        //public static Reentrancy BottomFor(Method m)
        //{
        //    return new Reentrancy(m);
        //}
        #endregion

        protected override void BeforeBindCallWithCallee(PointsToState callerPTS, PointsToState calleePTS, Variable receiver, ExpressionList arguments, Variable vr, Label lb, InterProcMapping ipm)
        {
            base.BeforeBindCallWithCallee(callerPTS, calleePTS, receiver, arguments, vr, lb, ipm);
            Reentrancy reentrancyCalleeState = (Reentrancy)calleePTS;
            Receivers  potentialReceivers    = Receivers.Empty;

            // ** FOR REENTRANCY ANALYSIS
            if (receiver != null)
            {
                Nodes values = pointsToGraph.GetValuesIfEmptyLoadNode(receiver, lb);
                potentialReceivers.AddNodes(values);
            }
            bool isReentrant = false;

            // Check Exposure por every parameters
            if (!IsMethodToIgnoreForReentrancy(reentrancyCalleeState.Method))
            {
                //isReentrant = ReentrancyAnalysisForAnalyzableCalls(reentrancyCalleeState.Method, reentrancyCalleeState, lb,
                //    potentialReceivers, ipm);
                isReentrant = false;
                CheckExposureForCall(calleePTS, receiver, arguments, lb, isReentrant);
            }
        }