From 35f051b5da2591b7a3e9ab5e12af17d8a467487f Mon Sep 17 00:00:00 2001 From: nilspolek Date: Sun, 28 Jan 2024 16:45:50 +0100 Subject: [PATCH] gc --- GC.c | 180 ++++++++++++++++++++++++++++-------------------------- njvm.c | 18 +++++- njvm.o | Bin 53680 -> 56728 bytes objref.c | 8 ++- record.c | 1 + support.c | 2 +- support.o | Bin 3472 -> 0 bytes 7 files changed, 119 insertions(+), 90 deletions(-) delete mode 100644 support.o diff --git a/GC.c b/GC.c index b0c2f5d..bde1048 100644 --- a/GC.c +++ b/GC.c @@ -3,97 +3,103 @@ #include #include #include -#include "stackslot.c" -#include "stack.c" -#include "bigint.h" +#include +#include "objref.c" #include "instruktion.c" -#include "record.c" -#include "SDA.c" -typedef struct { - unsigned int freiZeiger; - unsigned int size; - unsigned char *data; -} *heapPartRef; +bool halbspeicher1IsActiv = true; +unsigned char* halbspeicher1; +unsigned char* halbspeicher2; +unsigned char* freizeiger; +unsigned int groesse; -// SDA -struct sda sda; +void initHeap(unsigned int size){ + groesse = size*1024/2; + if((halbspeicher1 = malloc(groesse)) == NULL) perror("malloc"); + if((halbspeicher2 = malloc(groesse)) == NULL) perror("malloc"); + freizeiger = halbspeicher1; +} +ObjRef copyObjToFreeMem(ObjRef obj){ + ObjRef copy = (ObjRef) halbspeicher2[freizeiger]; + unsigned int size = (IS_PRIMITIVE(obj))? obj->size : GET_ELEMENT_COUNT(obj)* sizeof(void *); + memcpy((void *) halbspeicher2[freizeiger], obj, size); + freizeiger += size; + return copy; +} +void setBrokenHeart(ObjRef obj, bool val){ + //TODO +} +bool getBrokenHeart(ObjRef obj){ + //TODO + return true; +} +void setForwardPointer(ObjRef obj, void* ref){ + //TODO +} +void *getForwardPointer(ObjRef obj){ + //TODO + return malloc(0); +} -// Stack -struct stack stack; -#define SIZE 64 +ObjRef reallocate(ObjRef orig){ + ObjRef copy; + if(orig == NULL){ + copy == NULL; + }else{ + if(getBrokenHeart(orig)){ + setForwardPointer(copy,orig); + }else{ + copy = copyObjToFreeMem(orig); + setBrokenHeart(orig,true); + setForwardPointer(orig,copy); + } + } + return copy; +} +unsigned int getSize(ObjRef obj){ + return (IS_PRIMITIVE(obj))? obj->size : GET_ELEMENT_COUNT(obj)* sizeof(void *); +} +void scan(void){ + void *scan = halbspeicher1; + while (scan < freizeiger){ + if(!IS_PRIMITIVE((ObjRef)scan)){ + for (unsigned int i = 0; i < GET_ELEMENT_COUNT((ObjRef)scan); i += getSize(GET_REFS_PTR((ObjRef)scan)[i])) { + GET_REFS_PTR((ObjRef)scan)[i] = reallocate(GET_REFS_PTR((ObjRef)scan)[i]); + } + } + scan += getSize((ObjRef)scan); + } +} +void *alloc(unsigned int size){ + if((&freizeiger - &halbspeicher1)/8 + size > groesse) { + printf("Heap Overflow\n"); + exit(EXIT_FAILURE); + } + // Set broken heart to false + setBrokenHeart((ObjRef)freizeiger,false); + freizeiger += sizeof(bool) + sizeof(void *); + void *ptr = &freizeiger; + freizeiger += size; + return ptr; +} +void swap(void){ + unsigned char *tmp = halbspeicher1; + halbspeicher1 = halbspeicher2; + halbspeicher2 = tmp; + freizeiger = halbspeicher1; + halbspeicher1IsActiv = !halbspeicher1IsActiv; +} +void triggerGC(void){ + printf("GC triggered\n"); + //TODO +} +void copy(){ + ObjRef *test; + unsigned int objResSize = 2; + if((test = malloc(2*sizeof(test)))==NULL) perror("malloc"); + for (int i = 0; i < objResSize; ++i) { -//Register -struct stack reg; + } +} - -//heapPartRef primary; -//heapPartRef secondary; -//unsigned int heapSize; -//void initHeap(int size){ -// heapSize = 2 * sizeof (unsigned int) + size; -// if ((primary = malloc(heapSize)) == NULL) perror("malloc"); -// if ((secondary = malloc(heapSize)) == NULL) perror("malloc"); -//} -// -// -//// nimmt obj und copier es in den secondary Speicher -//void copy(ObjRef obj){ -// if(obj->brokenHeart == true) return; -// obj->brokenHeart = true; -// if (IS_PRIMITIVE(obj)){ -// if(obj->size > secondary->size-secondary->freiZeiger) perror("Heap is to Small"); -// obj->forward_pointer = memcpy((void *) secondary->data[secondary->freiZeiger], obj, obj->size); -// secondary->freiZeiger += obj->size; -// } else { -// if(sizeof(*obj) + (GET_ELEMENT_COUNT(obj) * sizeof(void *)) > secondary->size-secondary->freiZeiger) perror("Heap is to Small"); -// GET_ELEMENT_COUNT(obj); -// obj->forward_pointer = memcpy((void *) secondary->data[secondary->freiZeiger], obj, sizeof(*obj) + (GET_ELEMENT_COUNT(obj) * sizeof(void *))); -// secondary->freiZeiger += sizeof(*obj) + (GET_ELEMENT_COUNT(obj) * sizeof(void *)); -// for (int i = 0; i < GET_ELEMENT_COUNT(obj); ++i) { -// copy(getField(obj,i)); -// } -// } -//} -// -//void runGC(){ -// int rootSize = *sda.size + *reg.size + *stack.size + 4; -// ObjRef* rootObjs = malloc(sizeof(ObjRef) * rootSize); -// if(rootObjs == NULL) perror("malloc"); -// int counter = 0; -// //Bip -// rootObjs[0] = bip.op1; -// rootObjs[counter++] = bip.op2; -// rootObjs[counter++] = bip.res; -// rootObjs[counter++] = bip.rem; -// //SDA -// for (int i = 0; i < *sda.size; ++i) { -// rootObjs[counter++] = sda.sda[i]; -// } -// //REG -// for (int i = 0; i < *reg.size; ++i) { -// rootObjs[counter++] = reg.stack[i].u.objRef; -// } -// //STACK -// for (int i = 0; i < *stack.size; ++i) { -// rootObjs[counter++] = stack.stack[i].u.objRef; -// } -// -// for (int i = 0; i < rootSize; ++i) { -// if(rootObjs[i] == NULL) continue; -// copy(rootObjs[i]); -// } -// heapPartRef temp = primary; -// primary = secondary; -// secondary = temp; -// -//} -// -//void *alloc(size_t size){ -// if(primary->size-primary->freiZeiger < size){ -// runGC(); -// } -// primary->freiZeiger += size; -// return (void *) primary->data[primary->freiZeiger - size]; -//} #endif diff --git a/njvm.c b/njvm.c index 39feb49..c4dbc51 100644 --- a/njvm.c +++ b/njvm.c @@ -9,6 +9,7 @@ #include "bigint.h" #include "record.c" #include "GC.c" +#include "SDA.c" // Debug int debug = 0; @@ -16,6 +17,15 @@ int debug = 0; // Program struct program program; +// SDA +struct sda sda; + +// Stack +struct stack stack; +#define SIZE 64 + +//Register +struct stack reg; unsigned fp; @@ -306,7 +316,8 @@ void tests(void) { } int main(int argc, char *argv[]) { - + // Init the Heap + initHeap(1000); // Initialize the Stack int size = SIZE; @@ -337,6 +348,7 @@ int main(int argc, char *argv[]) { int run = 0; int sizeSDA; + if (argc > 1) { for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "--debug") == 0) { @@ -360,6 +372,10 @@ int main(int argc, char *argv[]) { run = 1; } } + // Init the sda + ObjRef s[sizeSDA]; + sda.size = &sizeSDA; + sda.sda = s; } if (debug) { diff --git a/njvm.o b/njvm.o index 9c3f0c4099bc43bd914daa2494f61bf54de586af..faea6d5971233b490258ca5b61a9f2ecefb8b36b 100644 GIT binary patch literal 56728 zcmcFs3w%_?^}f3|ce9%WNJx0UmX`!UUZOm&1OftK6$&U=h#@3_1VR#%ASfs?!Ac7j zQn6U2C5qO7v|_b2JgV5xiWMtXs#a-TmDV7(QlT~Zi{<})Gw1GZUWm5cUnbwonKS2{ zIrF@8@9ur||Ni#xIKyxm`0!s8!fFfu{0R7TL8vFOmCvyqI^zMB!RKX3Mq+m+H7q&z&-VZaD44MhA3^^4y5#K4uu}OhlrLGM%IUXJllRlosa|EEQr#Mq_!7 zoOi{pW8a7@tz}12GBUC=OEbfijEu<>=S~c#JI&T{`iP$==V@&1KkO@9v7)fR$!{v} zsQ4+;wXCo6ar8K8*q5_-<N; z%Jyk2?^_~ojFjp*Kcvcuv?wpHU`Zhvn#y}#+WO|sy7;_rYFzY!VI0uW7UdOZ7A(yv zX)dqF3MsF__<6BJ!qB2TbQ;Cc)V@1J-g#+|4$#@;(?nioQBi(QMnUEZn%Atpw~0N+ zJX%V^>L${fbis@aEw6C#GS$FM?VEm^F5geYym#lN$y4?fWo9*%x1xzWYu%;EE4{6# z#rjr?yzh#a27akLj1SmVnz6EARbD}MMn+(Aqy_%9I+Y^rQFE7Ja2go>qG9yWSxwqQ z#z$U34zruqcTt%xw7i$b`nxqwJ0g=`llB;aY<5*W4%;FZ0Us(QeHO~S23+(9*yJ^g zSke&q`L+bM)lU$JU-fgL)_CoUHSS$sR2Y?2wY_RKxXNbNwKMkBwM*F-G`+haZ)=@t z?5>M78le6kbYr6_r;otyHGwPhvnacZFPN9#=x$tX-6IO zdBI!P%h-ozO{z=OapnbkrR<9=A8E&X(XjgxY&iv<4e(Pk>IVLOOedqxjckkXD{VB~ zWxuDNf+lP=zr4Puz>{n!9b;&dN?W?D;W}goqswgi^}TjYd>g43?f6yo(zaeMV+`A0 z>GYwFpj}j_=|X#&yS_mC2HVj_V|R5$ulk2md)0Ui)-`3{N9ar5sFVgD;&rBP_bJn; zyxe8bZw-EtOS1OwFjF&%7?*^47+2dq;=zSIWLG^^ z7&B<|%VB$(t88B|`jBnhwtIZC)CK)1VIbo055{W5eAL7i`Y_T4FZ&(ly)V@r)^iJO zm3RGG_@pH|_Lwcwf8GlH z$yVsQTA}Z3h5o}<=-XPMW6^HW&W)|mv5jewAKR}M>9@5)#~!vter$_dq~p4)MS5l{ z^aZWZZ)k-+vlaUER_Lj%(Ct>}qgtU4Z-qXn6?*?x=-6hq=$|gF&=Xssw`qlrYwH%} zV>~3)H62^&MsZ!I9bJ>H@Yvgpv3bgj*?lSz<1KO=rW@@sz7#*^NwuGBL0)@r5AO)> z<1i*$($}7O%9cdTJJ{PfYjQQlEbPEuBxZNAukqdhd+4NHuq$${b@(Iq5R}Wn`NfMl ztQvF9$$wwyw5uYcK5|Y%Jx;UUx#6{G>lbUT#eP?>b==&?LvS)e3c`GZB7_YHRR}c* z#}MieI)ir@0(@dDLRgKk1)&<@5W-ssXAr!&K=31sMwo?=i%^E}0K#5`BM3o+dW0|5 zJiqG;>>#Hjk)?>a@`~D5mPSxPM zkZQc<_!_*S>j2Ozo%MJp%2s6=uaz5Rzkknkt80nsikoX*n*QzC(~ndab1kFaQ152f z6ON4P+M8>!)n>PP#bc(|RM&Qf4GZh5%`Wwq(pRc#=Y#*IdhEL^pNB19ta+hYT_@GL zu@1&y9duU)V=;bUcjP)49E5dxCieId{&#rXSP!d8jMwgR>%CER>Yqn@Uva5@Os+HD zc>ORlWuMyH*K+S(X0tAJebso;*K{mbDdnV{&_|M#ykBa1okzDH{aB5?RC1HO_yuQ- za(wocJ;XMwyUsj;wf9sn>>t|rHc|%5S0%b$3t}(g!rrbN*G{-5-;yQQn(tu`Q3XBp zH|neEbfkqo)Y9Hm*$CN9ZDgJ5U?0ah=afHSuR_|TwBHwN(lFNDYG13`E#i8}X%A=b z!aB9qUcotN1Jh`5+AL_IkD`ussIP&&(xurFvByqj|M6n%yDQ(rUaqMv*hkfH+&^OW zsNY%Jz2+p^UDdgEVWYXRHGA2=*e@M>dEM=_Ut}58R~~E9_i#P+uz9l@N5KlzJ68H0 z_Is>zsE<9R%WVj^Z#eJUI!)F8Ljue*046a@A%!$KF1iyy$-Y>!v#O z7-D@PTg{K`leF{a=qH!fF4J~l{tca5IOh&do7AD*dH&*q{DH2Nh6!x%TI|_x=r|`0 zV_=}~w_Sapp&y0LWgK3VRo8rwrRM1)VPA#jW%{HJ{pmj`-`e>`s1E4ctOIq>cFgaw zj*Y03zJ|N!;`2SPCmeaaMi_*0X?e>>XW&fYa>o0sa|8OJfoZQRW@8=t;BM$k*6CP` z?dE4rsm5!1f6wbO%yF>Qu?^*Ttp=L9HVo-!pCAwN$6Ss!@VX3ym>9?(!*z~h-C0{B z`+I2qt_YuVO+$I;44uc+IoFt9(qkrYvm?&PY8#*L zRoCvQ@&4nE*RiHne%*6Ep6hvyz54u%aroV7Z|BVKLaf*w8_HW=_w0_Y8zR;oUxHEj zQEb^hFVZ0n((LRI?Z`Q@PW5Hkmq>rVfb%XKgNORL_co(F>qxmc zSK8;a8O|UuFY5EEstSEhRb7ES-Its}s_Spn53p}}6Z<`9Ka|QnN3WVH$l#n%ZL;qh z%j;gm8t2w)Bg=BX340nGKAr(N^CkO3vZdy}Mq^gl1wZXdMZ4XWS8q&Asc&?SlFGV7 zVUBlII(2!Z0@ueSJx61&6{=IU_=wlq)yShyE><6|fgwA&F0wv2e@SjyAB?>aU&Q?1 zQhh>ux=Zl2ZjTgo{nXj7m*>}gjeR(jO49XjS%#BGUd%Tk zUiO*L_&^@ztNzm$=QnIy*v@{t8||U$h<=Om7oT_gVho_%Kq)uywq^Cnm|JK=Gx|gW z?K>H3g`AUN4sp)LaJI^G`G!;NU<>*}=o~v@jK7ce_yB#3yzey`Cr2)_E}Vkgk06)h zu<4nQbANzqJ@*kDXY>hd*~jr7n%gnHr%C_dczX|d??W#A=8L-c*(POqx%YzXkJKF2 z^7$Oc3)V)Nqp?@Sn1TPXFGk$gc>F}x<6`sl`NHRRIqR{nsC;(h^}&Vcl-DkpZC|Ut z$9S#o9{6>mqYrDy=7{)x5%Fyi@rNSfJ2+N)qQ8{2uTJe*^E~!n^y8_GyneX3*%{W6 zT$j2o()CmRQP)AJtD;w@-i-5HTp!7Kt~1xv-G@H1Ii`DY1lrrqmdq*cTN*M)Dd~D4E{!QR2}SB*Y@U*8lSOMpze=hY;41MVWw-; z>5A6R*qZ7-(n?=-$2Pa~h_j|Nu_Fd&4D2uJ3;=!ROYLsyOrnWQFL`(-aY4@;&FYSP z=BYX30J+Hf}D%@z7?@POMs(%>QmycA;SL?_NG0p2* zZR)nC997;lQGTnG?@&Jx^SjcC{NU%PB0FslJByrurIAO`YB_o$HvoN0m}(l=&)y53SeNmE(MBE;xlU!9n03 z>T9SQI=vxTw@ouY1^a?$0Lp}9c`Jh(MOHWD^_|}E{($L9=B+LG3iVOr#PL-y8ul2F zQ6Vy7eGQHL^_ljU;wy`;46YHr&%F&HpMCb#e5Q3mR*A?u?N#=M{PvEw;k|dg4X56n z*4S?;p32}-Df7B6qx@D2{ujLsbuUh9-ERlL^E}EpeoL_`gY!hz)5tq8t>OLWrzty< zFV$~{qAG(kMaE8VW51n^@LLM_rV8JE5q>-SHT-tStPD;NSrtwER)Tu0g5Op(@tc7% zS4x@X5q?_${tWmn<05{W1D<&ielu|H(pO~7K;9hqZJzeq+rH*wv&H^a#(NkdV_Xxz zeG=g}1AK|XHz>kypL`9!mGOF7WOZxew^-Dp9sJfV!f&+`DuWj)^cXcGe0Dav;l0nI z8|prr+In9*4W3V;bziH!rZV`6$oT;D(^DJX|75D_XWwnXUrpz-U@FRgDCJ*|ZrsOC zi?3?!%HX@gQyU!~m#4p?pHd;`O_B37?8iJE8k0L=`{U6Kryidg9+MU0D}yf!|3jKz zjmM4P-3%XXZsMah;rTvT0iJurM-}5Lg9k*;8qh1?qkFWErnKOr*49B;FX4C5(`1ba zE{E(w(OEmTGWewE%mRHmbQWrzP1jv#e;=ANQ&IMDDLW_ZZ@sRze6KmNg?coTTRWyQ zxI^ToUYgvnO(?rf%3g^&qU}^$^hMnUpe+XIwrJ|3zj>RF+1C8a`f<-EYg1^yQ+JPA zcgM7}t_Qn8e=qTQ>gdYgJz`@b=-uG+UM>4P*V(^7c8u%Ln2YUM4z^H-=Dr}LXf%{spaaxqD#Vzfpn%)O$iHCcx4==Lk zLLT=jAAQ((9zZ*V+D`3dT9SRK`aigce&i|nJFvI;AZ4Em;IKL`1(cafIQ{H*T2Mv zxHiMQy)V=+o`C&NO24QbiG7yTcPHpipkF+x`^9OLI|cvnnnOS1lCp0Z&JpzUCD8dQ zY(xEbIoDxd<$C7ji_{Bwte4XLDxT$fIR)oIF|p3GG~51HzJBo{HX%>>`o)X;TGCSr+im?ao@3@(e{tf=hATf`q2VIo%Ni090sOlh{w;)mN7dTKO}oZ_>iHjy|Hm(4 zKk}4cAODJeohg3Z`5*Xo+ePd`9_>c64pkXB$ywv-qrbP-XCWky`=!M)+*A_L+4lK1)UUXQg~e6Q6B# z=84O3y(2tX5kA}a6@8WpIgg8+IZb?)3frf`XHz45RxuD~UBW*u!e@iPI}|<}+QetL zpVF$&`l8GL@mWPO&b>r#H_-dSX9Kj)YOLn-T(hxhqI`vvk8R?!d&FlI1909YJfBB} z``JBT(Pt*)l!%+ zSM*tJUz~G^oQftsD}n8+;ImZ`J~P38rSLD0@Yw?JX253|O?-xXm96@04$90EpP7Ad z-X(HpfIbI4o2Px&^HO|P(Hm!7Qhr<$pRIG|Gw>t|&!7mOt^0~TtMKEDOXPHG;M#bZyUY=<26{HK&Vh5EF1zs$J@P8+8Gulh&HMe2_{)jvx9!~S8SjbE2G ze&Q?kkBaU%OO>(@Mf8u2=pUQWKQ_0}Kj>rJll-srkHU-i2YIT06#f_c2m3bmN6tCl zrS^{(%>U8+vHT+SN1o~*%P-zPTDtFv`_PS_=Wb~X^BiyKMf4+2`G4tu?*Ci!?!|M0AJjk>K(D}ha*tk5n$A;Bf8w(PF?e<& z@*1k?eE%P{SH?x^i#*j{8UJ~ESuM2Jkyf4qXzGh*XW%CM__X+O`B$8uQoCZ`FJe}&Jck{8`T3yvS4EjmvoNoczZ>XisAmay zeIFczyrJOZ9=^77WpJ~U?F;%KjD?}%`^Ykh$m=9!Oq8jRGO?g1qD&`UX2sXBKeZF? zhlsqhZnc-Gdx&QTZk!z;t?cYr87vf@4?zEXQp5WfCMjNgH>25eHLbQYDO(Sp%ILvJ96(0P1*N|%vXUHeBJ7N z;M6@e0q3StpDT5J^!;wsXMh{`yC;RNT^sfNZpiNiesvxakKbAl8Hu2GL;Lrdr26cD zuVYhfJ6uo8cQ(ujo6fp$J?+Bv^u&-&oY$*ryXxqL5%b_g#s3e?2Tj-KFZFdr z8=RAhyaU=kwJtpY*-yG~MmkZAX{Eb14ripoyHoS(Gg9zwLw&ZPKImuF=x52!Gj5H1 zf%3IdexoiQT!XUfTn)i>6B{0`{br5RZ=U-)bxDoIS*ge`5&2n=zZAAD4g1>bYW$3J zb!g93rq00mOg-C#dPsb@4>^x@}t#`=Pz z2hR?sOQO9Rflx_461FvszR+GT9nxCK3 z-^;^u*_C)MyOQ5YI$!uJ^?ga4#~9-gFxHH@c))oRzBG6k4nK!40(Qn1nS%(c(J{v3 zOFcmZKfVZ@jUOdDhA%&7qi`I4VB;iu_ud5Xqm=?3&{Fu)*fX6Vvj@JP+Zj)fcEfjV zdm`VDp9<@37$5h6OoST57xjfh@gqE2@MZ1umjMTWH`y>o4unycBOhThzTnO84V{}A z@yz+pw#Pie@#3~QAW?-~*B84>Rjj1-mLU`%Vy{P%h;FuE3{SM&g%Gmn%o5a98ogH zQ0^Ogjm>={WnUh7_#8aWZIk8qVRG+GX~=t{Onp}ZT_W_oX82H@B^{A@PJPD<^3ZSg z@pl5gtXy?yel)hyxA^U)uUw|;63RICv3~6TtS`FIm+ES%9J=k7mdllT@poo&(Uy7e z-!k~mkMFB+-pl-zyK>PGJyvrUqc5Rv( z8~83D`V0C@?v3jAiz;b@SC19+3w{2!A)?)wpZjO{Rq~F=cbHM9EeLo{9DScQwiO#= z#K!Bt#Ksud*tP{5)511}?2x8%pVQBae&woM)KmOCN&8vZ>*P;Den-h4q4OKr zeZBSpf4d=)uG$IxRmt*9+=sg1drA0?n9M1hFPu3&H^Nto+NSJ#9^bp;TzhV&o@-ZR z=JO{4XD(hgJ7Dc{Js#lUa6fh|ABSXyc<%`uj(C^8loFF`0ZvQS~8IH%OeE-oxm#fn+1 z*vMX4WK5Yod**DT|FA3bP}LG$TS>$i#m1E4;=m zKgZv{#K~V(Tv)JF6Z!LZjmdCENgjUZaq^T&H%#>}$SWu*%E>BCAL}on&jD5bho9FJ4(N80vG12K#SWnFp=Lw4BVMh<2Nr z>c?+qE?t^aoRb}6%+ARwEY1$~mFZ~C)&Bl@{=${;$rAtK!j%QtCH^Ia#s2)9f~BRo z$crqL=`SkITaj0qcWaJuV`l!!oRB2)U7uI5EYp8uUUBKl%zXcKnOV8`fj+-DjariV zJAm+aHXJ?}VPK4rmRaB*G1@<3*ocwF@DXFLylU)~qm3I%GMDCz^$!_Zu5>vHfU8lD-nLSibBjvZI+b6lQsY%tzGfV+vzF?tYg87S3o@?JSs1TO#$YV3^5^NO zjK5G8#&eSlNn^n4432gkV>NXQgFi-%e*9lqglb^)>&gJ2O%3~{Ii*WTEM20KAZNy4 zDk)t8AXTSIZr241;O3kqIk&_Z(xZURK-awj1U0~cxfoo4rCCKQi!nL1+~ZY`2dh|Bs~U_;EqEu{xY7vHTf2 zvRbeu9#?{^f7?XMY+Jsz?I-Kn#&_!0Ho?^%>f9rZ>4{@w$Hls__cmRw>G=I3Y`do? zj>6vE>Svg3uZfLC)Wc|O>@|o+k3@8O;)E_vF|Ww5D8ttdg$*Mn(M5i;;5Rkfs1i(! zMl!A=Sj@IMuT3HzlGD+)okG!e*diJ6Ltu7$PfBOaJD>}d8b*R;xP?Sb?MF6BCh9^T zuItjYTvAhU6xJbD=`f6rEtDfeCoO(@;z%SqBhg7)L)Be|7&NevE|%%4>0tv%?ABO4 zN!?@M7u4NKz>c9uQ(@MCE@bN2s2qse3%x>KuxN@ui_9|-M%T(L+ z>wsn+0MY#|mA)(yW{gLAfNFS1OI8u~#&4oYafOEuHgfpH8N=`&Ke}ZsXA&R$=5Xl4 zA8U4}BI)YnGo4>%^x{-_41h$GrRcA<;^mqv<2?2KC@6V-EWY)htIsV88^JBGGWA;M%=x9W|>1^jof{G z=G~15{e0#ohrq8vy8HXg`-Bj#h}&?_W#(9)d4IFac*A`QGgE!$W6d%X4EJ}DY4-G) zzi5`}(JnAy=0V9+J~3g{p+;4}Z`5EREGpLy0HusO{sKC`|NVVci8?+}!X89vjv z4y^d7W;3t%nI4C504EaWH+*KS5W;O>8g7+2*JrkE#68bvCNv^^(`P0%BBcAwPK^kQ zd}ddNpsddFnLQd2miWxxjR<)@v%f=7HP82%108~rQRp*=I0VH}>@!C=1Xc5uK68{q zP#mj$rtJ`vj5R)Ul0#5M?(~`0I)pcIQe)obGXp{h`=*WIKF7>*pLtWW%oxMXo*mW3 zXJ$E~`d~VUYUeX^nsNK_dtc1#h>_APvy7qq}2{bGYfFXiNvUJA|L2cr=PvH7nlHa8tIoJthx_o880X|+2u2<9fIQ6i)L^LisMCgGh*BpYf(X{>34vA}{;Qe>w!k@w(6aw?j}IZ(&0JhO~>S?Vm8_8WG+_GdKj!o4%7ibC5&e zH0k@uXAW}+isSD-^J<5nIL`UZaSlN>cD>J>=n#hEaMO3*XHFABxVL)^uPSc1eC904 z^(wP1P;PW6iYFG742Pn0#DkL4h|&p^{6>^spp-PCTn5VRjVPCca+gC<#x4eBgF{hX z%LZkOLs8n7g7Tn4QKgoF@~}fuJS#xiH_OgSj~g%b8mFT<;HHz4Nf;_QN%c8E3?jHjwc)-dO&GsG_%xH+*UirOxQ_ zAg6-G*C9d{iSb@O$UN=*gr zL1xB8874iUw$)g4aM#;7fD9j|_fQ>3?CcKL!Hqi1290*RQ3vMZr`_;I1k~Ygh{V<7 z-#0;ZCA5jhwOBTyT*_Q1xB~H{IK<<ASKR+7~T!j{L%mh>^ z`QIuQ#C=1g`f+fY2_mkuhvU;s;85=1m-1XKP~Rlh*K9BK-71;KP;b|YL}qn?J&Uw} zE);+=1?;G1S59mlYNW(klt9)(C9azm7k`o!#is`9T`T+$7v*EGgoTS@Q98=^5$!cA z=PLzKK2b0?o|!RZh0Ixfn2MFuv@4j3`ve7%m&;4=sP@0X6@4eOvSwX0lD|g+*XD-N zn|Zzdh@_F^940-ZOc@AMEMG#@=3|CxO3SBQZEikluxnUq-h%k-!4P4^;uqwVAtRWI zQz^6Z;JT}sY{O)SKwBy_jN=Fxfqt7=N#~fAEm<`>t2;epbRU5CknnXWG3ojEaKPM^ZNK&@-p?V|fgp_zdRc|6o44{`)Z3aj`n6E~GH9)%6 ztXEOe8bEPi4P;Qbux>tNC|xQuuVVSWZF>; zU1_YR#7=5Tjz1@SN6ELMjC|en1Y5aU@j0ndwq3LybxDUXGWZFquJCP^>I2Jli9S+Z zm*^u}b2))Ut30@S=>|&c%M}Qw``N6~gOqC$tJvA_>4)Gd{2oeq+la(CR?*u=B*t?B z^S0rFZzLU-QhLew0dp{AZH}YWUOh>n2{@^H6STC=x_p8z?^mPQnNq9B*AeA4Pe<}} z7%42-&Ke``1MPk3CC>-_ibL0wg{({70Oi#IL zdh#X9^pwr9;Ty=R!d;74ai3c2kjmK1yg@S|1gVrCFg2L-e|t_(k1%-!>xksub-S4y zBFR1Lo@R0=#diNCqoZ6k*D7<24x75_NYY>y-F%|$0W!RxTE*y5I#uU_hGuz=_Kb7& zTrJc?AiGu^CiNN@OY|};%G@tdKqy`B`i)L^hg7DN_~4 z$}kLB5U|B{22#0T^hpCn38-*g4*`($7YwAnoGpB8P2V{r<1XOe2rNLcKa3d#cp&!9 z*a<*RO|k2Y*hz@f!?9)F*eOo@uDIA~h}U-ny*xhl1}9$8K6U}(7f4^b+otw7ul3uC`MI`%t=4`cj0DY07+Ph))JwAe$4Z(@AYtk@S3S28!xk9`^O zy`*o+jeQ4kWm{!Y?7N8XCw*&a>|YS)&N=q}Rk5cLS7jeq9s7yH|Imimdc?EIzkQ2g z%|ya-$7BHFV;9CQ0jm0^8?pI_D;+mu@7^B;`Z3jC&F;Rd8m0Sl>F>{M_?J19uQ>aw zn97MO1o8V28vBj7+Y$XCqHU(e-HqrTMB_SJzW`WXUnMAEUHyNIq{w~((Y~qye~#E? z{5ALR^?_-aY+!Y*5M@}2=nTcuwUNmAdRu+`xEiK5& z_A9B8c_WM^#W{FdBoB`WgxM%zX>lPQT*xtsiVK$(XRa_xz-5$V-kJkDH6c4wo<1?u z8#VP^(k%VJiGG4)PJUsjkyoOhQ888;csK$Ns~80(xo z!L`MOE5ZcCKwARZ96n~DB$g;X;ZbTyo|jjeE1Du{S-ID1b$EE8pi~J_cg}hD*eJ@$ zS#D$%7Tq?t(5aSUa}v~hEuL9`Pu0^N2A{#e(Kk~*AhR?V zl$8Z&4ZJ&ZCAt+JyI|SUysR5Di%ZZ}c%|mG(*sk`FH1BQ85!uMtBi~#`I$?>oLh(o zbu#!=jghf<3HcVU1T4-(N6Jt=C?kLI5*^7ZEL@%ka#nsJbK%o$@UTIa6cv_aKn~v2 zT8vjlW)v=2qLQfK)guwh=TkcT2i3)Sa6|^4LCU~eXNxl()8>N)%T_A&1?qo3coyd` z*UBLhE;f*{1U)e$|W8`{1y~W`%u|u7X_0}4gw)_=e+pN0xG`Ib7qpCHsZiHt7w{n!D}~~11LQRjuU5E4ryOn>xJSdYx(1%nRWI;l zxxR?^N8tWsAi}bB53Wt`o!|Dg8GruagtwQrTfK65e9C1%TARLWL#$O+JLQi#mz~)) z_owF{o^@jMoFj3k;}>>n_t8@)yU)lsN>+dW&|O{Uo_p}`zu&g@DdVTVxTEbo7yfel z_O+k)`{s`H8^_eXGc_}Qw`)vH>SG&XlYX=zcJO1<+xb)OU%TzeijtI!jqTt0Yi8CH z+u!~{N=4q8iAekYwZ7Z$MpPVrXVp!{RWlE_%k22z+PVX0>nyB5b9+B&{;G8OwA#-{ z-5zt*_O(1p;bBG`_E_B!1|y6|2p}v($VXU(oacR9ejcQJLweMOq2gRQl1y3OwX2!V4hYoJtP+Y z@KFa>EYZM;loR3rn`$iUi~ng zC)cRFnqhjEq?{Ks=PrhhE{;29FrugfV2k3g9oA@;COG2Kz}Uqzhh6H@;?DZf$b&*KK> z*NeY+63+A*(a!@hrf(H_>d+MF#iEZ_+sq#$_4_B{OmCO+ygFrip!kPZ|4jc;^z%T4 z>8T>`+mgRcw&KpCA~}n}E;<0bjy2CL`Q{umoWh!UhD^Z8yS;2yY>rLij%f z9>sM>;K|xG2;AT=Lco{UjdFzh5FSPNIl^xcK0x5an1C<@VFp4j!rchpM|d2e2H_6~ ze?|BVAqnky9m35BYY;Xe{19P3!pjKt2puq9MumRx*2)hvuARI;b6T;sSE+E8vaTSO#0s%jIY0O2)LAVv+ z9)t%Fb|LIXcp2dY0)E8R_%}j3+}QFX*a$NbG7(A;?nc;#unXY;!Yc^xBK!lvME~l5 zFaTi;!aM{#DX2a?;A0bhQ~HcLq(}P4(#Lqn#r#{P53;S9o*;ePS}TuOX8G@5TMxOhsAx}w(FijTZbsn4LLBSc5OyQ{5`ni6 zK0x>vf)76HjxZEq5(39YF2WiFUPFS#;ALe$AU@8t#uFcz2~xlUW_4=^m+ZU~B{_UP zfaQ6qC*^r@OcF1qg^T9}iUijRiC2;&@thcp{P1FzBwhmx$(d4lY%2vn1P8fzqf0dM zJ|0QDo)ywd!o`z3A#qtH7cZtoyt=Ce60cT;#LH}Q@#@d``jq@Lm)?&GI8}F13^&c_*o*{Ky+fE#*hv zDZ;afVhuRu6M3@-q-OS=L?iOUyEphW%a6RJ(o%lptqtTi(;s=4qowkZ_cU6{kGv1j zQhww;h?epr?>69GYcu;&qzChaxTW%uHyv8a4@&uCs(5q%McxKzNq^+=e@pTs5Bgim zk36hzssA6wxaFs{{vUbl4z_0PA9<|aQhwwKdrSF|hwWJTn#qqm)kgVd?bGOdyM^*g zdy%*Xz1QV(ecrYWfnAw|Az$YtYv{_7;-Ps3S@|oobN954**Iy)Db{IqV#f0uot&DgQD2(tIIf#@L=OMpJDjiJ5?@m@ zN=mcy3WwyfWit4!p%TO~wTI%WMY-_mkJ;X3wU6;$WA&I}b@Y^5Nom%Aa?4k4E-Uw# zoysk1hUK4Owe_S~J=3gCo*9;fXooZ_PNIhAmzFQ)tl~ha%yO%f*{j^@;Hdyhnq{R~ zahF@&pozk9UfvwOl;P4FTpn?|5rWjQ1zj z2#CM7+?s%TmRnsspwO1yX;#}bD<;kA4_~URPN;|vCbjo?S6ZFH5(ihLS^W?xHE7C(XJt&5BL4k|?MvC{WZ(X&H=oxw*L98t5@W z8H&8VY1T;81Jy@^qJYO-lxAJ!F=5|0WDkWVw8VZh!@I|d@t9y|)3kx<n+waWer7*~aUQcjdddPi&b%xQRVhZ5J^Rs8W;-;#nXuoAi}C(N zHGfxhAs7#><>pkB8e3lBF{h+i(H_$dX@|jy(oGQcLSd-cA!wx%q(wZp4l-&D3OTqA zz0za;#z<350DqxiJbZ$d?*!9P06s@6srHAQpC~yURStX(gMLnFN0qdvA+5j1d==8@ z_CaaZ=rrqU}>2Qy-^s_(L6r%6z_P@ z0Hs!f$L#s(43C+ahSp}}W<>fivH+0*jLb*maz<`IgDSd%(GOH~JEMP9(H}5+N=3iV=*KF0AETeB=oUslRndDH z{ilk4htYZ!y@%1yRdhY0|5nkv&>?&t^DY-C7w*J(NoCxczMrX+j4QGeDYXV7ic#n8 z*WU7@X;T;bb>%;V!2tIV&<>80}fiFL632dPQ*A-vrQi7lTPI(5c5fAFjQC; z47z-Zs;lXlWw|i#yN4xOt{5CzpdxToqLp+I`JY;`5a)p;tSV~!xQ8Xt?vY8>6jr$$ z3mYs1C-}S=unFMBf-whEt9b<+l4cFYpy5)YbF41qNL4tgei&{j5GJVX5OcS3PK=k4 z!=ahiqlh^o&AgrsjlpD@=B+T!j7y91ptTpchqsNo%UOo z!-R5k1)APWROt7Zn8X_8<}){mlLnU10~Vgm{0SyOHJ^0f&uT#eT#Am{nRDb)PBSKQ zx`PJ`M>3~en0!FZBfZqZk_ZBuGEVx1;W=n^#p0a=S_jbB#X5k87>{(13P>xbE@cFo z4SNAsz%nY(m(N-8Xn$~GM*&l2m0Ls2VdbEp^(iMjrJ*zTR}&+|To)A$7u~Sm>J#%% zYXJCQ8GO?PTH8Yv`W!kL#FeO;wM93cp>vYJ!K$H~p+T_oXs=g(Zam;R^i@H2T;=ZAl+F5Xk30vV{bWJSESj*98+jz|3 z+>$^%wuox5gQHD3Ju}1{UT#g~3T)1FC%fQ&jCx%=%#Ym}1Ft38!&~j!P2b+n#hh$DGw?;A9`%`loR+H{nm9ZdA#R@bg z4X{T8)_+8>)2qOok2-ydzM-~RkcDlQ$Vx4@#xj}4HL5p6q`LdLkZE3nnZe^uZcq1e z4;@M*AaPYlCMGYB`5aa5$lj}E|2{1Hr%E;nVc9=*WWU~mY!7u;eO8?hQh@$ryUsdj@+>WZRZ#`(b)mCS3-~N7;M+<7 z2BX&dr>*GN9uMeVEmYe_PrnVfLT156Z5mvn1wV&&# zUv+$s`Nf^8=66G)bg<9wq%9zrpHqfJ_BavR;?SVX{1!IJydH)?o*0Ob1|{SkNM&O; zaKDYIZUfV_mwOS6JCFGN~q-OKcw9J zg#48#h{zr%QfduG6itIVa=-5}|E^VT4XgYZD#w~6geLEg@02O_eo#X*woKo8$aY8j z_NVLiH(eS&)EXWNYxs-OKtf2vUmOkFzlMgO*6>JJ!=IsHj7h?DXHxvLqhaUQ(C|mC zVOLngo2m{ZgzE67qha^g(C~Y$VQ*N&F;xc=LUlOiXn5*tXn0v`cs8uzB~=F!LUnk_ z(NOa>G#u6%o(pUE6*OFBf?)oN-BBWYoCv$GL*pd(e7NKbsw4>}{Sy2`o~zyo&xMwIRmH9w)--4m56iyI?x#g<`nY8dq*%M~#(XrP|*2 zOtY}#9)|o5o^mzY??bI{aKC5f^a@fwFD?33je@>ke+2cf5Lx;v19u1d#MwKLi zHGD>D_zKdYMaQ`oB1$cv(zQHBYxYtjVvOu@BCI87U$vHdbS>YY+}*mCZ-s5GRf zb0T({i^-eP%rjKD>kmglU7GjL-aUwJiw2PScBW>Qv zuzA~IUT^cHtK4J^;{OuPdr0|>1h(-*)IS)TA*4HayeF;1{jGW70j=hvu&D1VH6K9@ zV>pLBjnz$7)caYN)2Is~dz=VY)YFYu)U8_T-@{VBr==3e=+jV?8`(L!$!U z(gn_k3#<}NoGLv`*#UT9#Bg=Z#tu$8$3;>+FG%G?3*5>Z z2m3S#=I0b45$t3%g>`XgRQ|0<k9s;zQYPJjJiM?HmXKv_igIFV93w!Z;(V5P@) z<}=ukV-Wm6q~J&gAd^~HQfuo99Ka5Y zI}oFwLRJ0)tzk!4!+T1@4rpKu8mg2A-SKhO!-I`?ku%tQ7#Y2>9(2UP`kz6$%46;X zDPl03(9(Y#mj1Sq{$ogI41N1?3oKw`yYCs2a^J z435*#WPd<*3UgHq_fGb>(aDd43afsCLJ?N|UaQ#~R&z|L*$Xv{LCsUGsCiYXL9WRd z)clNUeup^JJRPaVvI00<{XeL}8J6m&IGuAJbalW{Do#TJJW5@gWcmJyJ99YKo55qx za@_7wYd4RRYwo~#@=NHY7W(KfAP47(ueiPAakLk(5@uNKaBJ^w9QOsR4mfk3Vfg~r z%dxdt1$%H$>pj@RV?az;Jv`fZu!I% zrm8Q1G8fjuwdE!ZgreUU6Vn17}TH`w= zPWxRj`|Mht-rsAcx#MwPUESdI2Mps$JVodQ?&TA?8q@1$7{+fwKM7oqCwBRj6rg=f z=tqGSpdZm_9|mp)|D(VvAb-8>UgVc*w5I`o0{N3Qrt_;Wl%E7F2VcBK`&=3x1p_?@ zWO;sd253JDWcezM>EnT0z-IvQti~1RryIsy;IG$c9|4kn7+41SA&vGHp>G1N1AT)= zy9oFI_!mn4eBhnPpR3Ux58Q+NWXbObyaV}ujdmQ6_C{&6&rH+$KL)M^y-uS&8Tb<9 zqyW(Zf$e(M*5(}^k;xak>0B@y&Cu` z(vNCP-vXrnHfcb{4FktmU2qQtlaz_6Z>6zNOJV2Bh3aft33IkoIf^ z;&I%-7LE2=Aj_@RXcqxlZZeSNMgnP%U-08pZO>64DDYA6 zZ340$`M_TS1CsU&8bHcBKS@1{7O2-~p9E4~P^0}8a3}co0BK(}uoAc(NV#P|>RBY| zX_8I`Qhq<+D#-I|wBvx3@6~7&9R;MEx31B0jssb*Tp-J51M!?qV39`qgsscJrO`eHWcf#dJAmtfELR3B zM!B^b?OY)BW^1$;0$FYtkmcfmEEfm71$_7|YNCB^ye@Y}qg@ANxr0Eq^D~m(An76? z<;?<8UI17GdDAr7BZ0JIm_~d1IL-F}un_dE8tpP5`POQ*i-44u4_pd*u10&Z&JUz$ zv_}K)17ANN?T7-hoB>Qnx$|Qc+8+ad1o}ZB_0(vz_X5ek2Uq}lwMKiZ&JS$SXs-v7 zuM9|g)@rop>-@l6jdpO1<~spg0lv31+IxZ2yGNs44WwV!0v`t!0abm0`QXddXrCOd z%LO&s$ARQK2BaNFHQLoWKk%qVdl-;>gMrJzm#oo#bd;7?rP1CBd>(w8faKo*Tn7I2 z8tu74p9Q48fJQqR$olltXm7t-kIVHywnH|M@)iNv4huEf0U+CWk87uN|rF%?8rm$w10W z0n*;_8tuVA+I#*=UA|tUeFjMWkAX|TU#HQ|*7<=&8twT&w)0>h$B!Ra1B?g$0$7jl zW>EhT!D=AoJ_^i%+$xRsdLZpsBsdJn`V7`+_XAQ-{cx@4V<7dM08-CkAoXk&ECo_e z5ilEa@-^DCfYdWs@cb~Tw?_L6ka`XSS)Upp^;83?XA6*e773;Rsb@Se3wlOtw7UbT zr+%o$BS6;YutxhJkb1TNsb@WqdP;%Rvk*ug&q5&e%mPwR3Xpn|fz(rfg~qpl)N>q|2|33!+Rp%4pDlumfcGMQp+ntkb0_siy&vaM!O71JqrZ~1MfwCvPRnvq@Mgix_mA$1Nqq+ z?cn8_|Aa>SAdvM-0{#{l54;)taT@In12zA8jrJlS`BQ-89}nbs8LiPy2C8;V*5%G= zwBG`f|2S|V_>XC{13Eu2O`}~sK-<3-_&E6Ufh?B`T)=v0w1byPJv7?KfscW2FOc>n z16i&g@S7;-*Jy9=ugg84(cS{2zp{bVz(v5Vz`B0A{7K+VC?C{lF9g!x^EKMDfYcKJ z-U#|MjrM5ZFG2SMX%D|>K)&;R4P!p|>NVPRK>Di&NV(5ww5x&Se-t!IPAmv919_y~K#qfRUA4S3zySU} z)@auNS^gP~b~TWC9|g{!T#Yt=3x|9gG}@)WG^C3(+T(#NHyRiX`bdp-Jdow$G}=+X z?}G1q7fr9%Xje=6QAy_le~12^tucKe@F>#rHKxx3K8JKbWBO#^t4OD4Odk#W71I2f zbYOaC;7^cF(wJV~S=)OKI34z#(P+OV^y9#3pdZs{9|2B9`mjd(An;nGYc$$rK-PaP za0=+FHQL!g&ZFl$>2rg6;AG_U+h;&~q0r|8U7*j^Xb%P+LAiq+b-5Z~D)OJvXm1hv zCg4QSH)ynrfX|~G-nFCb$p%hB{vwU`G~oTn_X|GILGx_|l5dMfdo}QW@XZqJ2YiX; zfYjGrqdhoD)02U;zn@0i3#9!IB-(-#H{ea33K-Qw&bVOk;XB@Ja9mfO|oorZIgy@M+LT0~D$oNuep zt^<;O5;zw0pho*Gp&tj10sWXp`ylWb`1b;T3fu!6jr?kj_9Eabpf3cD0)4(lyEE_+ z>S?3vcO1z2@tt$P^rJx9aRhiZ${p5d?*+1cdo-q(0iOh4uF$iE9sq6voj)B=3#^aR z^V&I$>4$-A?}I?}NhkJo7PCtF#Ma~jj<0$GpoLgx!Nke}WeNV!SC;ViGwJ`F> z31t5s3>*r2vPK*4tWfkM;1J5uXh#YCybpyyuh(dQ45XZsz`>yNy?{XbxX_OR2Z4S> zqkT~5&j2q6eXmCQQK4@K4g~!HjrJy?uLmZBUZ&A56?#4pTlYY&Mth;q=K?PSeU?Uh zve3r^`-47Oqdi#Y{eb;I=U3u^c9PKJfPF#7kNOhr^Il!wbHF~JpV4Ta6gt0R-y8I| zG}=dnei(=?Ti}pJ`x&9{0rmpDTBE&P=v#r!Inp^pS&>kt^G(e5Yo?m#T*fzBH3IH5-YvGfM`U3s8=4x19n z{}_m+HBhI~J|XnuKrD%YV;b$lLO%$^QWvPvXzvmFqd+WifhvvmR-tbKCW6kNLIB!p zg@{dI6@`r#de-MZvAK*_;0B!yx z4C&K=7|Mak8g2eu4C$kRF`$psXvYcN3q)59L}|qPeKkLSeg;h!cuS*w1b83h@Fy`S zuL_7N2exap148GI{-NrD$r|k_q4PVEs7io8hXb^a11aYi5UK9w#e(ejw%j2%Qpi&%@}1#EpV01hWN?qZ2a!dBNR+_X;i(yj<{{-p_cr zZ(_N{f@1}H2)>O@%luyoZW3H2I7hIDU;{cc`R^56Ab71H_Y=%-BluHva;EzVdIY&n zlm4vWD!~-NPJ$@ik*{el^S0|h@r=Oy2(f{zPk3C;!n3PWrH@F?(UbnaJyd zeu7T@GVpESuYu124+D1rUj%Ld{sxGb@v(h9nS!Z;!v%W@wh{asgM$301m6_=wcyi& z4-0MhKThy+ z!7hSc!Ot*=$@f>mKL~RECH-l^M+7Sc%LEGrZx*~xaJ=9k!LEWn!Fo&*l>edN8-l+U zd`57m;I{-<3eFcCC)iWaC3p&x4CWIL=UwWl75uT_{etTSmkQn}cny$KSPw~a(xRMC zAe8uL!50Mg3hog6uHY?#a|K5Ub`|sq@~6Hi_f^5?1b-sPd6xMb1#cJ36PzzNRq$%T z{(?z@rl9)ucF21VLMfN?F!5=@M+7Sc%LEGrZx*~xaJ=9k!LEY*COrN;^%&&D4+Y;4 z{Iwu|qMZ3V1-~VjC&=G}Vg67-{uB<=Z3NF_US|5VAm#>@{-t1*V1?ikL0qFKzRQ3R zU_Cb&p2MbIy32nJ!4Dlb?iSSGkgFh$TWXb1*TSd|y75-by3 zB$y)T7c>NeQm;dTRf1)Liv&{y{el3B@W?vq*@1D(U)ym$I2$n9!baz9=|htLtk`#0 z(pO5_d9~V;VxRM7wLy}0UaZFXnEKw3^7&$~^IEmn#h&*if2^dPm#Xa*dz^QwT_$Pg zm1>WOJ@Pq1uCD4-Y%}=_qNBq|b^y&fC=HNxH4%KPUD$?@#M5Y3KE64~adU zgg-&j&dby86?>d_r*U4SKb%*m-7WSwZ%%Vb+Iex>DY0jW$mcr5^3H41xSlXQO7go& z+IeYOrP$-VGY#L7Rs7cqe}&lNyfN*9=yzU{#viYy{4C-B3~{EN*P^{E_Bd}sOO>?q z^0VDykMq8>1WCUs^6n9PoHv|(A@(>gIODs(sPFH>|4*^Ud8HYD){gnk8_oVE_Bk&! zE+k!{&I)d=e&#Ttk~ncimXu5&fCZMqubPXSjvAO z_BgK)ds*~5Zw*^2{LcHwhDyHk;;_e<#{6{jT5Zqw#XjfVVPA-S&a1;pB>jt-n*Ws8 zcUaOnlK#D<-xK{oNvBKNc~jUQ#eU~SVK0b%QM0uC{*rDd=}lr^S4p20dz_bq;K0yCBSkS06OA-D@OxG7 zeO+5NyF0({RdvfPDi-sXL^X?Okl)ber9uSZS032r`a#p~@b!-6^SQNaT|AxtYtwI9KJMqGN{U8|i%MeS%Z?dG~r}ml0O&_0{xJMYY!}dmgOX z>%;x7Ivf8H>+ki~91xwnkM1$+@Abo;u=#(%eFxp%wsx#x`Gx_yC9 zo!{#X>h-W{uTQ9tU&r;p{Se*Wz^CfX(@|FMS^p>P_)c5@4{)VBXrP%+cLa&SQ{wVgxJ=+uG?-yFjf9CV+uhCpJmSX-psr@eeNX2ba%=dB8em1qU|2_DI$B90K?zj1G75#rL=0hQSEu=l;Ok#c#035G7FT~ZHTp4uE=Z@DY z8)U5`hSg%%B8SVDU)4}-kK?S8j0O+sKy@Zea8VDsvUS(W`ifZp%yt4U1RB9Q$M(hM zU>7?dA6>Kar)CB49!T@xxR;B4m>lG*=|&VfcC5>fbCf(Ag8ORVOqjPsn0z7PV*BA; zJzg9}O9bhgs#T99kk(WF7N`WMGbXf*Xx6273>A^i)xK<1gnlPnNiq6T!0^d z`Aoz-q0@KE_I&O%BaNhi)RQ_=OOl2-kqCns)eKHBV-BQ|G?02yM`}sZ5GN90Fe5ye zY==*nj|`DU(m?7-9jPTrL!3y2!HjAK3G;zDkVeu#>Pa1`B}qe^NQA+RY6c1Oo;i?4 z(m?7-c-q+(vn5GGoJfShjPQ`O?GAu4Wypbky?^8#EC>0%&2CtJ^5RviHYHBe5>D{lV+rmG?02yM`}sZ5GN90Fe5zi zZBsWV6O))2zFK0W8EGU9q@L7~T9P!xi9{I8sGfo`le$_zd+C{0LIR0kxgnGY&w(3_ Xq=D3vI#NrLhB%Q3gE{H-xNiRe+Bm$v literal 53680 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 r typedef struct ObjRef{ - bool brokenHeart; +// if brkokenHeart and forward_pointer added at this point bip throws errors +// bool brokenHeart; // struct ObjRef *forward_pointer; unsigned int size; unsigned char data[1]; } *ObjRef; +typedef struct{ + unsigned char brokenHeart; + ObjRef forward_pointer; +} *ObjRefGC; + #endif /* ifndef OBJREF #define OBJREF */ diff --git a/record.c b/record.c index e67ca85..3d8086c 100644 --- a/record.c +++ b/record.c @@ -5,6 +5,7 @@ #define RECORD #include "stackslot.c" #include "instruktion.c" +#include "GC.c" ObjRef newRecord(int size){ ObjRef record; unsigned int objSize; diff --git a/support.c b/support.c index cdd2d80..20d43cb 100644 --- a/support.c +++ b/support.c @@ -4,7 +4,7 @@ #include #include "objref.c" - +#include "GC.c" void fatalError(char *msg){ printf("Fatal error: %s\n", msg); exit(1); diff --git a/support.o b/support.o deleted file mode 100644 index 2056c06f16f4894224e03aa05e05fde89a8aa16d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3472 zcmb7HYitx%6h5=lJNs(4EsIDIWJrpD(A|O%2rpY&kUj`aiwYVYx7%r1*qzzTZp*6) z1dN(!0*&}j1L2Pne~_4{m>_B}YBU7UVASw~_(LGZs4<#UQ}8=8ciQa&5l?dNIrqEg zetREt&dgr;`= z{VnUaZkg!&-WlmIUjY795QG@3paX1tF^qJf=wz$`2^hv?KA$Hk$EON^re~SER1Blf z>>V61QoX&7ImGL2eX_ZG!+6Ng()&r;mNGuTlPG<@jMZ=RlybgH?uio(NxMMvh;>|s zbnnQAO}l~Re2>XHYLk4&+mF?Gi{<0a%6Zza;$|$ zt_ErJda!BqhDsyz6&eN05$Fi?s7?pE*_Os1KR5gITj!3Q4vjT^L$zMqRTUg+(J0SFNAqF5I>JLxrGQ>=B_R$liS?8!%P?FFVF|_1dnvu=$P z_Ypl?f5P0g^lakPCo67r0q=wIC(QHE_n=%$xz0WVbp?}o{+R5#j}rXvW#4@O;6K7a z5Pwawd&f2XpBR4SvvN^n;kwOxQ&G(;V!S`jF6QJktcOB4j3G{R3Gvg+5GRR* z+*q=@WpmMuI=Yjgm@b j+_g9vdHhc)_LGrIWwUmgvc+6}iQ6ugL