/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- intlib_pair_attributes
- intlib_pair_attribute_get
- intlib_pair_attribute_setX
- intlib_extended_pairP
- intlib_extended_cons
- intlib_extended_list
- intlib_make_syntactic_closure
- intlib_make_identifier
- intlib_find_binding
- intlib_find_const_binding
- intlib__25insert_binding
- intlib__25export_symbols
- intlib__25import_modules
- intlib_gloc_ref
- intlib_gloc_setX
- intlib_gloc_constP
- intlib_global_call_type
- intlib_macroP
- intlib_make_toplevel_closure
- intlib_make_macro_transformer
- intlib_compile_syntax_rules
- intlib_call_macro_expander
- intlib_make_syntax
- intlib_call_syntax_handler
- intlib_syntax_handler
- intlib__25internal_macro_expand
- intlib__25procedure_inliner_SETTER
- intlib__25procedure_inliner
- intlib_make_compiled_code_builder
- intlib_compiled_code_emit0X
- intlib_compiled_code_emit0oX
- intlib_compiled_code_emit0iX
- intlib_compiled_code_emit0oiX
- intlib_compiled_code_emit1X
- intlib_compiled_code_emit1oX
- intlib_compiled_code_emit1iX
- intlib_compiled_code_emit1oiX
- intlib_compiled_code_emit2X
- intlib_compiled_code_emit2oX
- intlib_compiled_code_emit2iX
- intlib_compiled_code_emit2oiX
- intlib_compiled_code_new_label
- intlib_compiled_code_set_labelX
- intlib_compiled_code_finish_builder
- intlib_vm_dump_code
- intlib_vm_code_TOlist
- intlib_vm_insn_build
- intlib_vm_eval_situation
- intlib_vm_compiler_flag_is_setP
- intlib_vm_compiler_flag_setX
- intlib_vm_compiler_flag_clearX
- intlib_vm_compiler_flag_noinline_localsP
- intlib_vm_current_module
- intlib_vm_set_current_module
- intlib_gc_print_static_roots
- intlib_profiler_raw_result
- intlib_cenv_lookup
- intlib_cenv_toplevelP
- intlib_renv_lookup
- intlib__25map_make_lvar
- intlib_lvar_ref_2b_2bX
- intlib_lvar_ref__X
- intlib_lvar_set_2b_2bX
- intlib__25imax
- map1c_cc
- intlib__25map1c
- map1cc_cc
- intlib__25map1cc
- intlib__25map_cons
- Scm_Init_intlib
1 /* Generated by genstub. Do not edit. */
2 #define LIBGAUCHE_BODY
3 #include <gauche.h>
4 #if defined(__CYGWIN__) || defined(__MINGW32__)
5 #define SCM_CGEN_CONST /*empty*/
6 #else
7 #define SCM_CGEN_CONST const
8 #endif
9
10 #include <gauche/class.h>
11 #include <gauche/code.h>
12 #include <gauche/vminsn.h>
13 #include <gauche/macro.h>
14 #include <gauche/prof.h>
15 #include <gauche/builtin-syms.h>
16
17 static ScmObj intlib_pair_attributes(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
18 {
19 ScmObj pair_scm;
20 ScmPair* pair;
21 SCM_ENTER_SUBR("pair-attributes");
22 pair_scm = SCM_ARGREF(0);
23 if (!SCM_PAIRP(pair_scm)) Scm_Error("pair required, but got %S", pair_scm);
24 pair = SCM_PAIR(pair_scm);
25 {
26 {
27 ScmObj SCM_RESULT;
28 SCM_RESULT = Scm_PairAttr(pair);
29 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
30 }
31 }
32 }
33
34 static SCM_DEFINE_STRING_CONST(intlib_pair_attributes__NAME, "pair-attributes", 15, 15);
35 static SCM_DEFINE_SUBR(intlib_pair_attributes__STUB, 1, 0, SCM_OBJ(&intlib_pair_attributes__NAME), intlib_pair_attributes, NULL, NULL);
36
37 static ScmObj intlib_pair_attribute_get(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
38 {
39 ScmObj pair_scm;
40 ScmPair* pair;
41 ScmObj key_scm;
42 ScmObj key;
43 ScmObj fallback_scm;
44 ScmObj fallback;
45 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
46 SCM_ENTER_SUBR("pair-attribute-get");
47 if (Scm_Length(SCM_OPTARGS) > 1)
48 Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
49 pair_scm = SCM_ARGREF(0);
50 if (!SCM_PAIRP(pair_scm)) Scm_Error("pair required, but got %S", pair_scm);
51 pair = SCM_PAIR(pair_scm);
52 key_scm = SCM_ARGREF(1);
53 key = (key_scm);
54 if (SCM_NULLP(SCM_OPTARGS)) fallback_scm = SCM_UNBOUND;
55 else {
56 fallback_scm = SCM_CAR(SCM_OPTARGS);
57 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
58 }
59 fallback = (fallback_scm);
60 {
61 {
62 ScmObj SCM_RESULT;
63 SCM_RESULT = (Scm_PairAttrGet(SCM_PAIR(pair), key, fallback));
64 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
65 }
66 }
67 }
68
69 static SCM_DEFINE_STRING_CONST(intlib_pair_attribute_get__NAME, "pair-attribute-get", 18, 18);
70 static SCM_DEFINE_SUBR(intlib_pair_attribute_get__STUB, 2, 1, SCM_OBJ(&intlib_pair_attribute_get__NAME), intlib_pair_attribute_get, NULL, NULL);
71
72 static ScmObj intlib_pair_attribute_setX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
73 {
74 ScmObj pair_scm;
75 ScmPair* pair;
76 ScmObj key_scm;
77 ScmObj key;
78 ScmObj value_scm;
79 ScmObj value;
80 SCM_ENTER_SUBR("pair-attribute-set!");
81 pair_scm = SCM_ARGREF(0);
82 if (!SCM_PAIRP(pair_scm)) Scm_Error("pair required, but got %S", pair_scm);
83 pair = SCM_PAIR(pair_scm);
84 key_scm = SCM_ARGREF(1);
85 key = (key_scm);
86 value_scm = SCM_ARGREF(2);
87 value = (value_scm);
88 {
89 {
90 ScmObj SCM_RESULT;
91 SCM_RESULT = (Scm_PairAttrSet(SCM_PAIR(pair), key, value));
92 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
93 }
94 }
95 }
96
97 static SCM_DEFINE_STRING_CONST(intlib_pair_attribute_setX__NAME, "pair-attribute-set!", 19, 19);
98 static SCM_DEFINE_SUBR(intlib_pair_attribute_setX__STUB, 3, 0, SCM_OBJ(&intlib_pair_attribute_setX__NAME), intlib_pair_attribute_setX, NULL, NULL);
99
100 static ScmObj intlib_extended_pairP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
101 {
102 ScmObj obj_scm;
103 ScmObj obj;
104 SCM_ENTER_SUBR("extended-pair?");
105 obj_scm = SCM_ARGREF(0);
106 obj = (obj_scm);
107 {
108 {
109 int SCM_RESULT;
110 SCM_RESULT = SCM_EXTENDED_PAIR_P(obj);
111 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
112 }
113 }
114 }
115
116 static SCM_DEFINE_STRING_CONST(intlib_extended_pairP__NAME, "extended-pair?", 14, 14);
117 static SCM_DEFINE_SUBR(intlib_extended_pairP__STUB, 1, 0, SCM_OBJ(&intlib_extended_pairP__NAME), intlib_extended_pairP, NULL, NULL);
118
119 static ScmObj intlib_extended_cons(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
120 {
121 ScmObj car_scm;
122 ScmObj car;
123 ScmObj cdr_scm;
124 ScmObj cdr;
125 SCM_ENTER_SUBR("extended-cons");
126 car_scm = SCM_ARGREF(0);
127 car = (car_scm);
128 cdr_scm = SCM_ARGREF(1);
129 cdr = (cdr_scm);
130 {
131 {
132 ScmObj SCM_RESULT;
133 SCM_RESULT = Scm_ExtendedCons(car, cdr);
134 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
135 }
136 }
137 }
138
139 static SCM_DEFINE_STRING_CONST(intlib_extended_cons__NAME, "extended-cons", 13, 13);
140 static SCM_DEFINE_SUBR(intlib_extended_cons__STUB, 2, 0, SCM_OBJ(&intlib_extended_cons__NAME), intlib_extended_cons, NULL, NULL);
141
142 static ScmObj intlib_extended_list(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
143 {
144 ScmObj elt_scm;
145 ScmObj elt;
146 ScmObj more_scm;
147 ScmObj more;
148 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
149 SCM_ENTER_SUBR("extended-list");
150 elt_scm = SCM_ARGREF(0);
151 elt = (elt_scm);
152 more_scm = SCM_OPTARGS;
153 more = (more_scm);
154 {
155 {
156 ScmObj SCM_RESULT;
157 SCM_RESULT = Scm_ExtendedCons(elt, more);
158 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
159 }
160 }
161 }
162
163 static SCM_DEFINE_STRING_CONST(intlib_extended_list__NAME, "extended-list", 13, 13);
164 static SCM_DEFINE_SUBR(intlib_extended_list__STUB, 1, 1, SCM_OBJ(&intlib_extended_list__NAME), intlib_extended_list, NULL, NULL);
165
166 static ScmObj intlib_make_syntactic_closure(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
167 {
168 ScmObj env_scm;
169 ScmObj env;
170 ScmObj literals_scm;
171 ScmObj literals;
172 ScmObj expr_scm;
173 ScmObj expr;
174 SCM_ENTER_SUBR("make-syntactic-closure");
175 env_scm = SCM_ARGREF(0);
176 env = (env_scm);
177 literals_scm = SCM_ARGREF(1);
178 literals = (literals_scm);
179 expr_scm = SCM_ARGREF(2);
180 expr = (expr_scm);
181 {
182 {
183 ScmObj SCM_RESULT;
184 SCM_RESULT = Scm_MakeSyntacticClosure(env, literals, expr);
185 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
186 }
187 }
188 }
189
190 static SCM_DEFINE_STRING_CONST(intlib_make_syntactic_closure__NAME, "make-syntactic-closure", 22, 22);
191 static SCM_DEFINE_SUBR(intlib_make_syntactic_closure__STUB, 3, 0, SCM_OBJ(&intlib_make_syntactic_closure__NAME), intlib_make_syntactic_closure, NULL, NULL);
192
193 static ScmObj intlib_make_identifier(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
194 {
195 ScmObj name_scm;
196 ScmSymbol* name;
197 ScmObj mod_scm;
198 ScmModule* mod;
199 ScmObj env_scm;
200 ScmObj env;
201 SCM_ENTER_SUBR("make-identifier");
202 name_scm = SCM_ARGREF(0);
203 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
204 name = SCM_SYMBOL(name_scm);
205 mod_scm = SCM_ARGREF(1);
206 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
207 mod = SCM_MODULE(mod_scm);
208 env_scm = SCM_ARGREF(2);
209 if (!SCM_LISTP(env_scm)) Scm_Error("list required, but got %S", env_scm);
210 env = (env_scm);
211 {
212 {
213 ScmObj SCM_RESULT;
214 SCM_RESULT = Scm_MakeIdentifier(name, mod, env);
215 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
216 }
217 }
218 }
219
220 static SCM_DEFINE_STRING_CONST(intlib_make_identifier__NAME, "make-identifier", 15, 15);
221 static SCM_DEFINE_SUBR(intlib_make_identifier__STUB, 3, 0, SCM_OBJ(&intlib_make_identifier__NAME), intlib_make_identifier, NULL, NULL);
222
223 static ScmObj intlib_find_binding(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
224 {
225 ScmObj mod_scm;
226 ScmModule* mod;
227 ScmObj name_scm;
228 ScmSymbol* name;
229 ScmObj stay_in_module_scm;
230 int stay_in_module;
231 SCM_ENTER_SUBR("find-binding");
232 mod_scm = SCM_ARGREF(0);
233 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
234 mod = SCM_MODULE(mod_scm);
235 name_scm = SCM_ARGREF(1);
236 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
237 name = SCM_SYMBOL(name_scm);
238 stay_in_module_scm = SCM_ARGREF(2);
239 if (!SCM_BOOLP(stay_in_module_scm)) Scm_Error("boolean required, but got %S", stay_in_module_scm);
240 stay_in_module = SCM_BOOL_VALUE(stay_in_module_scm);
241 {
242 {
243 ScmGloc* SCM_RESULT;
244 SCM_RESULT = (Scm_FindBinding(mod, name, stay_in_module));
245 SCM_RETURN(SCM_MAKE_MAYBE(SCM_OBJ, SCM_RESULT));
246 }
247 }
248 }
249
250 static SCM_DEFINE_STRING_CONST(intlib_find_binding__NAME, "find-binding", 12, 12);
251 static SCM_DEFINE_SUBR(intlib_find_binding__STUB, 3, 0, SCM_OBJ(&intlib_find_binding__NAME), intlib_find_binding, NULL, NULL);
252
253 static ScmObj intlib_find_const_binding(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
254 {
255 ScmObj id_scm;
256 ScmIdentifier* id;
257 SCM_ENTER_SUBR("find-const-binding");
258 id_scm = SCM_ARGREF(0);
259 if (!SCM_IDENTIFIERP(id_scm)) Scm_Error("identifier required, but got %S", id_scm);
260 id = SCM_IDENTIFIER(id_scm);
261 {
262 ScmGloc *g = Scm_FindBinding(id->module, id->name, FALSE);
263 if (!g || !SCM_GLOC_CONST_P(g)
264 || SCM_VM_COMPILER_FLAG_IS_SET(Scm_VM(), SCM_COMPILE_NOINLINE_CONSTS)) {
265 SCM_RETURN(SCM_FALSE);
266 }
267 SCM_RETURN(SCM_GLOC_GET(g));
268 }
269 }
270
271 static SCM_DEFINE_STRING_CONST(intlib_find_const_binding__NAME, "find-const-binding", 18, 18);
272 static SCM_DEFINE_SUBR(intlib_find_const_binding__STUB, 1, 0, SCM_OBJ(&intlib_find_const_binding__NAME), intlib_find_const_binding, NULL, NULL);
273
274 static ScmObj intlib__25insert_binding(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
275 {
276 ScmObj mod_scm;
277 ScmModule* mod;
278 ScmObj name_scm;
279 ScmSymbol* name;
280 ScmObj value_scm;
281 ScmObj value;
282 SCM_ENTER_SUBR("%insert-binding");
283 mod_scm = SCM_ARGREF(0);
284 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
285 mod = SCM_MODULE(mod_scm);
286 name_scm = SCM_ARGREF(1);
287 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
288 name = SCM_SYMBOL(name_scm);
289 value_scm = SCM_ARGREF(2);
290 value = (value_scm);
291 {
292 {
293 ScmObj SCM_RESULT;
294 SCM_RESULT = Scm_Define(mod, name, value);
295 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
296 }
297 }
298 }
299
300 static SCM_DEFINE_STRING_CONST(intlib__25insert_binding__NAME, "%insert-binding", 15, 15);
301 static SCM_DEFINE_SUBR(intlib__25insert_binding__STUB, 3, 0, SCM_OBJ(&intlib__25insert_binding__NAME), intlib__25insert_binding, NULL, NULL);
302
303 static ScmObj intlib__25export_symbols(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
304 {
305 ScmObj mod_scm;
306 ScmModule* mod;
307 ScmObj names_scm;
308 ScmObj names;
309 SCM_ENTER_SUBR("%export-symbols");
310 mod_scm = SCM_ARGREF(0);
311 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
312 mod = SCM_MODULE(mod_scm);
313 names_scm = SCM_ARGREF(1);
314 names = (names_scm);
315 {
316 {
317 ScmObj SCM_RESULT;
318 SCM_RESULT = Scm_ExportSymbols(mod, names);
319 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
320 }
321 }
322 }
323
324 static SCM_DEFINE_STRING_CONST(intlib__25export_symbols__NAME, "%export-symbols", 15, 15);
325 static SCM_DEFINE_SUBR(intlib__25export_symbols__STUB, 2, 0, SCM_OBJ(&intlib__25export_symbols__NAME), intlib__25export_symbols, NULL, NULL);
326
327 static ScmObj intlib__25import_modules(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
328 {
329 ScmObj mod_scm;
330 ScmModule* mod;
331 ScmObj mods_scm;
332 ScmObj mods;
333 SCM_ENTER_SUBR("%import-modules");
334 mod_scm = SCM_ARGREF(0);
335 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
336 mod = SCM_MODULE(mod_scm);
337 mods_scm = SCM_ARGREF(1);
338 mods = (mods_scm);
339 {
340 {
341 ScmObj SCM_RESULT;
342 SCM_RESULT = Scm_ImportModules(mod, mods);
343 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
344 }
345 }
346 }
347
348 static SCM_DEFINE_STRING_CONST(intlib__25import_modules__NAME, "%import-modules", 15, 15);
349 static SCM_DEFINE_SUBR(intlib__25import_modules__STUB, 2, 0, SCM_OBJ(&intlib__25import_modules__NAME), intlib__25import_modules, NULL, NULL);
350
351 static ScmObj intlib_gloc_ref(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
352 {
353 ScmObj gloc_scm;
354 ScmGloc* gloc;
355 SCM_ENTER_SUBR("gloc-ref");
356 gloc_scm = SCM_ARGREF(0);
357 if (!SCM_GLOCP(gloc_scm)) Scm_Error("GLOC required, but got %S", gloc_scm);
358 gloc = SCM_GLOC(gloc_scm);
359 {
360 {
361 ScmObj SCM_RESULT;
362 SCM_RESULT = SCM_GLOC_GET(gloc);
363 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
364 }
365 }
366 }
367
368 static SCM_DEFINE_STRING_CONST(intlib_gloc_ref__NAME, "gloc-ref", 8, 8);
369 static SCM_DEFINE_SUBR(intlib_gloc_ref__STUB, 1, 0, SCM_OBJ(&intlib_gloc_ref__NAME), intlib_gloc_ref, NULL, NULL);
370
371 static ScmObj intlib_gloc_setX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
372 {
373 ScmObj gloc_scm;
374 ScmGloc* gloc;
375 ScmObj value_scm;
376 ScmObj value;
377 SCM_ENTER_SUBR("gloc-set!");
378 gloc_scm = SCM_ARGREF(0);
379 if (!SCM_GLOCP(gloc_scm)) Scm_Error("GLOC required, but got %S", gloc_scm);
380 gloc = SCM_GLOC(gloc_scm);
381 value_scm = SCM_ARGREF(1);
382 value = (value_scm);
383 {
384 {
385 ScmObj SCM_RESULT;
386 SCM_RESULT = SCM_GLOC_SET(gloc, value);
387 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
388 }
389 }
390 }
391
392 static SCM_DEFINE_STRING_CONST(intlib_gloc_setX__NAME, "gloc-set!", 9, 9);
393 static SCM_DEFINE_SUBR(intlib_gloc_setX__STUB, 2, 0, SCM_OBJ(&intlib_gloc_setX__NAME), intlib_gloc_setX, NULL, NULL);
394
395 static ScmObj intlib_gloc_constP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
396 {
397 ScmObj gloc_scm;
398 ScmGloc* gloc;
399 SCM_ENTER_SUBR("gloc-const?");
400 gloc_scm = SCM_ARGREF(0);
401 if (!SCM_GLOCP(gloc_scm)) Scm_Error("GLOC required, but got %S", gloc_scm);
402 gloc = SCM_GLOC(gloc_scm);
403 {
404 {
405 int SCM_RESULT;
406 SCM_RESULT = SCM_GLOC_CONST_P(gloc);
407 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
408 }
409 }
410 }
411
412 static SCM_DEFINE_STRING_CONST(intlib_gloc_constP__NAME, "gloc-const?", 11, 11);
413 static SCM_DEFINE_SUBR(intlib_gloc_constP__STUB, 1, 0, SCM_OBJ(&intlib_gloc_constP__NAME), intlib_gloc_constP, NULL, NULL);
414
415 static ScmObj intlib_global_call_type(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
416 {
417 ScmObj id_scm;
418 ScmObj id;
419 SCM_ENTER_SUBR("global-call-type");
420 id_scm = SCM_ARGREF(0);
421 id = (id_scm);
422 {
423 ScmGloc *gloc = Scm_FindBinding(SCM_IDENTIFIER(id)->module,
424 SCM_IDENTIFIER(id)->name, FALSE);
425 ScmObj gval;
426 if (!gloc) SCM_RETURN(Scm_Values2(SCM_FALSE, SCM_FALSE));
427 gval = SCM_GLOC_GET(gloc);
428 if (SCM_MACROP(gval)) {
429 SCM_RETURN(Scm_Values2(gval, SCM_SYM_MACRO));
430 } else if (SCM_SYNTAXP(gval)) {
431 SCM_RETURN(Scm_Values2(gval, SCM_SYM_SYNTAX));
432 } else if (SCM_PROCEDUREP(gval)
433 && SCM_PROCEDURE_INLINER(gval)
434 && !SCM_FALSEP(SCM_PROCEDURE_INLINER(gval))
435 && !SCM_VM_COMPILER_FLAG_IS_SET(Scm_VM(),
436 SCM_COMPILE_NOINLINE_GLOBALS)) {
437 SCM_RETURN(Scm_Values2(gval, SCM_SYM_INLINE));
438 } else {
439 SCM_RETURN(Scm_Values2(SCM_FALSE, SCM_FALSE));
440 }
441 }
442 }
443
444 static SCM_DEFINE_STRING_CONST(intlib_global_call_type__NAME, "global-call-type", 16, 16);
445 static SCM_DEFINE_SUBR(intlib_global_call_type__STUB, 1, 0, SCM_OBJ(&intlib_global_call_type__NAME), intlib_global_call_type, NULL, NULL);
446
447 static ScmObj intlib_macroP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
448 {
449 ScmObj obj_scm;
450 ScmObj obj;
451 SCM_ENTER_SUBR("macro?");
452 obj_scm = SCM_ARGREF(0);
453 obj = (obj_scm);
454 {
455 {
456 int SCM_RESULT;
457 SCM_RESULT = SCM_MACROP(obj);
458 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
459 }
460 }
461 }
462
463 static SCM_DEFINE_STRING_CONST(intlib_macroP__NAME, "macro?", 6, 6);
464 static SCM_DEFINE_SUBR(intlib_macroP__STUB, 1, 0, SCM_OBJ(&intlib_macroP__NAME), intlib_macroP, NULL, NULL);
465
466 static ScmObj intlib_make_toplevel_closure(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
467 {
468 ScmObj code_scm;
469 ScmCompiledCode* code;
470 SCM_ENTER_SUBR("make-toplevel-closure");
471 code_scm = SCM_ARGREF(0);
472 if (!SCM_COMPILED_CODE_P(code_scm)) Scm_Error("compiled code required, but got %S", code_scm);
473 code = SCM_COMPILED_CODE(code_scm);
474 {
475 {
476 ScmObj SCM_RESULT;
477 SCM_RESULT = (Scm_MakeClosure(SCM_OBJ(code), NULL));
478 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
479 }
480 }
481 }
482
483 static SCM_DEFINE_STRING_CONST(intlib_make_toplevel_closure__NAME, "make-toplevel-closure", 21, 21);
484 static SCM_DEFINE_SUBR(intlib_make_toplevel_closure__STUB, 1, 0, SCM_OBJ(&intlib_make_toplevel_closure__NAME), intlib_make_toplevel_closure, NULL, NULL);
485
486 static ScmObj intlib_make_macro_transformer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
487 {
488 ScmObj name_scm;
489 ScmSymbol* name;
490 ScmObj proc_scm;
491 ScmProcedure* proc;
492 SCM_ENTER_SUBR("make-macro-transformer");
493 name_scm = SCM_ARGREF(0);
494 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
495 name = SCM_SYMBOL(name_scm);
496 proc_scm = SCM_ARGREF(1);
497 if (!SCM_PROCEDUREP(proc_scm)) Scm_Error("procedure required, but got %S", proc_scm);
498 proc = SCM_PROCEDURE(proc_scm);
499 {
500 {
501 ScmObj SCM_RESULT;
502 SCM_RESULT = Scm_MakeMacroTransformerOld(name, proc);
503 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
504 }
505 }
506 }
507
508 static SCM_DEFINE_STRING_CONST(intlib_make_macro_transformer__NAME, "make-macro-transformer", 22, 22);
509 static SCM_DEFINE_SUBR(intlib_make_macro_transformer__STUB, 2, 0, SCM_OBJ(&intlib_make_macro_transformer__NAME), intlib_make_macro_transformer, NULL, NULL);
510
511 static ScmObj intlib_compile_syntax_rules(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
512 {
513 ScmObj name_scm;
514 ScmObj name;
515 ScmObj literals_scm;
516 ScmObj literals;
517 ScmObj rules_scm;
518 ScmObj rules;
519 ScmObj mod_scm;
520 ScmObj mod;
521 ScmObj env_scm;
522 ScmObj env;
523 SCM_ENTER_SUBR("compile-syntax-rules");
524 name_scm = SCM_ARGREF(0);
525 name = (name_scm);
526 literals_scm = SCM_ARGREF(1);
527 literals = (literals_scm);
528 rules_scm = SCM_ARGREF(2);
529 rules = (rules_scm);
530 mod_scm = SCM_ARGREF(3);
531 mod = (mod_scm);
532 env_scm = SCM_ARGREF(4);
533 env = (env_scm);
534 {
535 {
536 ScmObj SCM_RESULT;
537 SCM_RESULT = Scm_CompileSyntaxRules(name, literals, rules, mod, env);
538 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
539 }
540 }
541 }
542
543 static SCM_DEFINE_STRING_CONST(intlib_compile_syntax_rules__NAME, "compile-syntax-rules", 20, 20);
544 static SCM_DEFINE_SUBR(intlib_compile_syntax_rules__STUB, 5, 0, SCM_OBJ(&intlib_compile_syntax_rules__NAME), intlib_compile_syntax_rules, NULL, NULL);
545
546 static ScmObj intlib_call_macro_expander(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
547 {
548 ScmObj mac_scm;
549 ScmMacro* mac;
550 ScmObj expr_scm;
551 ScmObj expr;
552 ScmObj env_scm;
553 ScmObj env;
554 SCM_ENTER_SUBR("call-macro-expander");
555 mac_scm = SCM_ARGREF(0);
556 if (!SCM_MACROP(mac_scm)) Scm_Error("macro required, but got %S", mac_scm);
557 mac = SCM_MACRO(mac_scm);
558 expr_scm = SCM_ARGREF(1);
559 expr = (expr_scm);
560 env_scm = SCM_ARGREF(2);
561 env = (env_scm);
562 {
563 {
564 ScmObj SCM_RESULT;
565 SCM_RESULT = Scm_CallMacroExpander(mac, expr, env);
566 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
567 }
568 }
569 }
570
571 static SCM_DEFINE_STRING_CONST(intlib_call_macro_expander__NAME, "call-macro-expander", 19, 19);
572 static SCM_DEFINE_SUBR(intlib_call_macro_expander__STUB, 3, 0, SCM_OBJ(&intlib_call_macro_expander__NAME), intlib_call_macro_expander, NULL, NULL);
573
574 static ScmObj intlib_make_syntax(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
575 {
576 ScmObj name_scm;
577 ScmSymbol* name;
578 ScmObj proc_scm;
579 ScmObj proc;
580 SCM_ENTER_SUBR("make-syntax");
581 name_scm = SCM_ARGREF(0);
582 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
583 name = SCM_SYMBOL(name_scm);
584 proc_scm = SCM_ARGREF(1);
585 proc = (proc_scm);
586 {
587 {
588 ScmObj SCM_RESULT;
589 SCM_RESULT = Scm_MakeSyntax(name, proc);
590 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
591 }
592 }
593 }
594
595 static SCM_DEFINE_STRING_CONST(intlib_make_syntax__NAME, "make-syntax", 11, 11);
596 static SCM_DEFINE_SUBR(intlib_make_syntax__STUB, 2, 0, SCM_OBJ(&intlib_make_syntax__NAME), intlib_make_syntax, NULL, NULL);
597
598 static ScmObj intlib_call_syntax_handler(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
599 {
600 ScmObj syn_scm;
601 ScmObj syn;
602 ScmObj program_scm;
603 ScmObj program;
604 ScmObj cenv_scm;
605 ScmObj cenv;
606 SCM_ENTER_SUBR("call-syntax-handler");
607 syn_scm = SCM_ARGREF(0);
608 syn = (syn_scm);
609 program_scm = SCM_ARGREF(1);
610 program = (program_scm);
611 cenv_scm = SCM_ARGREF(2);
612 cenv = (cenv_scm);
613 {
614 SCM_ASSERT(SCM_SYNTAXP(syn));
615 SCM_RETURN(Scm_VMApply2(SCM_SYNTAX(syn)->handler, program, cenv));
616 }
617 }
618
619 static SCM_DEFINE_STRING_CONST(intlib_call_syntax_handler__NAME, "call-syntax-handler", 19, 19);
620 static SCM_DEFINE_SUBR(intlib_call_syntax_handler__STUB, 3, 0, SCM_OBJ(&intlib_call_syntax_handler__NAME), intlib_call_syntax_handler, NULL, NULL);
621
622 static ScmObj intlib_syntax_handler(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
623 {
624 ScmObj syn_scm;
625 ScmObj syn;
626 SCM_ENTER_SUBR("syntax-handler");
627 syn_scm = SCM_ARGREF(0);
628 syn = (syn_scm);
629 {
630 SCM_ASSERT(SCM_SYNTAXP(syn));
631 SCM_RETURN(SCM_SYNTAX(syn)->handler);
632 }
633 }
634
635 static SCM_DEFINE_STRING_CONST(intlib_syntax_handler__NAME, "syntax-handler", 14, 14);
636 static SCM_DEFINE_SUBR(intlib_syntax_handler__STUB, 1, 0, SCM_OBJ(&intlib_syntax_handler__NAME), intlib_syntax_handler, NULL, NULL);
637
638 static ScmObj intlib__25internal_macro_expand(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
639 {
640 ScmObj form_scm;
641 ScmObj form;
642 ScmObj env_scm;
643 ScmObj env;
644 ScmObj once_scm;
645 int once;
646 SCM_ENTER_SUBR("%internal-macro-expand");
647 form_scm = SCM_ARGREF(0);
648 form = (form_scm);
649 env_scm = SCM_ARGREF(1);
650 env = (env_scm);
651 once_scm = SCM_ARGREF(2);
652 if (!SCM_BOOLP(once_scm)) Scm_Error("boolean required, but got %S", once_scm);
653 once = SCM_BOOL_VALUE(once_scm);
654 {
655 {
656 ScmObj SCM_RESULT;
657 SCM_RESULT = Scm_VMMacroExpand(form, env, once);
658 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
659 }
660 }
661 }
662
663 static SCM_DEFINE_STRING_CONST(intlib__25internal_macro_expand__NAME, "%internal-macro-expand", 22, 22);
664 static SCM_DEFINE_SUBR(intlib__25internal_macro_expand__STUB, 3, 0, SCM_OBJ(&intlib__25internal_macro_expand__NAME), intlib__25internal_macro_expand, NULL, NULL);
665
666 static ScmObj intlib__25procedure_inliner_SETTER(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
667 {
668 ScmObj proc_scm;
669 ScmProcedure* proc;
670 ScmObj inliner_scm;
671 ScmObj inliner;
672 SCM_ENTER_SUBR("(setter %procedure-inliner)");
673 proc_scm = SCM_ARGREF(0);
674 if (!SCM_PROCEDUREP(proc_scm)) Scm_Error("procedure required, but got %S", proc_scm);
675 proc = SCM_PROCEDURE(proc_scm);
676 inliner_scm = SCM_ARGREF(1);
677 inliner = (inliner_scm);
678 {
679 proc->inliner = inliner; SCM_RETURN(SCM_UNDEFINED);
680 }
681 }
682
683 static SCM_DEFINE_STRING_CONST(intlib__25procedure_inliner_SETTER__NAME, "(setter %procedure-inliner)", 27, 27);
684 static SCM_DEFINE_SUBR(intlib__25procedure_inliner_SETTER__STUB, 2, 0, SCM_OBJ(&intlib__25procedure_inliner_SETTER__NAME), intlib__25procedure_inliner_SETTER, NULL, NULL);
685
686 static ScmObj intlib__25procedure_inliner(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
687 {
688 ScmObj proc_scm;
689 ScmProcedure* proc;
690 SCM_ENTER_SUBR("%procedure-inliner");
691 proc_scm = SCM_ARGREF(0);
692 if (!SCM_PROCEDUREP(proc_scm)) Scm_Error("procedure required, but got %S", proc_scm);
693 proc = SCM_PROCEDURE(proc_scm);
694 {
695 if (proc->inliner) SCM_RETURN(proc->inliner);
696 else SCM_RETURN(SCM_FALSE);
697 }
698 }
699
700 static SCM_DEFINE_STRING_CONST(intlib__25procedure_inliner__NAME, "%procedure-inliner", 18, 18);
701 static SCM_DEFINE_SUBR(intlib__25procedure_inliner__STUB, 1, 0, SCM_OBJ(&intlib__25procedure_inliner__NAME), intlib__25procedure_inliner, NULL, NULL);
702
703 static ScmObj intlib_make_compiled_code_builder(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
704 {
705 ScmObj reqargs_scm;
706 u_int reqargs;
707 ScmObj optargs_scm;
708 u_int optargs;
709 ScmObj name_scm;
710 ScmObj name;
711 ScmObj parent_scm;
712 ScmObj parent;
713 ScmObj intform_scm;
714 ScmObj intform;
715 SCM_ENTER_SUBR("make-compiled-code-builder");
716 reqargs_scm = SCM_ARGREF(0);
717 if (!SCM_UINTP(reqargs_scm)) Scm_Error("C integer required, but got %S", reqargs_scm);
718 reqargs = Scm_GetIntegerU(reqargs_scm);
719 optargs_scm = SCM_ARGREF(1);
720 if (!SCM_UINTP(optargs_scm)) Scm_Error("C integer required, but got %S", optargs_scm);
721 optargs = Scm_GetIntegerU(optargs_scm);
722 name_scm = SCM_ARGREF(2);
723 name = (name_scm);
724 parent_scm = SCM_ARGREF(3);
725 parent = (parent_scm);
726 intform_scm = SCM_ARGREF(4);
727 intform = (intform_scm);
728 {
729 {
730 ScmObj SCM_RESULT;
731 SCM_RESULT = Scm_MakeCompiledCodeBuilder(reqargs, optargs, name, parent, intform);
732 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
733 }
734 }
735 }
736
737 static SCM_DEFINE_STRING_CONST(intlib_make_compiled_code_builder__NAME, "make-compiled-code-builder", 26, 26);
738 static SCM_DEFINE_SUBR(intlib_make_compiled_code_builder__STUB, 5, 0, SCM_OBJ(&intlib_make_compiled_code_builder__NAME), intlib_make_compiled_code_builder, NULL, NULL);
739
740 static ScmObj intlib_compiled_code_emit0X(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
741 {
742 ScmObj cc_scm;
743 ScmCompiledCode* cc;
744 ScmObj code_scm;
745 int code;
746 SCM_ENTER_SUBR("compiled-code-emit0!");
747 cc_scm = SCM_ARGREF(0);
748 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
749 cc = SCM_COMPILED_CODE(cc_scm);
750 code_scm = SCM_ARGREF(1);
751 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
752 code = Scm_GetInteger(code_scm);
753 {
754 Scm_CompiledCodeEmit(cc, code, 0, 0, SCM_FALSE, SCM_FALSE);
755 SCM_RETURN(SCM_UNDEFINED);
756 }
757 }
758
759 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit0X__NAME, "compiled-code-emit0!", 20, 20);
760 static SCM_DEFINE_SUBR(intlib_compiled_code_emit0X__STUB, 2, 0, SCM_OBJ(&intlib_compiled_code_emit0X__NAME), intlib_compiled_code_emit0X, NULL, NULL);
761
762 static ScmObj intlib_compiled_code_emit0oX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
763 {
764 ScmObj cc_scm;
765 ScmCompiledCode* cc;
766 ScmObj code_scm;
767 int code;
768 ScmObj operand_scm;
769 ScmObj operand;
770 SCM_ENTER_SUBR("compiled-code-emit0o!");
771 cc_scm = SCM_ARGREF(0);
772 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
773 cc = SCM_COMPILED_CODE(cc_scm);
774 code_scm = SCM_ARGREF(1);
775 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
776 code = Scm_GetInteger(code_scm);
777 operand_scm = SCM_ARGREF(2);
778 operand = (operand_scm);
779 {
780 Scm_CompiledCodeEmit(cc, code, 0, 0, operand, SCM_FALSE);
781 SCM_RETURN(SCM_UNDEFINED);
782 }
783 }
784
785 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit0oX__NAME, "compiled-code-emit0o!", 21, 21);
786 static SCM_DEFINE_SUBR(intlib_compiled_code_emit0oX__STUB, 3, 0, SCM_OBJ(&intlib_compiled_code_emit0oX__NAME), intlib_compiled_code_emit0oX, NULL, NULL);
787
788 static ScmObj intlib_compiled_code_emit0iX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
789 {
790 ScmObj cc_scm;
791 ScmCompiledCode* cc;
792 ScmObj code_scm;
793 int code;
794 ScmObj info_scm;
795 ScmObj info;
796 SCM_ENTER_SUBR("compiled-code-emit0i!");
797 cc_scm = SCM_ARGREF(0);
798 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
799 cc = SCM_COMPILED_CODE(cc_scm);
800 code_scm = SCM_ARGREF(1);
801 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
802 code = Scm_GetInteger(code_scm);
803 info_scm = SCM_ARGREF(2);
804 info = (info_scm);
805 {
806 Scm_CompiledCodeEmit(cc, code, 0, 0, SCM_FALSE, info);
807 SCM_RETURN(SCM_UNDEFINED);
808 }
809 }
810
811 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit0iX__NAME, "compiled-code-emit0i!", 21, 21);
812 static SCM_DEFINE_SUBR(intlib_compiled_code_emit0iX__STUB, 3, 0, SCM_OBJ(&intlib_compiled_code_emit0iX__NAME), intlib_compiled_code_emit0iX, NULL, NULL);
813
814 static ScmObj intlib_compiled_code_emit0oiX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
815 {
816 ScmObj cc_scm;
817 ScmCompiledCode* cc;
818 ScmObj code_scm;
819 int code;
820 ScmObj operand_scm;
821 ScmObj operand;
822 ScmObj info_scm;
823 ScmObj info;
824 SCM_ENTER_SUBR("compiled-code-emit0oi!");
825 cc_scm = SCM_ARGREF(0);
826 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
827 cc = SCM_COMPILED_CODE(cc_scm);
828 code_scm = SCM_ARGREF(1);
829 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
830 code = Scm_GetInteger(code_scm);
831 operand_scm = SCM_ARGREF(2);
832 operand = (operand_scm);
833 info_scm = SCM_ARGREF(3);
834 info = (info_scm);
835 {
836 Scm_CompiledCodeEmit(cc, code, 0, 0, operand, info);
837 SCM_RETURN(SCM_UNDEFINED);
838 }
839 }
840
841 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit0oiX__NAME, "compiled-code-emit0oi!", 22, 22);
842 static SCM_DEFINE_SUBR(intlib_compiled_code_emit0oiX__STUB, 4, 0, SCM_OBJ(&intlib_compiled_code_emit0oiX__NAME), intlib_compiled_code_emit0oiX, NULL, NULL);
843
844 static ScmObj intlib_compiled_code_emit1X(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
845 {
846 ScmObj cc_scm;
847 ScmCompiledCode* cc;
848 ScmObj code_scm;
849 int code;
850 ScmObj arg0_scm;
851 int arg0;
852 SCM_ENTER_SUBR("compiled-code-emit1!");
853 cc_scm = SCM_ARGREF(0);
854 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
855 cc = SCM_COMPILED_CODE(cc_scm);
856 code_scm = SCM_ARGREF(1);
857 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
858 code = Scm_GetInteger(code_scm);
859 arg0_scm = SCM_ARGREF(2);
860 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
861 arg0 = Scm_GetInteger(arg0_scm);
862 {
863 Scm_CompiledCodeEmit(cc, code, arg0, 0, SCM_FALSE, SCM_FALSE);
864 SCM_RETURN(SCM_UNDEFINED);
865 }
866 }
867
868 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit1X__NAME, "compiled-code-emit1!", 20, 20);
869 static SCM_DEFINE_SUBR(intlib_compiled_code_emit1X__STUB, 3, 0, SCM_OBJ(&intlib_compiled_code_emit1X__NAME), intlib_compiled_code_emit1X, NULL, NULL);
870
871 static ScmObj intlib_compiled_code_emit1oX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
872 {
873 ScmObj cc_scm;
874 ScmCompiledCode* cc;
875 ScmObj code_scm;
876 int code;
877 ScmObj arg0_scm;
878 int arg0;
879 ScmObj operand_scm;
880 ScmObj operand;
881 SCM_ENTER_SUBR("compiled-code-emit1o!");
882 cc_scm = SCM_ARGREF(0);
883 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
884 cc = SCM_COMPILED_CODE(cc_scm);
885 code_scm = SCM_ARGREF(1);
886 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
887 code = Scm_GetInteger(code_scm);
888 arg0_scm = SCM_ARGREF(2);
889 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
890 arg0 = Scm_GetInteger(arg0_scm);
891 operand_scm = SCM_ARGREF(3);
892 operand = (operand_scm);
893 {
894 Scm_CompiledCodeEmit(cc, code, arg0, 0, operand, SCM_FALSE);
895 SCM_RETURN(SCM_UNDEFINED);
896 }
897 }
898
899 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit1oX__NAME, "compiled-code-emit1o!", 21, 21);
900 static SCM_DEFINE_SUBR(intlib_compiled_code_emit1oX__STUB, 4, 0, SCM_OBJ(&intlib_compiled_code_emit1oX__NAME), intlib_compiled_code_emit1oX, NULL, NULL);
901
902 static ScmObj intlib_compiled_code_emit1iX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
903 {
904 ScmObj cc_scm;
905 ScmCompiledCode* cc;
906 ScmObj code_scm;
907 int code;
908 ScmObj arg0_scm;
909 int arg0;
910 ScmObj info_scm;
911 ScmObj info;
912 SCM_ENTER_SUBR("compiled-code-emit1i!");
913 cc_scm = SCM_ARGREF(0);
914 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
915 cc = SCM_COMPILED_CODE(cc_scm);
916 code_scm = SCM_ARGREF(1);
917 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
918 code = Scm_GetInteger(code_scm);
919 arg0_scm = SCM_ARGREF(2);
920 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
921 arg0 = Scm_GetInteger(arg0_scm);
922 info_scm = SCM_ARGREF(3);
923 info = (info_scm);
924 {
925 Scm_CompiledCodeEmit(cc, code, arg0, 0, SCM_FALSE, info);
926 SCM_RETURN(SCM_UNDEFINED);
927 }
928 }
929
930 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit1iX__NAME, "compiled-code-emit1i!", 21, 21);
931 static SCM_DEFINE_SUBR(intlib_compiled_code_emit1iX__STUB, 4, 0, SCM_OBJ(&intlib_compiled_code_emit1iX__NAME), intlib_compiled_code_emit1iX, NULL, NULL);
932
933 static ScmObj intlib_compiled_code_emit1oiX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
934 {
935 ScmObj cc_scm;
936 ScmCompiledCode* cc;
937 ScmObj code_scm;
938 int code;
939 ScmObj arg0_scm;
940 int arg0;
941 ScmObj operand_scm;
942 ScmObj operand;
943 ScmObj info_scm;
944 ScmObj info;
945 SCM_ENTER_SUBR("compiled-code-emit1oi!");
946 cc_scm = SCM_ARGREF(0);
947 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
948 cc = SCM_COMPILED_CODE(cc_scm);
949 code_scm = SCM_ARGREF(1);
950 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
951 code = Scm_GetInteger(code_scm);
952 arg0_scm = SCM_ARGREF(2);
953 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
954 arg0 = Scm_GetInteger(arg0_scm);
955 operand_scm = SCM_ARGREF(3);
956 operand = (operand_scm);
957 info_scm = SCM_ARGREF(4);
958 info = (info_scm);
959 {
960 Scm_CompiledCodeEmit(cc, code, arg0, 0, operand, info);
961 SCM_RETURN(SCM_UNDEFINED);
962 }
963 }
964
965 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit1oiX__NAME, "compiled-code-emit1oi!", 22, 22);
966 static SCM_DEFINE_SUBR(intlib_compiled_code_emit1oiX__STUB, 5, 0, SCM_OBJ(&intlib_compiled_code_emit1oiX__NAME), intlib_compiled_code_emit1oiX, NULL, NULL);
967
968 static ScmObj intlib_compiled_code_emit2X(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
969 {
970 ScmObj cc_scm;
971 ScmCompiledCode* cc;
972 ScmObj code_scm;
973 int code;
974 ScmObj arg0_scm;
975 int arg0;
976 ScmObj arg1_scm;
977 int arg1;
978 SCM_ENTER_SUBR("compiled-code-emit2!");
979 cc_scm = SCM_ARGREF(0);
980 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
981 cc = SCM_COMPILED_CODE(cc_scm);
982 code_scm = SCM_ARGREF(1);
983 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
984 code = Scm_GetInteger(code_scm);
985 arg0_scm = SCM_ARGREF(2);
986 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
987 arg0 = Scm_GetInteger(arg0_scm);
988 arg1_scm = SCM_ARGREF(3);
989 if (!SCM_EXACTP(arg1_scm)) Scm_Error("C integer required, but got %S", arg1_scm);
990 arg1 = Scm_GetInteger(arg1_scm);
991 {
992 Scm_CompiledCodeEmit(cc, code, arg0, arg1, SCM_FALSE, SCM_FALSE);
993 SCM_RETURN(SCM_UNDEFINED);
994 }
995 }
996
997 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit2X__NAME, "compiled-code-emit2!", 20, 20);
998 static SCM_DEFINE_SUBR(intlib_compiled_code_emit2X__STUB, 4, 0, SCM_OBJ(&intlib_compiled_code_emit2X__NAME), intlib_compiled_code_emit2X, NULL, NULL);
999
1000 static ScmObj intlib_compiled_code_emit2oX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1001 {
1002 ScmObj cc_scm;
1003 ScmCompiledCode* cc;
1004 ScmObj code_scm;
1005 int code;
1006 ScmObj arg0_scm;
1007 int arg0;
1008 ScmObj arg1_scm;
1009 int arg1;
1010 ScmObj operand_scm;
1011 ScmObj operand;
1012 SCM_ENTER_SUBR("compiled-code-emit2o!");
1013 cc_scm = SCM_ARGREF(0);
1014 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1015 cc = SCM_COMPILED_CODE(cc_scm);
1016 code_scm = SCM_ARGREF(1);
1017 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
1018 code = Scm_GetInteger(code_scm);
1019 arg0_scm = SCM_ARGREF(2);
1020 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
1021 arg0 = Scm_GetInteger(arg0_scm);
1022 arg1_scm = SCM_ARGREF(3);
1023 if (!SCM_EXACTP(arg1_scm)) Scm_Error("C integer required, but got %S", arg1_scm);
1024 arg1 = Scm_GetInteger(arg1_scm);
1025 operand_scm = SCM_ARGREF(4);
1026 operand = (operand_scm);
1027 {
1028 Scm_CompiledCodeEmit(cc, code, arg0, arg1, operand, SCM_FALSE);
1029 SCM_RETURN(SCM_UNDEFINED);
1030 }
1031 }
1032
1033 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit2oX__NAME, "compiled-code-emit2o!", 21, 21);
1034 static SCM_DEFINE_SUBR(intlib_compiled_code_emit2oX__STUB, 5, 0, SCM_OBJ(&intlib_compiled_code_emit2oX__NAME), intlib_compiled_code_emit2oX, NULL, NULL);
1035
1036 static ScmObj intlib_compiled_code_emit2iX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1037 {
1038 ScmObj cc_scm;
1039 ScmCompiledCode* cc;
1040 ScmObj code_scm;
1041 int code;
1042 ScmObj arg0_scm;
1043 int arg0;
1044 ScmObj arg1_scm;
1045 int arg1;
1046 ScmObj info_scm;
1047 ScmObj info;
1048 SCM_ENTER_SUBR("compiled-code-emit2i!");
1049 cc_scm = SCM_ARGREF(0);
1050 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1051 cc = SCM_COMPILED_CODE(cc_scm);
1052 code_scm = SCM_ARGREF(1);
1053 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
1054 code = Scm_GetInteger(code_scm);
1055 arg0_scm = SCM_ARGREF(2);
1056 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
1057 arg0 = Scm_GetInteger(arg0_scm);
1058 arg1_scm = SCM_ARGREF(3);
1059 if (!SCM_EXACTP(arg1_scm)) Scm_Error("C integer required, but got %S", arg1_scm);
1060 arg1 = Scm_GetInteger(arg1_scm);
1061 info_scm = SCM_ARGREF(4);
1062 info = (info_scm);
1063 {
1064 Scm_CompiledCodeEmit(cc, code, arg0, arg1, SCM_FALSE, info);
1065 SCM_RETURN(SCM_UNDEFINED);
1066 }
1067 }
1068
1069 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit2iX__NAME, "compiled-code-emit2i!", 21, 21);
1070 static SCM_DEFINE_SUBR(intlib_compiled_code_emit2iX__STUB, 5, 0, SCM_OBJ(&intlib_compiled_code_emit2iX__NAME), intlib_compiled_code_emit2iX, NULL, NULL);
1071
1072 static ScmObj intlib_compiled_code_emit2oiX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1073 {
1074 ScmObj cc_scm;
1075 ScmCompiledCode* cc;
1076 ScmObj code_scm;
1077 int code;
1078 ScmObj arg0_scm;
1079 int arg0;
1080 ScmObj arg1_scm;
1081 int arg1;
1082 ScmObj operand_scm;
1083 ScmObj operand;
1084 ScmObj info_scm;
1085 ScmObj info;
1086 SCM_ENTER_SUBR("compiled-code-emit2oi!");
1087 cc_scm = SCM_ARGREF(0);
1088 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1089 cc = SCM_COMPILED_CODE(cc_scm);
1090 code_scm = SCM_ARGREF(1);
1091 if (!SCM_EXACTP(code_scm)) Scm_Error("C integer required, but got %S", code_scm);
1092 code = Scm_GetInteger(code_scm);
1093 arg0_scm = SCM_ARGREF(2);
1094 if (!SCM_EXACTP(arg0_scm)) Scm_Error("C integer required, but got %S", arg0_scm);
1095 arg0 = Scm_GetInteger(arg0_scm);
1096 arg1_scm = SCM_ARGREF(3);
1097 if (!SCM_EXACTP(arg1_scm)) Scm_Error("C integer required, but got %S", arg1_scm);
1098 arg1 = Scm_GetInteger(arg1_scm);
1099 operand_scm = SCM_ARGREF(4);
1100 operand = (operand_scm);
1101 info_scm = SCM_ARGREF(5);
1102 info = (info_scm);
1103 {
1104 Scm_CompiledCodeEmit(cc, code, arg0, arg1, operand, info);
1105 SCM_RETURN(SCM_UNDEFINED);
1106 }
1107 }
1108
1109 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_emit2oiX__NAME, "compiled-code-emit2oi!", 22, 22);
1110 static SCM_DEFINE_SUBR(intlib_compiled_code_emit2oiX__STUB, 6, 0, SCM_OBJ(&intlib_compiled_code_emit2oiX__NAME), intlib_compiled_code_emit2oiX, NULL, NULL);
1111
1112 static ScmObj intlib_compiled_code_new_label(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1113 {
1114 ScmObj cc_scm;
1115 ScmCompiledCode* cc;
1116 SCM_ENTER_SUBR("compiled-code-new-label");
1117 cc_scm = SCM_ARGREF(0);
1118 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1119 cc = SCM_COMPILED_CODE(cc_scm);
1120 {
1121 {
1122 ScmObj SCM_RESULT;
1123 SCM_RESULT = Scm_CompiledCodeNewLabel(cc);
1124 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1125 }
1126 }
1127 }
1128
1129 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_new_label__NAME, "compiled-code-new-label", 23, 23);
1130 static SCM_DEFINE_SUBR(intlib_compiled_code_new_label__STUB, 1, 0, SCM_OBJ(&intlib_compiled_code_new_label__NAME), intlib_compiled_code_new_label, NULL, NULL);
1131
1132 static ScmObj intlib_compiled_code_set_labelX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1133 {
1134 ScmObj cc_scm;
1135 ScmCompiledCode* cc;
1136 ScmObj label_scm;
1137 ScmObj label;
1138 SCM_ENTER_SUBR("compiled-code-set-label!");
1139 cc_scm = SCM_ARGREF(0);
1140 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1141 cc = SCM_COMPILED_CODE(cc_scm);
1142 label_scm = SCM_ARGREF(1);
1143 label = (label_scm);
1144 {
1145 Scm_CompiledCodeSetLabel(cc, label);
1146 SCM_RETURN(SCM_UNDEFINED);
1147 }
1148 }
1149
1150 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_set_labelX__NAME, "compiled-code-set-label!", 24, 24);
1151 static SCM_DEFINE_SUBR(intlib_compiled_code_set_labelX__STUB, 2, 0, SCM_OBJ(&intlib_compiled_code_set_labelX__NAME), intlib_compiled_code_set_labelX, NULL, NULL);
1152
1153 static ScmObj intlib_compiled_code_finish_builder(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1154 {
1155 ScmObj cc_scm;
1156 ScmCompiledCode* cc;
1157 ScmObj maxstack_scm;
1158 int maxstack;
1159 SCM_ENTER_SUBR("compiled-code-finish-builder");
1160 cc_scm = SCM_ARGREF(0);
1161 if (!SCM_COMPILED_CODE_P(cc_scm)) Scm_Error("compiled code required, but got %S", cc_scm);
1162 cc = SCM_COMPILED_CODE(cc_scm);
1163 maxstack_scm = SCM_ARGREF(1);
1164 if (!SCM_EXACTP(maxstack_scm)) Scm_Error("C integer required, but got %S", maxstack_scm);
1165 maxstack = Scm_GetInteger(maxstack_scm);
1166 {
1167 Scm_CompiledCodeFinishBuilder(cc, maxstack);
1168 SCM_RETURN(SCM_UNDEFINED);
1169 }
1170 }
1171
1172 static SCM_DEFINE_STRING_CONST(intlib_compiled_code_finish_builder__NAME, "compiled-code-finish-builder", 28, 28);
1173 static SCM_DEFINE_SUBR(intlib_compiled_code_finish_builder__STUB, 2, 0, SCM_OBJ(&intlib_compiled_code_finish_builder__NAME), intlib_compiled_code_finish_builder, NULL, NULL);
1174
1175 static SCM_DEFINE_STRING_CONST(intlib_ENV_HEADER_SIZE__VAR__NAME, "ENV_HEADER_SIZE", 15, 15);
1176 static ScmObj intlib_ENV_HEADER_SIZE__VAR = SCM_UNBOUND;
1177 static SCM_DEFINE_STRING_CONST(intlib_CONT_FRAME_SIZE__VAR__NAME, "CONT_FRAME_SIZE", 15, 15);
1178 static ScmObj intlib_CONT_FRAME_SIZE__VAR = SCM_UNBOUND;
1179 static ScmObj intlib_vm_dump_code(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1180 {
1181 ScmObj code_scm;
1182 ScmCompiledCode* code;
1183 SCM_ENTER_SUBR("vm-dump-code");
1184 code_scm = SCM_ARGREF(0);
1185 if (!SCM_COMPILED_CODE_P(code_scm)) Scm_Error("compiled code required, but got %S", code_scm);
1186 code = SCM_COMPILED_CODE(code_scm);
1187 {
1188 Scm_CompiledCodeDump(code);
1189 SCM_RETURN(SCM_UNDEFINED);
1190 }
1191 }
1192
1193 static SCM_DEFINE_STRING_CONST(intlib_vm_dump_code__NAME, "vm-dump-code", 12, 12);
1194 static SCM_DEFINE_SUBR(intlib_vm_dump_code__STUB, 1, 0, SCM_OBJ(&intlib_vm_dump_code__NAME), intlib_vm_dump_code, NULL, NULL);
1195
1196 static ScmObj intlib_vm_code_TOlist(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1197 {
1198 ScmObj code_scm;
1199 ScmCompiledCode* code;
1200 SCM_ENTER_SUBR("vm-code->list");
1201 code_scm = SCM_ARGREF(0);
1202 if (!SCM_COMPILED_CODE_P(code_scm)) Scm_Error("compiled code required, but got %S", code_scm);
1203 code = SCM_COMPILED_CODE(code_scm);
1204 {
1205 {
1206 ScmObj SCM_RESULT;
1207 SCM_RESULT = Scm_CompiledCodeToList(code);
1208 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1209 }
1210 }
1211 }
1212
1213 static SCM_DEFINE_STRING_CONST(intlib_vm_code_TOlist__NAME, "vm-code->list", 13, 13);
1214 static SCM_DEFINE_SUBR(intlib_vm_code_TOlist__STUB, 1, 0, SCM_OBJ(&intlib_vm_code_TOlist__NAME), intlib_vm_code_TOlist, NULL, NULL);
1215
1216 static ScmObj intlib_vm_insn_build(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1217 {
1218 ScmObj insn_scm;
1219 ScmObj insn;
1220 SCM_ENTER_SUBR("vm-insn-build");
1221 insn_scm = SCM_ARGREF(0);
1222 insn = (insn_scm);
1223 {
1224 {
1225 u_long SCM_RESULT;
1226 SCM_RESULT = Scm_VMInsnBuild(insn);
1227 SCM_RETURN(Scm_MakeIntegerFromUI(SCM_RESULT));
1228 }
1229 }
1230 }
1231
1232 static SCM_DEFINE_STRING_CONST(intlib_vm_insn_build__NAME, "vm-insn-build", 13, 13);
1233 static SCM_DEFINE_SUBR(intlib_vm_insn_build__STUB, 1, 0, SCM_OBJ(&intlib_vm_insn_build__NAME), intlib_vm_insn_build, NULL, NULL);
1234
1235 static ScmObj intlib_vm_eval_situation(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1236 {
1237 ScmObj val_scm;
1238 ScmObj val;
1239 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
1240 SCM_ENTER_SUBR("vm-eval-situation");
1241 if (Scm_Length(SCM_OPTARGS) > 1)
1242 Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
1243 if (SCM_NULLP(SCM_OPTARGS)) val_scm = SCM_UNBOUND;
1244 else {
1245 val_scm = SCM_CAR(SCM_OPTARGS);
1246 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
1247 }
1248 val = (val_scm);
1249 {
1250 int prev;
1251 if (SCM_UNBOUNDP(val)) {
1252 SCM_RETURN(SCM_MAKE_INT(Scm_VM()->evalSituation));
1253 } else {
1254 if (!SCM_INTP(val)) Scm_Error("integer required, but got %S", val);
1255 prev = Scm_VM()->evalSituation;
1256 Scm_VM()->evalSituation = SCM_INT_VALUE(val);
1257 SCM_RETURN(SCM_MAKE_INT(prev));
1258 }
1259 }
1260 }
1261
1262 static SCM_DEFINE_STRING_CONST(intlib_vm_eval_situation__NAME, "vm-eval-situation", 17, 17);
1263 static SCM_DEFINE_SUBR(intlib_vm_eval_situation__STUB, 0, 1, SCM_OBJ(&intlib_vm_eval_situation__NAME), intlib_vm_eval_situation, NULL, NULL);
1264
1265 static SCM_DEFINE_STRING_CONST(intlib_SCM_VM_EXECUTING__VAR__NAME, "SCM_VM_EXECUTING", 16, 16);
1266 static ScmObj intlib_SCM_VM_EXECUTING__VAR = SCM_UNBOUND;
1267 static SCM_DEFINE_STRING_CONST(intlib_SCM_VM_LOADING__VAR__NAME, "SCM_VM_LOADING", 14, 14);
1268 static ScmObj intlib_SCM_VM_LOADING__VAR = SCM_UNBOUND;
1269 static SCM_DEFINE_STRING_CONST(intlib_SCM_VM_COMPILING__VAR__NAME, "SCM_VM_COMPILING", 16, 16);
1270 static ScmObj intlib_SCM_VM_COMPILING__VAR = SCM_UNBOUND;
1271 static ScmObj intlib_vm_compiler_flag_is_setP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1272 {
1273 ScmObj flag_scm;
1274 u_int flag;
1275 SCM_ENTER_SUBR("vm-compiler-flag-is-set?");
1276 flag_scm = SCM_ARGREF(0);
1277 if (!SCM_UINTEGERP(flag_scm)) Scm_Error("C integer required, but got %S", flag_scm);
1278 flag = Scm_GetIntegerU(flag_scm);
1279 {
1280 {
1281 int SCM_RESULT;
1282 SCM_RESULT = (SCM_VM_COMPILER_FLAG_IS_SET(Scm_VM(), flag));
1283 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
1284 }
1285 }
1286 }
1287
1288 static SCM_DEFINE_STRING_CONST(intlib_vm_compiler_flag_is_setP__NAME, "vm-compiler-flag-is-set?", 24, 24);
1289 static SCM_DEFINE_SUBR(intlib_vm_compiler_flag_is_setP__STUB, 1, 0, SCM_OBJ(&intlib_vm_compiler_flag_is_setP__NAME), intlib_vm_compiler_flag_is_setP, NULL, NULL);
1290
1291 static ScmObj intlib_vm_compiler_flag_setX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1292 {
1293 ScmObj flag_scm;
1294 u_int flag;
1295 SCM_ENTER_SUBR("vm-compiler-flag-set!");
1296 flag_scm = SCM_ARGREF(0);
1297 if (!SCM_UINTEGERP(flag_scm)) Scm_Error("C integer required, but got %S", flag_scm);
1298 flag = Scm_GetIntegerU(flag_scm);
1299 {
1300 SCM_VM_COMPILER_FLAG_SET(Scm_VM(), flag);
1301 SCM_RETURN(SCM_UNDEFINED);
1302 }
1303 }
1304
1305 static SCM_DEFINE_STRING_CONST(intlib_vm_compiler_flag_setX__NAME, "vm-compiler-flag-set!", 21, 21);
1306 static SCM_DEFINE_SUBR(intlib_vm_compiler_flag_setX__STUB, 1, 0, SCM_OBJ(&intlib_vm_compiler_flag_setX__NAME), intlib_vm_compiler_flag_setX, NULL, NULL);
1307
1308 static ScmObj intlib_vm_compiler_flag_clearX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1309 {
1310 ScmObj flag_scm;
1311 u_int flag;
1312 SCM_ENTER_SUBR("vm-compiler-flag-clear!");
1313 flag_scm = SCM_ARGREF(0);
1314 if (!SCM_UINTEGERP(flag_scm)) Scm_Error("C integer required, but got %S", flag_scm);
1315 flag = Scm_GetIntegerU(flag_scm);
1316 {
1317 SCM_VM_COMPILER_FLAG_CLEAR(Scm_VM(), flag);
1318 SCM_RETURN(SCM_UNDEFINED);
1319 }
1320 }
1321
1322 static SCM_DEFINE_STRING_CONST(intlib_vm_compiler_flag_clearX__NAME, "vm-compiler-flag-clear!", 23, 23);
1323 static SCM_DEFINE_SUBR(intlib_vm_compiler_flag_clearX__STUB, 1, 0, SCM_OBJ(&intlib_vm_compiler_flag_clearX__NAME), intlib_vm_compiler_flag_clearX, NULL, NULL);
1324
1325 static ScmObj intlib_vm_compiler_flag_noinline_localsP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1326 {
1327 SCM_ENTER_SUBR("vm-compiler-flag-noinline-locals?");
1328 {
1329 {
1330 int SCM_RESULT;
1331 SCM_RESULT = (SCM_VM_COMPILER_FLAG_IS_SET(Scm_VM(), SCM_COMPILE_NOINLINE_LOCALS));
1332 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
1333 }
1334 }
1335 }
1336
1337 static SCM_DEFINE_STRING_CONST(intlib_vm_compiler_flag_noinline_localsP__NAME, "vm-compiler-flag-noinline-locals?", 33, 33);
1338 static SCM_DEFINE_SUBR(intlib_vm_compiler_flag_noinline_localsP__STUB, 0, 0, SCM_OBJ(&intlib_vm_compiler_flag_noinline_localsP__NAME), intlib_vm_compiler_flag_noinline_localsP, NULL, NULL);
1339
1340 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_NOINLINE_GLOBALS__VAR__NAME, "SCM_COMPILE_NOINLINE_GLOBALS", 28, 28);
1341 static ScmObj intlib_SCM_COMPILE_NOINLINE_GLOBALS__VAR = SCM_UNBOUND;
1342 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_NOINLINE_LOCALS__VAR__NAME, "SCM_COMPILE_NOINLINE_LOCALS", 27, 27);
1343 static ScmObj intlib_SCM_COMPILE_NOINLINE_LOCALS__VAR = SCM_UNBOUND;
1344 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_NOINLINE_CONSTS__VAR__NAME, "SCM_COMPILE_NOINLINE_CONSTS", 27, 27);
1345 static ScmObj intlib_SCM_COMPILE_NOINLINE_CONSTS__VAR = SCM_UNBOUND;
1346 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_NOSOURCE__VAR__NAME, "SCM_COMPILE_NOSOURCE", 20, 20);
1347 static ScmObj intlib_SCM_COMPILE_NOSOURCE__VAR = SCM_UNBOUND;
1348 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_SHOWRESULT__VAR__NAME, "SCM_COMPILE_SHOWRESULT", 22, 22);
1349 static ScmObj intlib_SCM_COMPILE_SHOWRESULT__VAR = SCM_UNBOUND;
1350 static SCM_DEFINE_STRING_CONST(intlib_SCM_COMPILE_NOCOMBINE__VAR__NAME, "SCM_COMPILE_NOCOMBINE", 21, 21);
1351 static ScmObj intlib_SCM_COMPILE_NOCOMBINE__VAR = SCM_UNBOUND;
1352 static ScmObj intlib_vm_current_module(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1353 {
1354 SCM_ENTER_SUBR("vm-current-module");
1355 {
1356 {
1357 ScmObj SCM_RESULT;
1358 SCM_RESULT = (SCM_OBJ(Scm_VM()->module));
1359 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1360 }
1361 }
1362 }
1363
1364 static SCM_DEFINE_STRING_CONST(intlib_vm_current_module__NAME, "vm-current-module", 17, 17);
1365 static SCM_DEFINE_SUBR(intlib_vm_current_module__STUB, 0, 0, SCM_OBJ(&intlib_vm_current_module__NAME), intlib_vm_current_module, NULL, NULL);
1366
1367 static ScmObj intlib_vm_set_current_module(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1368 {
1369 ScmObj mod_scm;
1370 ScmModule* mod;
1371 SCM_ENTER_SUBR("vm-set-current-module");
1372 mod_scm = SCM_ARGREF(0);
1373 if (!SCM_MODULEP(mod_scm)) Scm_Error("module required, but got %S", mod_scm);
1374 mod = SCM_MODULE(mod_scm);
1375 {
1376 Scm_VM()->module = mod;
1377 SCM_RETURN(SCM_UNDEFINED);
1378 }
1379 }
1380
1381 static SCM_DEFINE_STRING_CONST(intlib_vm_set_current_module__NAME, "vm-set-current-module", 21, 21);
1382 static SCM_DEFINE_SUBR(intlib_vm_set_current_module__STUB, 1, 0, SCM_OBJ(&intlib_vm_set_current_module__NAME), intlib_vm_set_current_module, NULL, NULL);
1383
1384 static ScmObj intlib_gc_print_static_roots(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1385 {
1386 SCM_ENTER_SUBR("gc-print-static-roots");
1387 {
1388 GC_print_static_roots();
1389 SCM_RETURN(SCM_UNDEFINED);
1390 }
1391 }
1392
1393 static SCM_DEFINE_STRING_CONST(intlib_gc_print_static_roots__NAME, "gc-print-static-roots", 21, 21);
1394 static SCM_DEFINE_SUBR(intlib_gc_print_static_roots__STUB, 0, 0, SCM_OBJ(&intlib_gc_print_static_roots__NAME), intlib_gc_print_static_roots, NULL, NULL);
1395
1396 static ScmObj intlib_profiler_raw_result(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1397 {
1398 SCM_ENTER_SUBR("profiler-raw-result");
1399 {
1400 {
1401 ScmObj SCM_RESULT;
1402 SCM_RESULT = Scm_ProfilerRawResult();
1403 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
1404 }
1405 }
1406 }
1407
1408 static SCM_DEFINE_STRING_CONST(intlib_profiler_raw_result__NAME, "profiler-raw-result", 19, 19);
1409 static SCM_DEFINE_SUBR(intlib_profiler_raw_result__STUB, 0, 0, SCM_OBJ(&intlib_profiler_raw_result__NAME), intlib_profiler_raw_result, NULL, NULL);
1410
1411 static ScmObj intlib_cenv_lookup(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1412 {
1413 ScmObj cenv_scm;
1414 ScmObj cenv;
1415 ScmObj name_scm;
1416 ScmObj name;
1417 ScmObj lookup_as_scm;
1418 ScmObj lookup_as;
1419 SCM_ENTER_SUBR("cenv-lookup");
1420 cenv_scm = SCM_ARGREF(0);
1421 cenv = (cenv_scm);
1422 name_scm = SCM_ARGREF(1);
1423 name = (name_scm);
1424 lookup_as_scm = SCM_ARGREF(2);
1425 lookup_as = (lookup_as_scm);
1426 {
1427 ScmObj frames, fp, vp;
1428 int name_identifier = SCM_IDENTIFIERP(name);
1429 SCM_ASSERT(SCM_VECTORP(cenv));
1430 frames = SCM_VECTOR_ELEMENT(cenv, 1);
1431 SCM_FOR_EACH(fp, frames) {
1432 if (name_identifier && SCM_IDENTIFIER(name)->env == fp) {
1433 /* strip identifier if we're in the same env (kludge). */
1434 name = SCM_OBJ(SCM_IDENTIFIER(name)->name);
1435 }
1436 if (SCM_CAAR(fp) > lookup_as) continue; /* see PERFORMANCE KLUDGE above */
1437 /* We inline assq here to squeeze performance. */
1438 SCM_FOR_EACH(vp, SCM_CDAR(fp)) {
1439 if (SCM_EQ(name, SCM_CAAR(vp))) return SCM_CDAR(vp);
1440 }
1441 }
1442 if (SCM_SYMBOLP(name)) {
1443 ScmObj mod = SCM_VECTOR_ELEMENT(cenv, 0);
1444 SCM_ASSERT(SCM_MODULEP(mod));
1445 return Scm_MakeIdentifier(SCM_SYMBOL(name), SCM_MODULE(mod), SCM_NIL);
1446 } else {
1447 SCM_ASSERT(SCM_IDENTIFIERP(name));
1448 return name;
1449 }
1450
1451 }
1452 }
1453
1454 static SCM_DEFINE_STRING_CONST(intlib_cenv_lookup__NAME, "cenv-lookup", 11, 11);
1455 static SCM_DEFINE_SUBR(intlib_cenv_lookup__STUB, 3, 0, SCM_OBJ(&intlib_cenv_lookup__NAME), intlib_cenv_lookup, NULL, NULL);
1456
1457 static ScmObj intlib_cenv_toplevelP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1458 {
1459 ScmObj cenv_scm;
1460 ScmObj cenv;
1461 SCM_ENTER_SUBR("cenv-toplevel?");
1462 cenv_scm = SCM_ARGREF(0);
1463 cenv = (cenv_scm);
1464 {
1465 ScmObj fp;
1466 SCM_ASSERT(SCM_VECTORP(cenv));
1467 SCM_FOR_EACH(fp, SCM_VECTOR_ELEMENT(cenv, 1)) {
1468 if (SCM_CAAR(fp) == SCM_MAKE_INT(0)) return SCM_FALSE;
1469 }
1470 return SCM_TRUE;
1471 }
1472 }
1473
1474 static SCM_DEFINE_STRING_CONST(intlib_cenv_toplevelP__NAME, "cenv-toplevel?", 14, 14);
1475 static SCM_DEFINE_SUBR(intlib_cenv_toplevelP__STUB, 1, 0, SCM_OBJ(&intlib_cenv_toplevelP__NAME), intlib_cenv_toplevelP, NULL, NULL);
1476
1477 static ScmObj intlib_renv_lookup(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1478 {
1479 ScmObj renv_scm;
1480 ScmObj renv;
1481 ScmObj lvar_scm;
1482 ScmObj lvar;
1483 SCM_ENTER_SUBR("renv-lookup");
1484 renv_scm = SCM_ARGREF(0);
1485 renv = (renv_scm);
1486 lvar_scm = SCM_ARGREF(1);
1487 lvar = (lvar_scm);
1488 {
1489 ScmObj fp, lp;
1490 int depth = 0;
1491 SCM_FOR_EACH(fp, renv) {
1492 int count = 1;
1493 SCM_FOR_EACH(lp, SCM_CAR(fp)) {
1494 if (SCM_EQ(SCM_CAR(lp), lvar)) {
1495 return Scm_Values2(SCM_MAKE_INT(depth),
1496 SCM_MAKE_INT(Scm_Length(SCM_CAR(fp))-count));
1497 }
1498 count++;
1499 }
1500 depth++;
1501 }
1502 Scm_Error("[internal error] stray local variable:", lvar);
1503 SCM_RETURN(SCM_UNDEFINED); /* dummy */
1504
1505 }
1506 }
1507
1508 static SCM_DEFINE_STRING_CONST(intlib_renv_lookup__NAME, "renv-lookup", 11, 11);
1509 static SCM_DEFINE_SUBR(intlib_renv_lookup__STUB, 2, 0, SCM_OBJ(&intlib_renv_lookup__NAME), intlib_renv_lookup, NULL, NULL);
1510
1511 static SCM_DEFINE_STRING_CONST(sym_lvar__NAME, "lvar", 4, 4);
1512 static ScmObj sym_lvar = SCM_UNBOUND;
1513 #define LVAR_OFFSET_TAG 0
1514 #define LVAR_OFFSET_NAME 1
1515 #define LVAR_OFFSET_INITVAL 2
1516 #define LVAR_OFFSET_REF_COUNT 3
1517 #define LVAR_OFFSET_SET_COUNT 4
1518 #define LVAR_SIZE 5
1519
1520 static ScmObj intlib__25map_make_lvar(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1521 {
1522 ScmObj names_scm;
1523 ScmObj names;
1524 SCM_ENTER_SUBR("%map-make-lvar");
1525 names_scm = SCM_ARGREF(0);
1526 names = (names_scm);
1527 {
1528 ScmObj h = SCM_NIL, t = SCM_NIL;
1529 SCM_FOR_EACH(names, names) {
1530 ScmObj v = Scm_MakeVector(LVAR_SIZE, SCM_MAKE_INT(0));
1531 SCM_VECTOR_ELEMENT(v, LVAR_OFFSET_TAG) = sym_lvar;
1532 SCM_VECTOR_ELEMENT(v, LVAR_OFFSET_NAME) = SCM_CAR(names);
1533 SCM_VECTOR_ELEMENT(v, LVAR_OFFSET_INITVAL) = SCM_UNDEFINED;
1534 SCM_APPEND1(h, t, v);
1535 }
1536 SCM_RETURN(h);
1537 }
1538 }
1539
1540 static SCM_DEFINE_STRING_CONST(intlib__25map_make_lvar__NAME, "%map-make-lvar", 14, 14);
1541 static SCM_DEFINE_SUBR(intlib__25map_make_lvar__STUB, 1, 0, SCM_OBJ(&intlib__25map_make_lvar__NAME), intlib__25map_make_lvar, NULL, NULL);
1542
1543 static ScmObj intlib_lvar_ref_2b_2bX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1544 {
1545 ScmObj lvar_scm;
1546 ScmObj lvar;
1547 SCM_ENTER_SUBR("lvar-ref++!");
1548 lvar_scm = SCM_ARGREF(0);
1549 lvar = (lvar_scm);
1550 {
1551 int i;
1552 SCM_ASSERT(SCM_VECTORP(lvar));
1553 i = SCM_INT_VALUE(SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_REF_COUNT));
1554 SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_REF_COUNT) = SCM_MAKE_INT(i+1);
1555 SCM_RETURN(SCM_UNDEFINED);
1556 }
1557 }
1558
1559 static SCM_DEFINE_STRING_CONST(intlib_lvar_ref_2b_2bX__NAME, "lvar-ref++!", 11, 11);
1560 static SCM_DEFINE_SUBR(intlib_lvar_ref_2b_2bX__STUB, 1, 0, SCM_OBJ(&intlib_lvar_ref_2b_2bX__NAME), intlib_lvar_ref_2b_2bX, NULL, NULL);
1561
1562 static ScmObj intlib_lvar_ref__X(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1563 {
1564 ScmObj lvar_scm;
1565 ScmObj lvar;
1566 SCM_ENTER_SUBR("lvar-ref--!");
1567 lvar_scm = SCM_ARGREF(0);
1568 lvar = (lvar_scm);
1569 {
1570 int i;
1571 SCM_ASSERT(SCM_VECTORP(lvar));
1572 i = SCM_INT_VALUE(SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_REF_COUNT));
1573 SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_REF_COUNT) = SCM_MAKE_INT(i-1);
1574 SCM_RETURN(SCM_UNDEFINED);
1575 }
1576 }
1577
1578 static SCM_DEFINE_STRING_CONST(intlib_lvar_ref__X__NAME, "lvar-ref--!", 11, 11);
1579 static SCM_DEFINE_SUBR(intlib_lvar_ref__X__STUB, 1, 0, SCM_OBJ(&intlib_lvar_ref__X__NAME), intlib_lvar_ref__X, NULL, NULL);
1580
1581 static ScmObj intlib_lvar_set_2b_2bX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1582 {
1583 ScmObj lvar_scm;
1584 ScmObj lvar;
1585 SCM_ENTER_SUBR("lvar-set++!");
1586 lvar_scm = SCM_ARGREF(0);
1587 lvar = (lvar_scm);
1588 {
1589 int i;
1590 SCM_ASSERT(SCM_VECTORP(lvar));
1591 i = SCM_INT_VALUE(SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_SET_COUNT));
1592 SCM_VECTOR_ELEMENT(lvar, LVAR_OFFSET_SET_COUNT) = SCM_MAKE_INT(i+1);
1593 SCM_RETURN(SCM_UNDEFINED);
1594 }
1595 }
1596
1597 static SCM_DEFINE_STRING_CONST(intlib_lvar_set_2b_2bX__NAME, "lvar-set++!", 11, 11);
1598 static SCM_DEFINE_SUBR(intlib_lvar_set_2b_2bX__STUB, 1, 0, SCM_OBJ(&intlib_lvar_set_2b_2bX__NAME), intlib_lvar_set_2b_2bX, NULL, NULL);
1599
1600 static ScmObj intlib__25imax(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1601 {
1602 ScmObj x_scm;
1603 ScmObj x;
1604 ScmObj y_scm;
1605 ScmObj y;
1606 SCM_ENTER_SUBR("%imax");
1607 x_scm = SCM_ARGREF(0);
1608 x = (x_scm);
1609 y_scm = SCM_ARGREF(1);
1610 y = (y_scm);
1611 {
1612 if (SCM_WORD(x) > SCM_WORD(y)) SCM_RETURN(x);
1613 else SCM_RETURN(y);
1614 }
1615 }
1616
1617 static SCM_DEFINE_STRING_CONST(intlib__25imax__NAME, "%imax", 5, 5);
1618 static SCM_DEFINE_SUBR(intlib__25imax__STUB, 2, 0, SCM_OBJ(&intlib__25imax__NAME), intlib__25imax, NULL, NULL);
1619
1620 static ScmObj map1c_cc(ScmObj result, void *data[])
1621 {
1622 ScmObj proc = SCM_OBJ(data[0]);
1623 ScmObj r = SCM_OBJ(data[1]);
1624 ScmObj lis = SCM_OBJ(data[2]);
1625 ScmObj c = SCM_OBJ(data[3]);
1626 if (SCM_NULLP(lis)) {
1627 SCM_RETURN(Scm_ReverseX(Scm_Cons(result, r)));
1628 } else {
1629 data[1] = Scm_Cons(result, r);
1630 data[2] = SCM_CDR(lis);
1631 Scm_VMPushCC(map1c_cc, data, 4);
1632 SCM_RETURN(Scm_VMApply2(proc, SCM_CAR(lis), c));
1633 }
1634 }
1635 static ScmObj intlib__25map1c(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1636 {
1637 ScmObj proc_scm;
1638 ScmObj proc;
1639 ScmObj lis_scm;
1640 ScmObj lis;
1641 ScmObj c_scm;
1642 ScmObj c;
1643 SCM_ENTER_SUBR("%map1c");
1644 proc_scm = SCM_ARGREF(0);
1645 proc = (proc_scm);
1646 lis_scm = SCM_ARGREF(1);
1647 lis = (lis_scm);
1648 c_scm = SCM_ARGREF(2);
1649 c = (c_scm);
1650 {
1651 void *data[4];
1652 if (SCM_NULLP(lis)) SCM_RETURN(SCM_NIL);
1653 data[0] = proc;
1654 data[1] = SCM_NIL;
1655 data[2] = SCM_CDR(lis);
1656 data[3] = c;
1657 Scm_VMPushCC(map1c_cc, data, 4);
1658 SCM_RETURN(Scm_VMApply2(proc, SCM_CAR(lis), c));
1659 }
1660 }
1661
1662 static SCM_DEFINE_STRING_CONST(intlib__25map1c__NAME, "%map1c", 6, 6);
1663 static SCM_DEFINE_SUBR(intlib__25map1c__STUB, 3, 0, SCM_OBJ(&intlib__25map1c__NAME), intlib__25map1c, NULL, NULL);
1664
1665 static ScmObj map1cc_cc(ScmObj result, void *data[])
1666 {
1667 ScmObj proc = SCM_OBJ(data[0]);
1668 ScmObj r = SCM_OBJ(data[1]);
1669 ScmObj lis = SCM_OBJ(data[2]);
1670 ScmObj c1 = SCM_OBJ(data[3]);
1671 ScmObj c2 = SCM_OBJ(data[4]);
1672 if (SCM_NULLP(lis)) {
1673 SCM_RETURN(Scm_ReverseX(Scm_Cons(result, r)));
1674 } else {
1675 data[1] = Scm_Cons(result, r);
1676 data[2] = SCM_CDR(lis);
1677 Scm_VMPushCC(map1cc_cc, data, 5);
1678 SCM_RETURN(Scm_VMApply3(proc, SCM_CAR(lis), c1, c2));
1679 }
1680 }
1681 static ScmObj intlib__25map1cc(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1682 {
1683 ScmObj proc_scm;
1684 ScmObj proc;
1685 ScmObj lis_scm;
1686 ScmObj lis;
1687 ScmObj c1_scm;
1688 ScmObj c1;
1689 ScmObj c2_scm;
1690 ScmObj c2;
1691 SCM_ENTER_SUBR("%map1cc");
1692 proc_scm = SCM_ARGREF(0);
1693 proc = (proc_scm);
1694 lis_scm = SCM_ARGREF(1);
1695 lis = (lis_scm);
1696 c1_scm = SCM_ARGREF(2);
1697 c1 = (c1_scm);
1698 c2_scm = SCM_ARGREF(3);
1699 c2 = (c2_scm);
1700 {
1701 void *data[5];
1702 if (SCM_NULLP(lis)) SCM_RETURN(SCM_NIL);
1703 data[0] = proc;
1704 data[1] = SCM_NIL;
1705 data[2] = SCM_CDR(lis);
1706 data[3] = c1;
1707 data[4] = c2;
1708 Scm_VMPushCC(map1cc_cc, data, 5);
1709 SCM_RETURN(Scm_VMApply3(proc, SCM_CAR(lis), c1, c2));
1710 }
1711 }
1712
1713 static SCM_DEFINE_STRING_CONST(intlib__25map1cc__NAME, "%map1cc", 7, 7);
1714 static SCM_DEFINE_SUBR(intlib__25map1cc__STUB, 4, 0, SCM_OBJ(&intlib__25map1cc__NAME), intlib__25map1cc, NULL, NULL);
1715
1716 static ScmObj intlib__25map_cons(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
1717 {
1718 ScmObj lis1_scm;
1719 ScmObj lis1;
1720 ScmObj lis2_scm;
1721 ScmObj lis2;
1722 SCM_ENTER_SUBR("%map-cons");
1723 lis1_scm = SCM_ARGREF(0);
1724 lis1 = (lis1_scm);
1725 lis2_scm = SCM_ARGREF(1);
1726 lis2 = (lis2_scm);
1727 {
1728 ScmObj h = SCM_NIL, t = SCM_NIL;
1729 while (SCM_PAIRP(lis1) && SCM_PAIRP(lis2)) {
1730 SCM_APPEND1(h, t, Scm_Cons(SCM_CAR(lis1), SCM_CAR(lis2)));
1731 lis1 = SCM_CDR(lis1);
1732 lis2 = SCM_CDR(lis2);
1733 }
1734 SCM_RETURN(h);
1735 }
1736 }
1737
1738 static SCM_DEFINE_STRING_CONST(intlib__25map_cons__NAME, "%map-cons", 9, 9);
1739 static SCM_DEFINE_SUBR(intlib__25map_cons__STUB, 2, 0, SCM_OBJ(&intlib__25map_cons__NAME), intlib__25map_cons, NULL, NULL);
1740
1741 void Scm_Init_intlib(ScmModule *module)
1742 {
1743
1744 SCM_DEFINE(module, "%map-cons", SCM_OBJ(&intlib__25map_cons__STUB));
1745 SCM_DEFINE(module, "%map1cc", SCM_OBJ(&intlib__25map1cc__STUB));
1746 SCM_DEFINE(module, "%map1c", SCM_OBJ(&intlib__25map1c__STUB));
1747 SCM_DEFINE(module, "%imax", SCM_OBJ(&intlib__25imax__STUB));
1748 SCM_DEFINE(module, "lvar-set++!", SCM_OBJ(&intlib_lvar_set_2b_2bX__STUB));
1749 SCM_DEFINE(module, "lvar-ref--!", SCM_OBJ(&intlib_lvar_ref__X__STUB));
1750 SCM_DEFINE(module, "lvar-ref++!", SCM_OBJ(&intlib_lvar_ref_2b_2bX__STUB));
1751 SCM_DEFINE(module, "%map-make-lvar", SCM_OBJ(&intlib__25map_make_lvar__STUB));
1752 sym_lvar = Scm_Intern(&sym_lvar__NAME);
1753 SCM_DEFINE(module, "renv-lookup", SCM_OBJ(&intlib_renv_lookup__STUB));
1754 SCM_DEFINE(module, "cenv-toplevel?", SCM_OBJ(&intlib_cenv_toplevelP__STUB));
1755 SCM_DEFINE(module, "cenv-lookup", SCM_OBJ(&intlib_cenv_lookup__STUB));
1756 SCM_DEFINE(module, "profiler-raw-result", SCM_OBJ(&intlib_profiler_raw_result__STUB));
1757 SCM_DEFINE(module, "gc-print-static-roots", SCM_OBJ(&intlib_gc_print_static_roots__STUB));
1758 SCM_DEFINE(module, "vm-set-current-module", SCM_OBJ(&intlib_vm_set_current_module__STUB));
1759 SCM_DEFINE(module, "vm-current-module", SCM_OBJ(&intlib_vm_current_module__STUB));
1760 intlib_SCM_COMPILE_NOCOMBINE__VAR = Scm_Intern(&intlib_SCM_COMPILE_NOCOMBINE__VAR__NAME);
1761 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_NOCOMBINE__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_NOCOMBINE)));
1762 intlib_SCM_COMPILE_SHOWRESULT__VAR = Scm_Intern(&intlib_SCM_COMPILE_SHOWRESULT__VAR__NAME);
1763 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_SHOWRESULT__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_SHOWRESULT)));
1764 intlib_SCM_COMPILE_NOSOURCE__VAR = Scm_Intern(&intlib_SCM_COMPILE_NOSOURCE__VAR__NAME);
1765 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_NOSOURCE__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_NOSOURCE)));
1766 intlib_SCM_COMPILE_NOINLINE_CONSTS__VAR = Scm_Intern(&intlib_SCM_COMPILE_NOINLINE_CONSTS__VAR__NAME);
1767 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_NOINLINE_CONSTS__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_NOINLINE_CONSTS)));
1768 intlib_SCM_COMPILE_NOINLINE_LOCALS__VAR = Scm_Intern(&intlib_SCM_COMPILE_NOINLINE_LOCALS__VAR__NAME);
1769 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_NOINLINE_LOCALS__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_NOINLINE_LOCALS)));
1770 intlib_SCM_COMPILE_NOINLINE_GLOBALS__VAR = Scm_Intern(&intlib_SCM_COMPILE_NOINLINE_GLOBALS__VAR__NAME);
1771 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_COMPILE_NOINLINE_GLOBALS__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_COMPILE_NOINLINE_GLOBALS)));
1772 SCM_DEFINE(module, "vm-compiler-flag-noinline-locals?", SCM_OBJ(&intlib_vm_compiler_flag_noinline_localsP__STUB));
1773 SCM_DEFINE(module, "vm-compiler-flag-clear!", SCM_OBJ(&intlib_vm_compiler_flag_clearX__STUB));
1774 SCM_DEFINE(module, "vm-compiler-flag-set!", SCM_OBJ(&intlib_vm_compiler_flag_setX__STUB));
1775 SCM_DEFINE(module, "vm-compiler-flag-is-set?", SCM_OBJ(&intlib_vm_compiler_flag_is_setP__STUB));
1776 intlib_SCM_VM_COMPILING__VAR = Scm_Intern(&intlib_SCM_VM_COMPILING__VAR__NAME);
1777 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_VM_COMPILING__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_VM_COMPILING)));
1778 intlib_SCM_VM_LOADING__VAR = Scm_Intern(&intlib_SCM_VM_LOADING__VAR__NAME);
1779 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_VM_LOADING__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_VM_LOADING)));
1780 intlib_SCM_VM_EXECUTING__VAR = Scm_Intern(&intlib_SCM_VM_EXECUTING__VAR__NAME);
1781 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_SCM_VM_EXECUTING__VAR)), SCM_OBJ(Scm_MakeInteger(SCM_VM_EXECUTING)));
1782 SCM_DEFINE(module, "vm-eval-situation", SCM_OBJ(&intlib_vm_eval_situation__STUB));
1783 SCM_DEFINE(module, "vm-insn-build", SCM_OBJ(&intlib_vm_insn_build__STUB));
1784 SCM_DEFINE(module, "vm-code->list", SCM_OBJ(&intlib_vm_code_TOlist__STUB));
1785 SCM_DEFINE(module, "vm-dump-code", SCM_OBJ(&intlib_vm_dump_code__STUB));
1786 intlib_CONT_FRAME_SIZE__VAR = Scm_Intern(&intlib_CONT_FRAME_SIZE__VAR__NAME);
1787 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_CONT_FRAME_SIZE__VAR)), SCM_OBJ(SCM_MAKE_INT(CONT_FRAME_SIZE)));
1788 intlib_ENV_HEADER_SIZE__VAR = Scm_Intern(&intlib_ENV_HEADER_SIZE__VAR__NAME);
1789 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(intlib_ENV_HEADER_SIZE__VAR)), SCM_OBJ(SCM_MAKE_INT(ENV_SIZE(0))));
1790 SCM_DEFINE(module, "compiled-code-finish-builder", SCM_OBJ(&intlib_compiled_code_finish_builder__STUB));
1791 SCM_DEFINE(module, "compiled-code-set-label!", SCM_OBJ(&intlib_compiled_code_set_labelX__STUB));
1792 SCM_DEFINE(module, "compiled-code-new-label", SCM_OBJ(&intlib_compiled_code_new_label__STUB));
1793 SCM_DEFINE(module, "compiled-code-emit2oi!", SCM_OBJ(&intlib_compiled_code_emit2oiX__STUB));
1794 SCM_DEFINE(module, "compiled-code-emit2i!", SCM_OBJ(&intlib_compiled_code_emit2iX__STUB));
1795 SCM_DEFINE(module, "compiled-code-emit2o!", SCM_OBJ(&intlib_compiled_code_emit2oX__STUB));
1796 SCM_DEFINE(module, "compiled-code-emit2!", SCM_OBJ(&intlib_compiled_code_emit2X__STUB));
1797 SCM_DEFINE(module, "compiled-code-emit1oi!", SCM_OBJ(&intlib_compiled_code_emit1oiX__STUB));
1798 SCM_DEFINE(module, "compiled-code-emit1i!", SCM_OBJ(&intlib_compiled_code_emit1iX__STUB));
1799 SCM_DEFINE(module, "compiled-code-emit1o!", SCM_OBJ(&intlib_compiled_code_emit1oX__STUB));
1800 SCM_DEFINE(module, "compiled-code-emit1!", SCM_OBJ(&intlib_compiled_code_emit1X__STUB));
1801 SCM_DEFINE(module, "compiled-code-emit0oi!", SCM_OBJ(&intlib_compiled_code_emit0oiX__STUB));
1802 SCM_DEFINE(module, "compiled-code-emit0i!", SCM_OBJ(&intlib_compiled_code_emit0iX__STUB));
1803 SCM_DEFINE(module, "compiled-code-emit0o!", SCM_OBJ(&intlib_compiled_code_emit0oX__STUB));
1804 SCM_DEFINE(module, "compiled-code-emit0!", SCM_OBJ(&intlib_compiled_code_emit0X__STUB));
1805 SCM_DEFINE(module, "make-compiled-code-builder", SCM_OBJ(&intlib_make_compiled_code_builder__STUB));
1806 SCM_DEFINE(module, "%procedure-inliner", SCM_OBJ(&intlib__25procedure_inliner__STUB));
1807 Scm_SetterSet(SCM_PROCEDURE(&intlib__25procedure_inliner__STUB), SCM_PROCEDURE(&intlib__25procedure_inliner_SETTER__STUB), TRUE);
1808 SCM_DEFINE(module, "%internal-macro-expand", SCM_OBJ(&intlib__25internal_macro_expand__STUB));
1809 SCM_DEFINE(module, "syntax-handler", SCM_OBJ(&intlib_syntax_handler__STUB));
1810 SCM_DEFINE(module, "call-syntax-handler", SCM_OBJ(&intlib_call_syntax_handler__STUB));
1811 SCM_DEFINE(module, "make-syntax", SCM_OBJ(&intlib_make_syntax__STUB));
1812 SCM_DEFINE(module, "call-macro-expander", SCM_OBJ(&intlib_call_macro_expander__STUB));
1813 SCM_DEFINE(module, "compile-syntax-rules", SCM_OBJ(&intlib_compile_syntax_rules__STUB));
1814 SCM_DEFINE(module, "make-macro-transformer", SCM_OBJ(&intlib_make_macro_transformer__STUB));
1815 SCM_DEFINE(module, "make-toplevel-closure", SCM_OBJ(&intlib_make_toplevel_closure__STUB));
1816 SCM_DEFINE(module, "macro?", SCM_OBJ(&intlib_macroP__STUB));
1817 SCM_DEFINE(module, "global-call-type", SCM_OBJ(&intlib_global_call_type__STUB));
1818 SCM_DEFINE(module, "gloc-const?", SCM_OBJ(&intlib_gloc_constP__STUB));
1819 SCM_DEFINE(module, "gloc-set!", SCM_OBJ(&intlib_gloc_setX__STUB));
1820 SCM_DEFINE(module, "gloc-ref", SCM_OBJ(&intlib_gloc_ref__STUB));
1821 SCM_DEFINE(module, "%import-modules", SCM_OBJ(&intlib__25import_modules__STUB));
1822 SCM_DEFINE(module, "%export-symbols", SCM_OBJ(&intlib__25export_symbols__STUB));
1823 SCM_DEFINE(module, "%insert-binding", SCM_OBJ(&intlib__25insert_binding__STUB));
1824 SCM_DEFINE(module, "find-const-binding", SCM_OBJ(&intlib_find_const_binding__STUB));
1825 SCM_DEFINE(module, "find-binding", SCM_OBJ(&intlib_find_binding__STUB));
1826 SCM_DEFINE(module, "make-identifier", SCM_OBJ(&intlib_make_identifier__STUB));
1827 SCM_DEFINE(module, "make-syntactic-closure", SCM_OBJ(&intlib_make_syntactic_closure__STUB));
1828 SCM_DEFINE(module, "extended-list", SCM_OBJ(&intlib_extended_list__STUB));
1829 SCM_DEFINE(module, "extended-cons", SCM_OBJ(&intlib_extended_cons__STUB));
1830 SCM_DEFINE(module, "extended-pair?", SCM_OBJ(&intlib_extended_pairP__STUB));
1831 SCM_DEFINE(module, "pair-attribute-set!", SCM_OBJ(&intlib_pair_attribute_setX__STUB));
1832 SCM_DEFINE(module, "pair-attribute-get", SCM_OBJ(&intlib_pair_attribute_get__STUB));
1833 SCM_DEFINE(module, "pair-attributes", SCM_OBJ(&intlib_pair_attributes__STUB));
1834 }