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」 類別參考。指向儲存「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 Just In 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 Yet Another Ruby VM。CRuby 使用的虛擬機器
ZOMBIE 殭屍物件。具有尚未執行的完成器的物件。物件已收集,因此“已死亡”,但完成器尚未執行,因此仍有些許生命力。