chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] #437: improve closure generation code


From: Chicken Trac
Subject: [Chicken-janitors] #437: improve closure generation code
Date: Tue, 30 Nov 2010 15:12:01 -0000

#437: improve closure generation code
----------------------+-----------------------------------------------------
 Reporter:  felix     |       Owner:  felix
     Type:  task      |      Status:  new  
 Priority:  minor     |   Milestone:       
Component:  compiler  |     Version:  4.6.x
 Keywords:            |  
----------------------+-----------------------------------------------------
 Large `letrec` forms in one example (`genturfahi`) generates code like
 this:

 {{{
 if(!C_stack_probe(&a)){
 C_save_and_reclaim((void*)tr2,(void*)f_37755,2,t0,t1);}
 t2=C_mutate(((C_word *)((C_word*)t0)[749])+1,t1);
 
t3=(*a=C_CLOSURE_TYPE|748,a[1]=(C_word)f_37759,a[2]=((C_word*)t0)[2],a[3]=((C_word*)t0)[3],a[4]=((C_word*)t0)[4],a[5]=((C_word*)t0)[5],a[6]=((C_word*)t0)[6],a[7]=((C_word*)t0)[7],a[8]=((C_word*)t0)[8],a[9]=((C_word*)t0)[9],a[10]=((C_word*)t0)[10],a[11]=((C_word*)t0)[11],a[12]=((C_word*)t0)[12],a[13]=((C_word*)t0)[13],a[14]=((C_word*)t0)[14],a[15]=((C_

 ...

 [747],a[748]=((C_word*)t0)[748],tmp=(C_word)a,a+=749,tmp);
 t4=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_82668,a[2]=t3,tmp=(C_word)a,a+=3,tmp);
 
t5=(*a=C_CLOSURE_TYPE|3,a[1]=(C_word)f_82670,a[2]=((C_word*)t0)[747],a[3]=((C_word)li5036),tmp=(C_word)a,a+=4,tmp);
 
t6=(*a=C_CLOSURE_TYPE|12,a[1]=(C_word)f_82678,a[2]=((C_word*)t0)[660],a[3]=((C_word*)t0)[659],a[4]=((C_word*)t0)[477],a[5]=((C_word*)t0)[635],a[6]=((C_word*)t0)[386],a[7]=t5,a[8]=t4,a[9]=((C_word*)t0)[697],a[10]=((C_word*)t0)[693],a[11]=((C_word*)t0)[712],a[12]=((C_word*)t0)[689],tmp=(C_word)a,a+=13,tmp);
 }}}

 Bad.

-- 
Ticket URL: <https://bugs.call-cc.org/ticket/437>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]