feat(tpc): 新增 --func-hotspot 函数热点统计,Ctrl+C 时落盘
启用后为每个函数定义生成 internal i64 计数器并在入口递增;各模块 Ctrl+C 处理器以追加方式写最终文件(含 main 的模块启动时清空一次),经 llvm.global_ctors 自注册;未传参数时零影响。
This commit is contained in:
1 parent
355811d64e
commit
5680592f37
7 files changed
+339
-14
No files matched your search
@@ -332,6 +332,14 @@ class TransPyC:
|
||||
else:
|
||||
error('--datalayout requires an argument')
|
||||
sys.exit(1)
|
||||
elif sys.argv[I] == '--func-hotspot':
|
||||
# 函数热点统计:为每个函数定义配 u64 计数器,Ctrl+C 时写入指定文件
|
||||
if I + 1 < len(sys.argv):
|
||||
self.Args['FuncHotspot'] = sys.argv[I + 1]
|
||||
I += 2
|
||||
else:
|
||||
error('--func-hotspot requires an argument')
|
||||
sys.exit(1)
|
||||
else:
|
||||
error(f'Unknown argument {sys.argv[I]}')
|
||||
sys.exit(1)
|
||||
@@ -596,6 +604,9 @@ class TransPyC:
|
||||
# 有命令行参数,使用 ParseArgs 方法解析
|
||||
self.ParseArgs()
|
||||
|
||||
# 函数热点统计(--func-hotspot):绑定到翻译器;未传时为 None(零影响)
|
||||
self.translator.FuncHotspotFile = self.Args.get('FuncHotspot')
|
||||
|
||||
# 检查是否有预处理符号文件的请求
|
||||
if 'PreSym' in self.Args:
|
||||
PresymConfig: dict[str, Any] = self.Args['PreSym']
|
||||
|
||||
Reference in new issue
Block a user