root/src/intlib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. intlib_pair_attributes
  2. intlib_pair_attribute_get
  3. intlib_pair_attribute_setX
  4. intlib_extended_pairP
  5. intlib_extended_cons
  6. intlib_extended_list
  7. intlib_make_syntactic_closure
  8. intlib_make_identifier
  9. intlib_find_binding
  10. intlib_find_const_binding
  11. intlib__25insert_binding
  12. intlib__25export_symbols
  13. intlib__25import_modules
  14. intlib_gloc_ref
  15. intlib_gloc_setX
  16. intlib_gloc_constP
  17. intlib_global_call_type
  18. intlib_macroP
  19. intlib_make_toplevel_closure
  20. intlib_make_macro_transformer
  21. intlib_compile_syntax_rules
  22. intlib_call_macro_expander
  23. intlib_make_syntax
  24. intlib_call_syntax_handler
  25. intlib_syntax_handler
  26. intlib__25internal_macro_expand
  27. intlib__25procedure_inliner_SETTER
  28. intlib__25procedure_inliner
  29. intlib_make_compiled_code_builder
  30. intlib_compiled_code_emit0X
  31. intlib_compiled_code_emit0oX
  32. intlib_compiled_code_emit0iX
  33. intlib_compiled_code_emit0oiX
  34. intlib_compiled_code_emit1X
  35. intlib_compiled_code_emit1oX
  36. intlib_compiled_code_emit1iX
  37. intlib_compiled_code_emit1oiX
  38. intlib_compiled_code_emit2X
  39. intlib_compiled_code_emit2oX
  40. intlib_compiled_code_emit2iX
  41. intlib_compiled_code_emit2oiX
  42. intlib_compiled_code_new_label
  43. intlib_compiled_code_set_labelX
  44. intlib_compiled_code_finish_builder
  45. intlib_vm_dump_code
  46. intlib_vm_code_TOlist
  47. intlib_vm_insn_build
  48. intlib_vm_eval_situation
  49. intlib_vm_compiler_flag_is_setP
  50. intlib_vm_compiler_flag_setX
  51. intlib_vm_compiler_flag_clearX
  52. intlib_vm_compiler_flag_noinline_localsP
  53. intlib_vm_current_module
  54. intlib_vm_set_current_module
  55. intlib_gc_print_static_roots
  56. intlib_profiler_raw_result
  57. intlib_cenv_lookup
  58. intlib_cenv_toplevelP
  59. intlib_renv_lookup
  60. intlib__25map_make_lvar
  61. intlib_lvar_ref_2b_2bX
  62. intlib_lvar_ref__X
  63. intlib_lvar_set_2b_2bX
  64. intlib__25imax
  65. map1c_cc
  66. intlib__25map1c
  67. map1cc_cc
  68. intlib__25map1cc
  69. intlib__25map_cons
  70. 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 }

/* [<][>][^][v][top][bottom][index][help] */