stxobj.c init cleanup

This commit is contained in:
Kevin Tew 2011-03-25 22:17:04 -06:00
parent 43275e7b0a
commit 4feebef9ef
2 changed files with 39 additions and 148 deletions

View File

@ -3095,6 +3095,12 @@ void scheme_add_global_constant_symbol(Scheme_Object *name, Scheme_Object *v, Sc
#define GLOBAL_PRIM_W_ARITY2(name, func, a1, a2, a3, a4, env) scheme_add_global_constant(name, scheme_make_prim_w_arity2(func, name, a1, a2, a3, a4), env) #define GLOBAL_PRIM_W_ARITY2(name, func, a1, a2, a3, a4, env) scheme_add_global_constant(name, scheme_make_prim_w_arity2(func, name, a1, a2, a3, a4), env)
#define GLOBAL_NONCM_PRIM(name, func, a1, a2, env) scheme_add_global_constant(name, scheme_make_noncm_prim(func, name, a1, a2), env) #define GLOBAL_NONCM_PRIM(name, func, a1, a2, env) scheme_add_global_constant(name, scheme_make_noncm_prim(func, name, a1, a2), env)
#define GLOBAL_FOLDING_PRIM_UNARY_INLINED(name, func, a1, a2, a3, env) do {\
Scheme_Object *p; \
p = scheme_make_folding_prim(func, name, a1, a2, a3); \
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; \
scheme_add_global_constant(name, p, env); \
} while(0)
Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int mode, Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int mode,

View File

