Ruby 内部术语表

只是一个我在 Ruby 源代码中遇到的首字母缩略词及其含义的列表。

| 术语 | 定义 | | — | ———–| | BIN | 基本指令名称。用作引用 YARV 指令的宏。将 pop 转换为 YARVINSN_pop。 | | bop | 基本运算符。与 Integer 加法和减法等方法相关,只要它们没有被重新定义,就可以进行优化。| | cc | 调用缓存。用于调用站点的内联缓存结构。存储在 cd 中 | | cd | 调用 Data。一个指向 cicc 的数据结构。iseq 对象指向 cd,并通过此结构访问调用信息和调用缓存 | | cfp| 控制帧指针。表示一个 Ruby 堆栈帧。调用方法会推送一个新的帧 (cfp),返回会弹出帧。指向 pcspep 和相应的 iseq | | ci | 调用信息。指的是一个 rb_callinfo 结构。包含有关调用站点的信息,包括要传递的参数数量、是否为关键字参数等。与 cccd 一起使用。| | 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 数组中。epcfp 指向 | | 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_LOCALep。通常这是方法 (而不是块,其 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 | 一个僵尸对象。一个具有尚未执行的终结器的对象。该对象已被收集,因此是“死”的,但终结器尚未运行,因此它仍然在某种程度上是活着的。 |