Skip to content

1-layout/不再检查 builtin opcode,函数调用一律 layout 为 rwir|rwfunc #68

Description

@miaobyte

背景

当前 layout 用 opcode 清单判定「native vs 扩展 vs 用户函数」,做包名前缀:

  • 曾用 native_rwir_set / is_native_rwir 硬编码 native opcode;
  • 后改 user_pkg map(name→pkg)正向识别用户函数再加包前缀。

这些都是在 layout 层静态猜 opcode 归属,与「核心不预知扩展、不预知 builtin」的定位相悖。

目标

kvlang/layout 不再检查 builtin opcode、不再用 map 匹配。凡「看起来像函数调用」的 op(含 +-÷>< 等运算符),一律 layout 为 kindexp rwir|rwfunc 并列,不做任何静态归类/前缀。

判定留给 runtime

  • 扩展 rwir 只以 kvspace 某 key 的 XValue kind=rwir 出现(/lib/<opcode>)。
  • runtime 执行时按 kvlangBuiltinIsNative(正向 native 表)+ 查 /lib/<opcode> 的 XValue kind 反向判定:kind=rwir → 扩展 handoff;kind=rwfunc → 用户函数 OP_CALL。
  • 运算符(+/-/÷/>/<…)同样走该路径,或在 runtime 的 native 表里明确列示,layout 不再单独知晓。

现状关联

  • 已删 native_rwir_set/is_native_rwir/global_rwir_set 死代码,改用 user_pkg(正向识别用户函数加包前缀)——本 issue 进一步要求连 user_pkg 前缀匹配也去掉。
  • 见 [[extension-rwir-not-hardcoded]] 原则。

承接

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions