执行引擎
执行引擎是实际代码生成和执行发生的地方。目前只公开了一个执行引擎,即 MCJIT
。
函数
- llvmlite.binding.create_mcjit_compiler(module, target_machine, use_lmm=None)
从给定的 module 和 target_machine 创建一个由 MCJIT 提供支持的引擎。
lmm 控制是否使用 llvmlite 内存管理器。如果未提供,将使用平台的默认选择(在 64 位 ARM 系统上为
True
,否则为False
)。module 不需要包含任何代码。
返回一个
ExecutionEngine
实例。
- llvmlite.binding.check_jit_execution()
确保系统允许为 JIT 编译的代码创建可执行内存范围。如果 SELinux 等安全机制阻止,则会引发异常。否则,函数将静默返回。
提前调用此函数有助于诊断系统配置问题,而不是让 JIT 编译的函数神秘崩溃。
ExecutionEngine 类
- class llvmlite.binding.ExecutionEngine
LLVM 执行引擎的一个封装。以下方法和属性可用:
- finalize_object()
确保执行引擎拥有的所有模块都已完全处理并可用于执行。
- get_function_address(name)
以整数形式返回函数 name 的地址。如果 name 的符号不存在,则在 LLVM 中这是一个致命错误。
- get_global_value_address(name)
以整数形式返回全局值 name 的地址。如果 name 的符号不存在,则在 LLVM 中这是一个致命错误。
- add_object_file(object_file)
将指定目标文件中的符号添加到执行引擎。
- object_file str 或
ObjectFileRef
: 目标文件路径 或目标文件实例。此调用后,目标文件实例将不可用。
- object_file str 或
- set_object_cache(notify_func=None, getbuffer_func=None)
为该引擎设置对象缓存回调。
- target_data
执行引擎使用的
TargetData
。