Welcome to the CHICKEN Scheme pasting service
codegen for define-external pasted by wasamasa on Mon Dec 19 21:13:22 2016
(module readline-test ()
(import chicken scheme foreign)
(define-external (callback_test ((const c-string) foo) (int bar)) c-string
(string-append "foo" "bar"))
)
generated code added by wasamasa on Mon Dec 19 21:13:44 2016
/* Generated from readline-test.scm by the CHICKEN compiler http://www.call-cc.org 2016-12-19 21:11 Version 4.11.0 (rev ce980c4) linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ] compiled 2016-05-28 on yves.more-magic.net (Linux) command line: readline-test.scm -output-file readline-test.c used units: library eval chicken_2dsyntax */ #include "chicken.h" C_externexport char * callback_test(const char * t0,int t1); static C_PTABLE_ENTRY *create_ptable(void); C_noret_decl(C_library_toplevel) C_externimport void C_ccall C_library_toplevel(C_word c,C_word *av) C_noret; C_noret_decl(C_eval_toplevel) C_externimport void C_ccall C_eval_toplevel(C_word c,C_word *av) C_noret; C_noret_decl(C_chicken_2dsyntax_toplevel) C_externimport void C_ccall C_chicken_2dsyntax_toplevel(C_word c,C_word *av) C_noret; static C_TLS C_word lf[6]; static double C_possibly_force_alignment; static C_char C_TLS li0[] C_aligned={C_lihdr(0,0,41),40,114,101,97,100,108,105,110,101,45,116,101,115,116,35,99,97,108,108,98,97,99,107,95,116,101,115,116,32,102,111,111,49,48,32,98,97,114,49,49,41,0,0,0,0,0,0,0}; static C_char C_TLS li1[] C_aligned={C_lihdr(0,0,10),40,116,111,112,108,101,118,101,108,41,0,0,0,0,0,0}; C_noret_decl(f_219) static void C_ccall f_219(C_word c,C_word *av) C_noret; C_noret_decl(f_216) static void C_ccall f_216(C_word c,C_word *av) C_noret; C_noret_decl(f_224) static void C_ccall f_224(C_word c,C_word *av) C_noret; C_noret_decl(f_222) static void C_ccall f_222(C_word c,C_word *av) C_noret; C_noret_decl(f_228) static void C_ccall f_228(C_word c,C_word *av) C_noret; C_noret_decl(C_toplevel) C_externexport void C_ccall C_toplevel(C_word c,C_word *av) C_noret; C_noret_decl(f_240) static void C_ccall f_240(C_word c,C_word *av) C_noret; C_noret_decl(f_243) static void C_ccall f_243(C_word c,C_word *av) C_noret; /* from readline-test#callback_test */ char * callback_test(const char * t0,int t1){ C_word x,s=0+2+(t0==NULL?1:C_bytestowords(C_strlen(t0))),*a=C_alloc(s); C_callback_adjust_stack(a,s); x=C_fix((C_word)t1); C_save(x); x=C_mpointer(&a,(void*)t0); C_save(x); return C_string_or_null(C_callback_wrapper((void *)f_224,2));} /* k217 in k214 */ static void C_ccall f_219(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(3,c,2))){C_save_and_reclaim((void *)f_219,2,av);} a=C_alloc(3); t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_222,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=C_SCHEME_UNDEFINED; av2[1]=t2; C_chicken_2dsyntax_toplevel(2,av2);}} /* k214 */ static void C_ccall f_216(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(3,c,2))){C_save_and_reclaim((void *)f_216,2,av);} a=C_alloc(3); t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_219,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp);{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=C_SCHEME_UNDEFINED; av2[1]=t2; C_eval_toplevel(2,av2);}} /* readline-test#callback_test in k220 in k217 in k214 */ static void C_ccall f_224(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2=av[2]; C_word t3=av[3]; C_word t4; C_word t5; C_word *a; if(c!=4) C_bad_argc_2(c,4,t0); C_check_for_interrupt; if(!C_demand(C_calculate_demand(3,c,3))){C_save_and_reclaim((void *)f_224,4,av);} a=C_alloc(3); t4=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_228,a[2]=t1,tmp=(C_word)a,a+=3,tmp); C_trace("readline-test.scm:5: ##sys#peek-c-string"); t5=*((C_word*)lf[4]+1);{ C_word *av2; if(c >= 4) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(4); } av2[0]=t5; av2[1]=t4; av2[2]=t2; av2[3]=C_fix(0); ((C_proc)(void*)(*((C_word*)t5+1)))(4,av2);}} /* k220 in k217 in k214 */ static void C_ccall f_222(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word t4; C_word t5; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(9,c,4))){C_save_and_reclaim((void *)f_222,2,av);} a=C_alloc(9); t2=C_mutate2(&lf[0] /* (set! readline-test#callback_test ...) */,(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_224,a[2]=((C_word)li0),tmp=(C_word)a,a+=3,tmp)); t3=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_240,a[2]=((C_word*)t0)[2],tmp=(C_word)a,a+=3,tmp); t4=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_243,a[2]=t3,tmp=(C_word)a,a+=3,tmp); C_trace("##sys#implicit-exit-handler"); {C_proc tp=(C_proc)C_fast_retrieve_symbol_proc(lf[5]); C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=*((C_word*)lf[5]+1); av2[1]=t4; tp(2,av2);}} /* k226 in readline-test#callback_test in k220 in k217 in k214 */ static void C_ccall f_228(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(0,c,3))){C_save_and_reclaim((void *)f_228,2,av);} t2=lf[1]; if(C_truep(t2)){ C_trace("readline-test.scm:5: ##sys#make-c-string"); {C_proc tp=(C_proc)C_fast_retrieve_symbol_proc(lf[2]); C_word *av2; if(c >= 4) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(4); } av2[0]=*((C_word*)lf[2]+1); av2[1]=((C_word*)t0)[2]; av2[2]=t2; av2[3]=lf[3]; tp(4,av2);}} else{ t3=((C_word*)t0)[2];{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=t3; av2[1]=C_SCHEME_FALSE; ((C_proc)(void*)(*((C_word*)t3+1)))(2,av2);}}} /* toplevel */ static C_TLS int toplevel_initialized=0; C_main_entry_point void C_ccall C_toplevel(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; if(toplevel_initialized) {C_kontinue(t1,C_SCHEME_UNDEFINED);} else C_toplevel_entry(C_text("toplevel")); C_check_nursery_minimum(C_calculate_demand(3,c,2)); if(!C_demand(C_calculate_demand(3,c,2))){ C_save_and_reclaim((void*)C_toplevel,c,av);} toplevel_initialized=1; if(!C_demand_2(28)){ C_save(t1); C_rereclaim2(28*sizeof(C_word),1); t1=C_restore;} a=C_alloc(3); C_initialize_lf(lf,6); lf[1]=C_decode_literal(C_heaptop,"\376B\000\000\006foobar"); lf[2]=C_h_intern(&lf[2],17,"\003sysmake-c-string"); lf[3]=C_h_intern(&lf[3],27,"readline-test#callback_test"); lf[4]=C_h_intern(&lf[4],17,"\003syspeek-c-string"); lf[5]=C_h_intern(&lf[5],25,"\003sysimplicit-exit-handler"); C_register_lf2(lf,6,create_ptable());{} t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_216,a[2]=t1,tmp=(C_word)a,a+=3,tmp);{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=C_SCHEME_UNDEFINED; av2[1]=t2; C_library_toplevel(2,av2);}} /* k238 in k220 in k217 in k214 */ static void C_ccall f_240(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(0,c,1))){C_save_and_reclaim((void *)f_240,2,av);} t2=((C_word*)t0)[2];{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=t2; av2[1]=C_SCHEME_UNDEFINED; ((C_proc)(void*)(*((C_word*)t2+1)))(2,av2);}} /* k241 in k220 in k217 in k214 */ static void C_ccall f_243(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word *a; C_check_for_interrupt; if(!C_demand(C_calculate_demand(0,c,1))){C_save_and_reclaim((void *)f_243,2,av);} t2=t1;{ C_word *av2; if(c >= 2) { av2=av; /* Re-use our own argvector */ } else { av2=C_alloc(2); } av2[0]=t2; av2[1]=((C_word*)t0)[2]; ((C_proc)C_fast_retrieve_proc(t2))(2,av2);}} #ifdef C_ENABLE_PTABLES static C_PTABLE_ENTRY ptable[9] = { {"f_219:readline_2dtest_2escm",(void*)f_219}, {"f_216:readline_2dtest_2escm",(void*)f_216}, {"f_224:readline_2dtest_2escm",(void*)f_224}, {"f_222:readline_2dtest_2escm",(void*)f_222}, {"f_228:readline_2dtest_2escm",(void*)f_228}, {"toplevel:readline_2dtest_2escm",(void*)C_toplevel}, {"f_240:readline_2dtest_2escm",(void*)f_240}, {"f_243:readline_2dtest_2escm",(void*)f_243}, {NULL,NULL}}; #endif static C_PTABLE_ENTRY *create_ptable(void){ #ifdef C_ENABLE_PTABLES return ptable; #else return NULL; #endif } /* o|hiding nonexported module bindings: readline-test#callback_test o|eliminated procedure checks: 1 o|safe globals: (readline-test#callback_test) o|folded constant expression: (string-append (quote "foo") (quote "bar")) o|replaced variables: 5 o|removed binding forms: 7 o|contracted procedure: k229 o|removed binding forms: 4 o|fast global assignments: 1 */ /* end of file */