专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
目录
今天看啥  ›  专栏  ›  dotNET跨平台

AOT漫谈专题(第七篇): 聊一聊给C#打造的节点依赖图

dotNET跨平台  · 公众号  ·  · 2024-10-25 08:00
    

文章预览

一:背景 1. 讲故事 上一篇我们聊过 AOT编程 中可能会遇到的三大件问题,而这三大件问题又是考验你对AOT中 节点图 的理解,它是一切的原点,接下来我就画几张图以个人的角度来解读下吧,不一定对。 二:理解节点依赖图 1. 对节点的理解 按照官方的说法,构建依赖节点和GC的标记算法一样,都是采用深度优先,每一个节点都是一种类型,比如: MethodCodeNode   表示方法节点 EETypeNode       表示 MethodTable 类型节点 同时节点的层级关系比较深,比如这样的链路, MethodCodeNode -> ObjectNode -> SortableDependencyNode -> DependencyNodeCore -> DependencyNode -> IDependencyNode 。 对了,最核心的节点依赖图算法来自于方法 DependencyAnalyzer.ComputeMarkedNodes() , 简化后如下:      public   override   void   ComputeMarkedNodes ( )     {          do         {              // R ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览