Ruby 内部术语表¶ ↑
只是我在 Ruby 源代码中遇到的缩略词及其含义的列表。
术语 | 定义 |
---|---|
‘BIN` | 基本指令名称。用作引用 YARV 指令的宏。将 pop 转换为 YARVINSN_pop。 |
‘bop` | 基本运算符。与方法相关,例如 `Integer` 加号和减号,只要它们尚未重新定义,就可以对其进行优化。 |
‘cc` | 调用缓存。调用站点的内联缓存结构。存储在 `cd` 中 |
‘cd` | 调用 Data 。一个指向“ci”和“cc”的数据结构。`iseq` 对象指向 `cd`,并通过此结构访问调用信息和调用缓存 |
‘cfp` | 控制帧指针。表示 Ruby 堆栈帧。调用方法会推送一个新帧 (cfp),返回会弹出帧。指向 `pc`、`sp`、`ep` 和对应的 `iseq` |
‘ci` | 调用信息。指一个 `rb_callinfo` 结构。包含调用站点相关的调用信息,包括要传递的参数数量、它们是否是关键字参数等。与 `cc` 和 `cd` 结合使用。 |
‘cref` | Class 引用。一个指向类引用的结构,其中存储了 `klass_or_self`、可见性范围和优化。它还存储了一个指向层次结构中下一个类的指针,由 `rb_cref_struct * next` 引用。 Class 引用是词法作用域的。 |
CRuby | 用 C 编写的 Ruby 实现 |
‘cvar` | Class 变量。指一个 Ruby 类变量,如 `@@foo` |
‘dvar` | 动态变量。解析器用来指代在当前词法作用域之外定义的局部变量。例如 `def foo; bar = 1; -> { p bar }; end`,块中的“bar”是一个 `dvar` |
‘ec` | 执行上下文。顶级 VM 上下文,指向当前 `cfp` |
‘ep` | 环境指针。局部变量(包括方法参数)存储在 `ep` 数组中。`cfp` 指向 `ep` |
GC |
垃圾回收器 |
‘gvar` | 全局变量。指一个 Ruby 全局变量,如 `$$` 等 |
‘ICLASS` | 内部 Class 。当包含一个模块时,目标类会获得一个新的超类,它是 `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 | 即时 Time 编译器 |
“lep” | 局部环境指针。标记为 `VM_ENV_FLAG_LOCAL` 的 “ep”。通常这是方法的 `ep`(而不是块的 `ep`,后者的 `ep` 不是“局部”的) |
“local” | 局部变量。指局部变量。 |
“me” | Method 条目。指 “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 | Yet Another Ruby VM。CRuby 使用的虚拟机 |
ZOMBIE | 僵尸对象。具有尚未执行的终结器的对象。该对象已收集,因此“已死亡”,但终结器尚未运行,因此仍处于某种活动状态。 |