Esempio n. 1
0
        /// <summary>
        /// Add a branch from a location to a target label
        /// </summary>
        /// <param name="ilg"></param>
        /// <param name="target"></param>
        /// <remarks></remarks>
        public void AddBranch(FleeILGenerator ilg, Label target)
        {
            ILLocation startLoc = new ILLocation(ilg.Length);

            BranchInfo bi = new BranchInfo(startLoc, target);

            MyBranchInfos.Add(bi);
        }
Esempio n. 2
0
 /// <summary>
 /// Find all the branches between the start and end locations of a target branch
 /// </summary>
 /// <param name="target"></param>
 /// <param name="dest"></param>
 /// <remarks></remarks>
 private void FindBetweenBranches(BranchInfo target, ICollection <BranchInfo> dest)
 {
     foreach (BranchInfo bi in MyBranchInfos)
     {
         if (bi.IsBetween(target) == true)
         {
             dest.Add(bi);
         }
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Determine if a branch from a point to a label will be long
        /// </summary>
        /// <param name="ilg"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        public bool IsLongBranch(FleeILGenerator ilg, Label target)
        {
            //return true;
            ILLocation startLoc = new ILLocation(ilg.Length);
            BranchInfo bi       = new BranchInfo(startLoc, target);

            int index = MyBranchInfos.IndexOf(bi);

            if (index > -1 && index < MyBranchInfos.Count)
            {
                bi = MyBranchInfos[index];
            }

            return(bi.IsLongBranch);
        }