Ruby 内部结构词汇表¶ ↑
只是一个我在 Ruby 源代码中遇到的缩写列表及其含义。
术语 | 定义 |
---|---|
‘BIN` | 基本指令名称。用作引用 YARV 指令的宏。将 pop 转换为 YARVINSN_pop。 |
‘bop` | 基本操作符。与诸如 ‘Integer` 加和减等方法相关,只要它们没有被重新定义,就可以进行优化。 |
‘cc` | 调用缓存。调用站点的内联缓存结构。存储在 ‘cd` 中 |
‘cd` | 调用 数据 。一个指向 ‘ci` 和 `cc` 的数据结构。`iseq` 对象指向 `cd`,并通过此结构访问调用信息和调用缓存。 |
‘cfp` | 控制帧指针。表示 Ruby 堆栈帧。调用方法会推送一个新帧 (cfp),返回会弹出一个帧。指向 ‘pc`、`sp`、`ep` 和相应的 `iseq`。 |
‘ci` | 调用信息。指 ‘rb_callinfo` 结构。包含有关调用站点的信息,包括要传递的参数数量,是否为关键字参数等。与 `cc` 和 `cd` 结合使用。 |
‘cref` | 类 引用。一个指向存储 ‘klass_or_self`、可见性范围和精炼的类引用的结构。它还存储一个指向由 `rb_cref_struct * next` 引用的层次结构中下一个类的指针。类 引用是词法作用域的。 |
CRuby | 用 C 编写的 Ruby 实现 |
‘cvar` | 类 变量。指 Ruby 类变量,如 ‘@@foo` |
‘dvar` | 动态变量。由解析器用来引用在当前词法作用域之外定义的局部变量。例如 ‘def foo; bar = 1; -> { p bar }; end`,块内的“bar”是一个 `dvar`。 |
‘ec` | 执行上下文。顶层 VM 上下文,指向当前的 ‘cfp`。 |
‘ep` | 环境指针。局部变量,包括方法参数都存储在 ‘ep` 数组中。`ep` 由 `cfp` 指向。 |
GC |
垃圾回收器 |
‘gvar` | 全局变量。指 Ruby 全局变量,如 ‘$$` 等。 |
‘ICLASS` | 内部 类 。当包含一个模块时,目标类会得到一个新的超类,它是 ‘ICLASS` 的一个实例。`ICLASS` 表示继承链中的模块。 |
‘ifunc` | 内部函数。一个用 C 实现的块。 |
‘iseq` | 指令序列。通常 C 代码中的“iseq”会指一个 ‘rb_iseq_t` 对象,该对象保存对实际指令序列的引用,这些指令序列由 VM 执行。该对象还保存有关代码的信息,例如与该代码关联的方法名称。 |
‘insn` | 指令。指 YARV 指令。 |
‘insns` | 指令。通常是 YARV 指令的数组。 |
‘ivar` | 实例变量。指 Ruby 实例变量,如 ‘@foo`。 |
‘imemo` | 内部备忘录。一个标签结构,其内存由 Ruby 的 GC 管理,但包含内部信息,不打算暴露给 Ruby 程序。包含各种信息,具体取决于类型。有关不同类型,请参见 ‘imemo_type` 枚举。 |
JIT | 即时 时间 编译器 |
‘lep` | 局部环境指针。一个标记为 `VM_ENV_FLAG_LOCAL` 的 ‘ep`。通常这是方法(而不是块,其 `ep` 不是“局部”的)的 `ep`。 |
‘local` | 局部。指局部变量。 |
‘me` | 方法 条目。指 ‘rb_method_entry_t` 结构,它是 Ruby 方法的内部表示。 |
MRI | Matz 的 Ruby 实现 |
‘pc` | 程序计数器。通常是 VM 将要接下来执行的指令。由 ‘cfp` 指向,并由 VM 递增。 |
‘sp` | 堆栈指针。堆栈的顶部。VM 在 ‘iseq` 中执行指令,指令会将值压入和弹出堆栈。VM 更新 `cfp` 上的 `sp` 以指向堆栈的顶部。 |
‘svar` | 特殊变量。指诸如 ‘$~` 和 `$_` 之类的特殊局部变量。请参见 `insns.def` 中的 `getspecial` 指令。 |
‘VALUE` | VALUE 是从 Ruby C 代码指向 ruby 对象的指针。 |
VM | 虚拟机。在 MRI 的情况下是 YARV (Yet Another Ruby VM) |
WB | 写入屏障。与 GC 写入屏障有关 |
WC | 通配符。如在 ‘getlocal_WC_0` 等指令中所见。这意味着此指令采用参数的“通配符”(在本例中是局部变量的索引) |
YARV | 又一个 Ruby VM。CRuby 使用的虚拟机 |
ZOMBIE | 僵尸对象。一个具有尚未执行的终结器的对象。该对象已被收集,因此“已死”,但终结器尚未运行,因此它仍然在某种程度上是活着的。 |