0.9 な Reading が開始されている模様

とりあえず main.c の 516 行の

        } else {
            Scm_Repl(SCM_FALSE, SCM_FALSE, SCM_FALSE, SCM_FALSE);
        }

から確認開始。knishii さんが掘ってるナニも確認しつつ。
ええと、Scm_Repl() 手続きの定義が以下。
# repl.c の 192 行

void Scm_Repl(ScmObj reader, ScmObj evaluator, ScmObj printer,
              ScmObj prompter)
{
    Scm_ApplyRec(SCM_OBJ(&repl_STUB),
                 SCM_LIST4(reader, evaluator, printer, prompter));
}

repl_STUB の定義は以下と思われます。
# repl.c の 190 行

static SCM_DEFINE_SUBR(repl_STUB, 0, 1, SCM_OBJ(&repl_NAME), repl_proc, NULL, NULL);

多分、SCM_DEFINE_SUBR マクロは地雷なんだろうな、と思いつつ掘り始めてみると以下。

#define SCM__DEFINE_SUBR_INT(cvar, req, opt, inf, flags, func, inliner, data) \
    ScmSubr cvar = {                                                        \
        SCM__PROCEDURE_INITIALIZER(SCM_CLASS_STATIC_TAG(Scm_ProcedureClass),\
                                   req, opt, SCM_PROC_SUBR, inf, inliner),  \
        flags, (func), (data)                                               \
    }

#define SCM_DEFINE_SUBR(cvar, req, opt, inf, func, inliner, data) \
    SCM__DEFINE_SUBR_INT(cvar, req, opt, inf, 0, func, inliner, data)

gauche.h の 1321 行あたり。手動展開してみるにはリキが微妙。てか、このあたりは 0.8.11 って思ったら (ry
ええと、SCM__PROCEDURE_INITIALIZER マクロの定義が以下で

#define SCM__PROCEDURE_INITIALIZER(klass, req, opt, typ, inf, inl)  \
    { { klass }, (req), (opt), (typ), FALSE, FALSE, (inf), SCM_FALSE, (inl) }

あと、ScmSubr 型は ScmSubrRec 構造体で typedef されてて構造体の定義が gauche.h で以下。

/* Subr - C defined procedure */
struct ScmSubrRec {
    ScmProcedure common;
    int flags;
    ScmSubrProc *func;
    void *data;
};

ええと、ScmProcedure 型は ScmProcedureRec 構造体で typedef されてるんですが、定義が以下ッスか。

struct ScmProcedureRec {
    SCM_INSTANCE_HEADER;
    unsigned int required : 16;    /* # of required args */
    unsigned int optional : 8;     /* >=1 if it takes opt args. see below.*/
    unsigned int type     : 3;     /* ScmProcedureType */
    unsigned int locked   : 1;     /* setter locked? */
    unsigned int currying : 1;     /* autocurrying */
    ScmObj info;                   /* source code info */
    ScmObj setter;                 /* setter, if exists. */
    ScmObj inliner;                /* inliner information.  see below. */
};

うーん。このあたり色々きっちり確認必要。