예제 #1
0
        public virtual void AttachToDependencyGraph(DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
        {
            ReadyToRunHeader = new ReadyToRunHeaderNode(Target);

            graph.AddRoot(ReadyToRunHeader, "ReadyToRunHeader is always generated");
            graph.AddRoot(new ModulesSectionNode(Target), "ModulesSection is always generated");

            graph.AddRoot(GCStaticsRegion, "GC StaticsRegion is always generated");
            graph.AddRoot(ThreadStaticsRegion, "ThreadStaticsRegion is always generated");
            graph.AddRoot(EagerCctorTable, "EagerCctorTable is always generated");
            graph.AddRoot(ModuleManagerIndirection, "ModuleManagerIndirection is always generated");
            graph.AddRoot(DispatchMapTable, "DispatchMapTable is always generated");
            graph.AddRoot(FrozenSegmentRegion, "FrozenSegmentRegion is always generated");

            ReadyToRunHeader.Add(ReadyToRunSectionType.GCStaticRegion, GCStaticsRegion, GCStaticsRegion.StartSymbol, GCStaticsRegion.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.ThreadStaticRegion, ThreadStaticsRegion, ThreadStaticsRegion.StartSymbol, ThreadStaticsRegion.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.EagerCctor, EagerCctorTable, EagerCctorTable.StartSymbol, EagerCctorTable.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.ModuleManagerIndirection, ModuleManagerIndirection, ModuleManagerIndirection);
            ReadyToRunHeader.Add(ReadyToRunSectionType.InterfaceDispatchTable, DispatchMapTable, DispatchMapTable.StartSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.FrozenObjectRegion, FrozenSegmentRegion, FrozenSegmentRegion.StartSymbol, FrozenSegmentRegion.EndSymbol);

            MetadataManager.AddToReadyToRunHeader(ReadyToRunHeader);
            MetadataManager.AttachToDependencyGraph(graph);

            _compilationModuleGroup.AddCompilationRoots(new RootingServiceProvider(graph, this));
        }
예제 #2
0
 public void AttachToDependencyGraph(DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
 {
     graph.AddRoot(GCStaticsRegion, "GC StaticsRegion is always generated");
     graph.AddRoot(ThreadStaticsRegion, "ThreadStaticsRegion is always generated");
     graph.AddRoot(StringTable, "StringTable is always generated");
     graph.AddRoot(DispatchMapTable, "DispatchMapTable is always generated");
 }
예제 #3
0
        private void AddWellKnownType(WellKnownType wellKnownType, DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
        {
            var type     = TypeSystemContext.GetWellKnownType(wellKnownType);
            var typeNode = ConstructedTypeSymbol(type);

            graph.AddRoot(typeNode, "Enables CPP codegen");
        }
예제 #4
0
 private void AddWellKnownTypes(DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
 {
     AddWellKnownType(WellKnownType.Void, graph);
     AddWellKnownType(WellKnownType.Boolean, graph);
     AddWellKnownType(WellKnownType.Char, graph);
     AddWellKnownType(WellKnownType.SByte, graph);
     AddWellKnownType(WellKnownType.Byte, graph);
     AddWellKnownType(WellKnownType.Int16, graph);
     AddWellKnownType(WellKnownType.UInt16, graph);
     AddWellKnownType(WellKnownType.Int32, graph);
     AddWellKnownType(WellKnownType.UInt32, graph);
     AddWellKnownType(WellKnownType.Int64, graph);
     AddWellKnownType(WellKnownType.UInt64, graph);
     AddWellKnownType(WellKnownType.IntPtr, graph);
     AddWellKnownType(WellKnownType.UIntPtr, graph);
     AddWellKnownType(WellKnownType.Single, graph);
     AddWellKnownType(WellKnownType.Double, graph);
 }
예제 #5
0
        public void AttachToDependencyGraph(DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
        {
            ReadyToRunHeader = new ReadyToRunHeaderNode(Target);

            graph.AddRoot(ReadyToRunHeader, "ReadyToRunHeader is always generated");
            graph.AddRoot(new ModulesSectionNode(Target), "ModulesSection is always generated");

            graph.AddRoot(GCStaticsRegion, "GC StaticsRegion is always generated");
            graph.AddRoot(ThreadStaticsRegion, "ThreadStaticsRegion is always generated");
            graph.AddRoot(StringTable, "StringTable is always generated");
            graph.AddRoot(EagerCctorTable, "EagerCctorTable is always generated");
            graph.AddRoot(ModuleManagerIndirection, "ModuleManagerIndirection is always generated");
            graph.AddRoot(DispatchMapTable, "DispatchMapTable is always generated");

            ReadyToRunHeader.Add(ReadyToRunSectionType.GCStaticRegion, GCStaticsRegion, GCStaticsRegion.StartSymbol, GCStaticsRegion.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.ThreadStaticRegion, ThreadStaticsRegion, ThreadStaticsRegion.StartSymbol, ThreadStaticsRegion.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.StringTable, StringTable, StringTable.StartSymbol, StringTable.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.EagerCctor, EagerCctorTable, EagerCctorTable.StartSymbol, EagerCctorTable.EndSymbol);
            ReadyToRunHeader.Add(ReadyToRunSectionType.ModuleManagerIndirection, ModuleManagerIndirection, ModuleManagerIndirection);
            ReadyToRunHeader.Add(ReadyToRunSectionType.InterfaceDispatchTable, DispatchMapTable, DispatchMapTable.StartSymbol);

            MetadataManager.AddToReadyToRunHeader(ReadyToRunHeader);
            MetadataManager.AttachToDependencyGraph(graph);
        }
예제 #6
0
 public override void AttachToDependencyGraph(DependencyAnalysisFramework.DependencyAnalyzerBase <NodeFactory> graph)
 {
     AddWellKnownTypes(graph);
     base.AttachToDependencyGraph(graph);
 }