SBCL探求メモ: call調査
起動
main (runtime.c)
|
+ load_core_file
|
+ create_initial_thread
|
+ create_thread_struct
|
+ initial_thread_trampoline
|
+ call_into_lisp_first_time / funcall0
save core
save-lisp-and-die
|
+ (get-lisp-obj-address #'restart-lisp)
| - これがcall先になる
+ save (define-alien-routine)
|
+ save (runtime/save.c)
|
+ save_to_filehandle
sb!xc:compile-file
sb!xc:compile-file
|
+ sub-compile-file
|
+ sub-sub-compile-file
|
+ process-toplevel-form
|
+ note-toplevel-form
| -> `x-compiling... `を表示
+ convert-and-maybe-compile
convert-and-maybe-compile
convert-and-maybe-compile
|
+ ir1-toplevel
| |
| + ir1-convert-lambda-body
| |
| + ir1-convert-special-bindings
| |
| + ir1-convert-aux-bindings
| |
| + ir1-convert-progn-body
| |
| + ir1-convert
| |
| + ir1-convert-var
| |
| + reference-leaf
| |
| + reference-constant
| |
| + ir1-convert-functoid
| -> def-ir1-translatorで定義した関数がinfoを経由して呼ばれる
|
+ compile-toplevel
|
+ hogehoge
compile-toplevel
compile-toplevel
|
+ compile-component
|
+ ir1-phases
| |
| + find-initial-dfo
| |
| + dfo-scavenge-dependency-graph
|
+ %compile-component
|
+ init-assembler
|
+ ir2-convert
|
+ ir2-optimize
|
+ generate-code
|
+ fasl-dump-component
| |
| + dump-after-code-object
| |
| + dump-code-object
| |
| + dump-object
| |
| + sub-dump-object
| -> listやsymbolなど、dumpするオブジェクトの種類に応じてdump処理を実行
|
+ make-core-component
ir2-convert-conditional
|
+ (vop branch ...)
- vopはマクロ (compiler/meta-vmdef.lisp)
- branchは変数 (compiler/ppc/pred.lisp)
sub-dump-object
symbolのdump: dump-symbol
その他の値のdump: dump-non-immediate-object