Example #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(YaleIlGenerator ilg, Label target)
        {
            var startLoc   = new ILLocation(ilg.Length);
            var branchInfo = new BranchInfo(startLoc, target);

            branchInfos.Add(branchInfo);
        }
Example #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 (var branchInfo in branchInfos)
     {
         if (branchInfo.IsBetween(target))
         {
             dest.Add(branchInfo);
         }
     }
 }
Example #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(YaleIlGenerator ilg, Label target)
        {
            var startLoc   = new ILLocation(ilg.Length);
            var branchInfo = new BranchInfo(startLoc, target);

            var index = branchInfos.IndexOf(branchInfo);

            branchInfo = branchInfos[index];

            return(branchInfo.IsLongBranch);
        }