@ -38,7 +38,6 @@
In addition, the need to marshal syntax objects to bytecode In addition, the need to marshal syntax objects to bytecode
introduces some other complications. */ introduces some other complications. */
READ_ONLY static Scheme_Object *scheme_datum_to_syntax_proc;
ROSYM static Scheme_Object *source_symbol; /* uninterned! */ ROSYM static Scheme_Object *source_symbol; /* uninterned! */
ROSYM static Scheme_Object *share_symbol; /* uninterned! */ ROSYM static Scheme_Object *share_symbol; /* uninterned! */
ROSYM static Scheme_Object *origin_symbol; ROSYM static Scheme_Object *origin_symbol;
@ -442,163 +441,49 @@ XFORM_NONGCING static void DO_WRAP_POS_REVINIT(Wrap_Pos *w, Scheme_Object *k)
void scheme_init_stx(Scheme_Env *env) void scheme_init_stx(Scheme_Env *env)
{ {
Scheme_Object *p;
#ifdef MZ_PRECISE_GC #ifdef MZ_PRECISE_GC
register_traversers(); register_traversers();
#endif #endif
p = scheme_make_folding_prim(syntax_p, "syntax?", 1, 1, 1); GLOBAL_FOLDING_PRIM_UNARY_INLINED("syntax?", syntax_p, 1, 1, 1, env);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
scheme_add_global_constant("syntax?", p, env);
scheme_add_global_constant("syntax->datum", GLOBAL_FOLDING_PRIM("syntax->datum", syntax_to_datum, 1, 1, 1, env);
scheme_make_folding_prim(syntax_to_datum, GLOBAL_FOLDING_PRIM("datum->syntax", datum_to_syntax, 2, 5, 1, env);
"syntax->datum",
1, 1, 1),
env);
REGISTER_SO(scheme_datum_to_syntax_proc); GLOBAL_FOLDING_PRIM_UNARY_INLINED("syntax-e", scheme_checked_syntax_e, 1, 1, 1, env);
scheme_datum_to_syntax_proc = scheme_make_folding_prim(datum_to_syntax,
"datum->syntax", GLOBAL_FOLDING_PRIM("syntax-line" , syntax_line , 1, 1, 1, env);
2, 5, 1); GLOBAL_FOLDING_PRIM("syntax-column" , syntax_col , 1, 1, 1, env);
scheme_add_global_constant("datum->syntax", GLOBAL_FOLDING_PRIM("syntax-position", syntax_pos , 1, 1, 1, env);
scheme_datum_to_syntax_proc, GLOBAL_FOLDING_PRIM("syntax-span" , syntax_span , 1, 1, 1, env);
env); GLOBAL_FOLDING_PRIM("syntax-source" , syntax_src , 1, 1, 1, env);
GLOBAL_FOLDING_PRIM("syntax->list" , syntax_to_list, 1, 1, 1, env);
p = scheme_make_folding_prim(scheme_checked_syntax_e, "syntax-e", 1, 1, 1); GLOBAL_IMMED_PRIM("syntax-original?" , syntax_original_p , 1, 1, env);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; GLOBAL_IMMED_PRIM("syntax-property" , syntax_property , 2, 3, env);
scheme_add_global_constant("syntax-e", p, env); GLOBAL_IMMED_PRIM("syntax-property-symbol-keys" , syntax_property_keys , 1, 1, env);
scheme_add_global_constant("syntax-line", GLOBAL_IMMED_PRIM("syntax-track-origin" , syntax_track_origin , 3, 3, env);
scheme_make_folding_prim(syntax_line,
"syntax-line",
1, 1, 1),
env);
scheme_add_global_constant("syntax-column",
scheme_make_folding_prim(syntax_col,
"syntax-column",
1, 1, 1),
env);
scheme_add_global_constant("syntax-position",
scheme_make_folding_prim(syntax_pos,
"syntax-position",
1, 1, 1),
env);
scheme_add_global_constant("syntax-span",
scheme_make_folding_prim(syntax_span,
"syntax-span",
1, 1, 1),
env);
scheme_add_global_constant("syntax-source",
scheme_make_folding_prim(syntax_src,
"syntax-source",
1, 1, 1),
env);
scheme_add_global_constant("syntax->list",
scheme_make_folding_prim(syntax_to_list,
"syntax->list",
1, 1, 1),
env);
scheme_add_global_constant("syntax-original?", GLOBAL_IMMED_PRIM("make-syntax-delta-introducer" , scheme_syntax_make_transfer_intro, 2, 3, env);
scheme_make_immed_prim(syntax_original_p,
"syntax-original?",
1, 1),
env);
scheme_add_global_constant("syntax-property",
scheme_make_immed_prim(syntax_property,
"syntax-property",
2, 3),
env);
scheme_add_global_constant("syntax-property-symbol-keys",
scheme_make_immed_prim(syntax_property_keys,
"syntax-property-symbol-keys",
1, 1),
env);
scheme_add_global_constant("syntax-track-origin", GLOBAL_IMMED_PRIM("bound-identifier=?" , bound_eq , 2, 3, env);
scheme_make_immed_prim(syntax_track_origin, GLOBAL_IMMED_PRIM("free-identifier=?" , module_eq , 2, 3, env);
"syntax-track-origin", GLOBAL_IMMED_PRIM("free-transformer-identifier=?" , module_trans_eq , 2, 2, env);
3, 3), GLOBAL_IMMED_PRIM("free-template-identifier=?" , module_templ_eq , 2, 2, env);
env); GLOBAL_IMMED_PRIM("free-label-identifier=?" , module_label_eq , 2, 2, env);
scheme_add_global_constant("make-syntax-delta-introducer", GLOBAL_IMMED_PRIM("identifier-binding" , module_binding , 1, 2, env);
scheme_make_immed_prim(scheme_syntax_make_transfer_intro, GLOBAL_IMMED_PRIM("identifier-transformer-binding" , module_trans_binding , 1, 2, env);
"make-syntax-delta-introducer", GLOBAL_IMMED_PRIM("identifier-template-binding" , module_templ_binding , 1, 1, env);
2, 3), GLOBAL_IMMED_PRIM("identifier-label-binding" , module_label_binding , 1, 1, env);
env); GLOBAL_IMMED_PRIM("identifier-prune-lexical-context" , identifier_prune , 1, 2, env);
GLOBAL_IMMED_PRIM("identifier-prune-to-source-module", identifier_prune_to_module, 1, 1, env);
scheme_add_global_constant("bound-identifier=?",
scheme_make_immed_prim(bound_eq,
"bound-identifier=?",
2, 3),
env);
scheme_add_global_constant("free-identifier=?",
scheme_make_immed_prim(module_eq,
"free-identifier=?",
2, 3),
env);
scheme_add_global_constant("free-transformer-identifier=?",
scheme_make_immed_prim(module_trans_eq,
"free-transformer-identifier=?",
2, 2),
env);
scheme_add_global_constant("free-template-identifier=?",
scheme_make_immed_prim(module_templ_eq,
"free-template-identifier=?",
2, 2),
env);
scheme_add_global_constant("free-label-identifier=?",
scheme_make_immed_prim(module_label_eq,
"free-label-identifier=?",
2, 2),
env);
scheme_add_global_constant("identifier-binding",
scheme_make_immed_prim(module_binding,
"identifier-binding",
1, 2),
env);
scheme_add_global_constant("identifier-transformer-binding",
scheme_make_immed_prim(module_trans_binding,
"identifier-transformer-binding",
1, 2),
env);
scheme_add_global_constant("identifier-template-binding",
scheme_make_immed_prim(module_templ_binding,
"identifier-template-binding",
1, 1),
env);
scheme_add_global_constant("identifier-label-binding",
scheme_make_immed_prim(module_label_binding,
"identifier-label-binding",
1, 1),
env);
scheme_add_global_constant("identifier-prune-lexical-context",
scheme_make_immed_prim(identifier_prune,
"identifier-prune-lexical-context",
1, 2),
env);
scheme_add_global_constant("identifier-prune-to-source-module",
scheme_make_immed_prim(identifier_prune_to_module,
"identifier-prune-to-source-module",
1, 1),
env);
scheme_add_global_constant("syntax-source-module", GLOBAL_NONCM_PRIM("syntax-source-module" , syntax_src_module , 1, 2, env);
scheme_make_noncm_prim(syntax_src_module, GLOBAL_IMMED_PRIM("syntax-recertify" , syntax_recertify , 4, 4, env);
"syntax-source-module",
1, 2),
env);
scheme_add_global_constant("syntax-recertify",
scheme_make_immed_prim(syntax_recertify,
"syntax-recertify",
4, 4),
env);
REGISTER_SO(source_symbol); REGISTER_SO(source_symbol);
REGISTER_SO(share_symbol); REGISTER_SO(share_symbol);