gencomp 確認 (3)

あっちに行ったりこっちに戻ったり。
ちょっと軽くメモ取りつつ。

(define (do-it src base)
  (parameterize ((cgen-current-unit (get-unit src base))
                 (compile-module    (make-module #f))
                 (compile-file-basename base)
                 (vm-eval-situation SCM_VM_COMPILING))

parameterize ってなかなか凄そげ。詳細は略。cgen-current-unit は なオブジェクトがナニ。compile-module はスルー。make-module ってなんだば、と言いつつリファレンス見たら_無名モジュール作る_とあるな。なるほど。テンポラリなソレ?
次も

    ;; Set up initial environment
    (eval '(define-macro (current-module)
             `(find-module ',(with-module user (compile-module-name))))
          (compile-module))

スルー。無名モジュールな環境で eval している。current-module ってマクロを定義している模様。

    ;; Static stuff
    (cgen-decl "#include <gauche/code.h>")
    (cgen-decl "#include <gauche/macro.h>") ;;for MakeMacroTransformerOld. temporary.
    (and-let* ((extm (ext-module-file)))
      (insert-ext-initializer (port-name extm)))

下準備と思われる。いっちゃん下のソレもとりあえずスルー。and-let* とか凄い卑怯だよな、と言いつつ (を

    ;; Main processing
    (with-input-from-file src
      (lambda ()
        (emit-toplevel-executor
         (reverse (port-fold compile-toplevel-form '() read)))))
    ;; Emitting
    (cgen-emit-c (cgen-current-unit))))

ここがキモと見て掘削開始。

続き

Shiro さんから 0.8.14 のコメントを、と助言頂く。確認してみましたが、コメント部分には修正は入っていない模様。
とりあえず色々見てて

;; [Building code]
;;   1. Create a unit and make it the current unit.
;;   2. Call node creation functions.  The created nodes are
;;      accumulated within the current unit.
;;   3. Call "emit" method on the unit, which generates a C file
;;      and optionally a header file.

なカンジなのは段々見えつつあるんですが若干 (?) 具体的ではないです。(弱