一進入 ruby_init_stack() 就先設定 native_main_thread.id,推測每個 thread 都會有自己的 stack。因為 thr...
目前看到的兩個 global variable ruby_current_vm_ptr: global in vm.c native_main_thread:...
原本目標之一是要瞭解 ruby code 如何變成 CPU instruction,直覺想法是從 YARV 的 main() 開始看程式碼。目前確認到: ru...
在 node.h 內可以看到 struct 定義。第一個問題是要知道如何解讀 flags。 typedef struct RNode { VALUE f...
先從 ast = load_file(parser, opt->script_name, f, 1, opt); 往下看,應該是從 ruby file 產...
稍微理解一下 VALUE,參考 https://docs.ruby-lang.org/en/3.2/extension_rdoc.html : The typ...
認為 VALUE 在 function 傳遞參數時大量使用是 YARV 程式不易理解的原因之一。例如 load_file_internal: static VA...
從 VALUE 的設計衍生出疑問為什麼要這樣子做,再看一下 code 後有一個想法: 在 Ruby 程式裡可以存取很多內建的變數或常數,它們有些是在 YARV...
parse.y parse.c 負責兩個工作,將 Ruby code 變成 token 後比對 grammar 建立 AST 用 Ripper 看產生的 tok...
用 Ripper.sexp 看 AST 內容 require 'ripper' require 'pp' pp Ripper.sexp <<~RUB...