LoginSignup
0

More than 5 years have passed since last update.

SBCLメモ: call調査

Last updated at Posted at 2015-05-15

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0