コード例 #1
0
        private ulong GetDependOrder(CompileUnit unit, HashSet <string> stackUnitNames = null)
        {
            ulong depOrder = unit.DependOrder;

            if (depOrder != 0)
            {
                return(depOrder);
            }

            string unitName = unit.Name;

            if (stackUnitNames != null && stackUnitNames.Contains(unitName))
            {
                return(0);
            }
            if (stackUnitNames == null)
            {
                stackUnitNames = new HashSet <string>();
            }
            stackUnitNames.Add(unitName);

            unit.Optimize(UnitMap);
            foreach (string dep in unit.DeclDepends)
            {
                var depUnit = GetUnitFromMap(dep);
                if (depUnit != null)
                {
                    depOrder += GetDependOrder(depUnit, stackUnitNames);
                }
            }

            ++depOrder;
            unit.DependOrder = depOrder;
            return(depOrder);
        }
コード例 #2
0
ファイル: GeneratorContext.cs プロジェクト: jkloop45/il2cpp
        private uint GetDependOrder(CompileUnit unit)
        {
            uint depOrder = unit.DependOrder;

            if (depOrder != 0)
            {
                return(depOrder);
            }

            unit.Optimize(UnitMap);

            foreach (string dep in unit.DeclDepends)
            {
                depOrder += GetDependOrder(UnitMap[dep]);
            }

            ++depOrder;
            unit.DependOrder = depOrder;
            return(depOrder);
        }