SuperAPI AI 工具集

add-new-jit-ee-api

编程与开发

查看项目

更新于 10-16 08:36

技能介绍

用途:在 dotnet/runtime 代码库中为 JIT-VM(又称 JIT-EE)接口新增一个 API 及其配套胶水代码。JIT-VM 接口定义 JIT 编译器与运行时(VM)通信所用的 API。

主要能力与流程:若用户未提供新 API 的类 C 签名,需先向用户索取,可参考 <repo_root>/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt。实现步骤须按顺序完成:在 ThunkInput.txt 中新增 API 定义(不删除已有条目);运行 <repo_root>/src/coreclr/tools/Common/JitInterface/ThunkGenerator/gen.sh(Windows 用 gen.bat)更新自动生成文件;在 <repo_root>/src/coreclr/inc/corinfo.h 的 ICorStaticInfo 类中新增虚函数;在 <repo_root>/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs 的 CorInfoImpl 类末尾新增方法,可参考 CorInfoImpl_generated.cs 查看 C# 类型参数;在 <repo_root>/src/coreclr/vm/jitinterface.cpp 末尾新增占位实现。

SuperPMI 部分:SuperPMI 作为 JIT-VM 查询的(反)序列化器,用于在无真实 VM 的情况下重放以加速 jit-diffs。需依次更新 superpmi-shared/agnostic.h(定义 Agnostic_* 类型,可复用 DLD、DD、DLDL 等泛型)、lwmlist.h(新增 LWM 条目,API 名首字母大写)、methodcontext.h(定义 rec*/dmp*/rep* 三个方法并新增 mcPackets 枚举项)、methodcontext.cpp(实现三个方法)、superpmi/icorjitinfo.cpp(调用 rep* 方法)、superpmi-shim-collector/icorjitinfo.cpp(调用 rec* 方法)。

限制:若未要求实现具体功能,保留 NotImplementedException()、UNREACHABLE() 等标记;每个源文件只改一次,不做无关修改;插入位置与顺序不影响正确性。完成标准为各层均含新 API,且指定文件均已改动。