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
变量。指的是像 @@foo
这样的 Ruby 类变量 | | dvar
| 动态变量。解析器使用它来引用在当前词法作用域之外定义的局部变量。例如 def foo; bar = 1; -> { p bar }; end
,块内的 “bar” 是一个 dvar
| | ec
| 执行上下文。顶层 VM 上下文,指向当前的 cfp
| | ep
| 环境指针。局部变量,包括方法参数,都存储在 ep
数组中。ep
由 cfp
指向 | | GC
| 垃圾回收器 | | gvar
| 全局变量。指的是像 $$
等的 Ruby 全局变量 | | ICLASS
| 内部 Class
。当包含一个模块时,目标类会获得一个新的超类,该超类是 ICLASS
的一个实例。ICLASS
表示继承链中的模块。| | ifunc
| 内部函数。用 C 实现的块。| | iseq
| 指令序列。通常,C 代码中的 “iseq” 将引用一个 rb_iseq_t
对象,该对象保存对 VM 执行的实际指令序列的引用。该对象还保存有关代码的信息,例如与代码关联的方法名称。| | insn
| 指令。指的是一个 YARV 指令。| | insns
| 指令。通常是 YARV 指令的数组。| | ivar
| 实例变量。指的是像 @foo
这样的 Ruby 实例变量 | | imemo
| 内部备忘录。一个标记结构,其内存由 Ruby 的 GC
管理,但包含内部信息,不打算暴露给 Ruby 程序。包含各种信息,具体取决于类型。有关不同类型,请参见 imemo_type
枚举。| | JIT | 即时 Time
编译器 | | lep
| 本地环境指针。一个标记为 VM_ENV_FLAG_LOCAL
的 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 | 另一个 Ruby VM。CRuby 使用的虚拟机 | | ZOMBIE | 一个僵尸对象。一个具有尚未执行的终结器的对象。该对象已被收集,因此是“死”的,但终结器尚未运行,因此它仍然在某种程度上是活着的。 |