GCRootLowering

这个代码实现的是 LLVM 中的垃圾回收 (GC) 支持的一部分,主要围绕 gc.root 机制的 lowering(降层转换)元数据分析,它分为两个核心 Pass。
涉及的概念有:

  • GC Root程序运行中存活对象的可达起点(如局部变量、参数、静态字段)。
Intrinsic 含义
llvm.gcroot 声明某个 alloca 是 GC 根(root)
llvm.gcread 从 GC 管理对象中读取字段
llvm.gcwrite 向 GC 管理对象中写入字段
GCMachineCodeAnalysis

✅ 功能:

  • 分析目标指令级别的函数,插入 safe point(用于 GC 暂停和扫描的安全位置);
  • 确定所有 GC roots 的 栈上偏移量(stack offset),供后续生成精确 GC map;
  • 设置整个函数的 frame size 元信息。

在 LLVM 的 GC 策略(GCStrategy)中,有些语言或运行时系统(如 Java、.NET)依赖于精确 GC 信息,这些 Pass 就是将抽象 IR 里的 GC 概念变为后端可处理的数据结构和插桩。