From fd15e54cdd771b63e6506fa9e3816c7695821b84 Mon Sep 17 00:00:00 2001 From: nilspolek Date: Sat, 27 Jan 2024 19:59:01 +0100 Subject: [PATCH] made some updates --- GC.c | 138 +++++++++++++++++------------------ bigint/build/bin/testbip | Bin 72952 -> 72952 bytes bigint/build/lib/libbigint.a | Bin 27544 -> 27544 bytes bigint/src/libbigint.a | Bin 27544 -> 27544 bytes bigint/tst/support.c | 8 +- bigint/tst/support.o | Bin 3376 -> 3424 bytes bigint/tst/testbip | Bin 72952 -> 72952 bytes debugMenu.c | 1 - njvm.o | Bin 56632 -> 55992 bytes record.c | 7 +- stack.c | 28 +++---- stackslot.c | 6 +- support.c | 2 +- support.o | Bin 3392 -> 3400 bytes 14 files changed, 95 insertions(+), 95 deletions(-) diff --git a/GC.c b/GC.c index 40b7e8e..b0c2f5d 100644 --- a/GC.c +++ b/GC.c @@ -27,73 +27,73 @@ struct stack stack; 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]; -} +//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/bigint/build/bin/testbip b/bigint/build/bin/testbip index d0cff75d4aec4a66501c8e274ccb575e16fad492..085ed3ac8e2b855f08f7c99d3c8878b57fcb500a 100755 GIT binary patch delta 6743 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 diff --git a/bigint/build/lib/libbigint.a b/bigint/build/lib/libbigint.a index 66f30ba2ea968c871b77a7b8b18577983300a370..76ad3c5482ed8e8cde9d6ccd85346d7792bb048e 100644 GIT binary patch delta 29 hcmbPnopHu>#tE{l76ulEmK&9{8Nn=*%|VQASpbZm2wVUF delta 29 icmbPnopHu>#tE{l=H`~B1{;;M89^)))6GGQZdm}0E(mD= diff --git a/bigint/src/libbigint.a b/bigint/src/libbigint.a index 66f30ba2ea968c871b77a7b8b18577983300a370..76ad3c5482ed8e8cde9d6ccd85346d7792bb048e 100644 GIT binary patch delta 29 hcmbPnopHu>#tE{l76ulEmK&9{8Nn=*%|VQASpbZm2wVUF delta 29 icmbPnopHu>#tE{l=H`~B1{;;M89^)))6GGQZdm}0E(mD= diff --git a/bigint/tst/support.c b/bigint/tst/support.c index b036b1e..300fa4e 100644 --- a/bigint/tst/support.c +++ b/bigint/tst/support.c @@ -38,13 +38,13 @@ void fatalError(char *msg) { */ void * newPrimObject(int dataSize) { ObjRef bigObjRef; - - bigObjRef = malloc(sizeof(unsigned int) + - dataSize * sizeof(unsigned char)); + int size = sizeof(unsigned int) + dataSize * sizeof(unsigned char); + bigObjRef = malloc(size); + bigObjRef->size = size; if (bigObjRef == NULL) { fatalError("newPrimObject() got no memory"); } - bigObjRef->size = dataSize; + bigObjRef->size = size; return bigObjRef; } diff --git a/bigint/tst/support.o b/bigint/tst/support.o index dd5174c65e44cec3388f1e808275f6d88f831c34..f5bd62d4ca32ad2fc9513f1a55fb800a22c741f6 100644 GIT binary patch delta 686 zcmZ9KKWGzC9LL}9F7MLZow;76flI*zqx2tbErKyaxFcO+s)*>&;$WAybm-6yrENMC zTBNw>@#~_Cal3*@po7gKgbcQ$I0ctjMB>&#kPbnAulEAd2lu|e@8|p8-Q#z!nrtOs zdG<_{U5uHCRR57{ABQy)P@%f&zsvS@;e-s+9P==M95VJFiGE0Zh&gbbZxGsLskgPz zpP>&~yQqe)Akzvq!L?t=W9-W}o#L?K+Shn!Z%Dd^8$=72=o>sCx*+MPT>A+f)lC-V zx923S=!}U2q)l8^?>K>st1@OrSlq?BnvHoTy8vehk-c1led&~ygU$}~D~;4q(0F^) z)A7Fc*vxNRtk$x&YqWX4Ww7(M<<))}-uV!)THC-6k?V>7QH!EZxp45eariTm16abe zHWn9sR;FlzL`*%#r`iZK@wv8X&52IMZ_y;iI$BXDGf&J?UiMCs!cdtwIrD@RhDFAD zgTs8(QeXrh#6H73_UkLSr>C8D%4o=Thepf+*7X#;$M5>R!JGPTKCYE`ro^Kqp3tVb zMea(8_fx4-d6fcf8a=~xc4;qler%hRuFU-)~L4X_P$A1?AeZl|$ delta 660 zcmYLHO-LI-6rQ(#F}pEwTL^4wN%3#fid3OAh=fhmi;_#LpyDAO1aoMy_GC>F!HYe$ z%iEI*>dl;5P%yoe)F9%qc=DF22fgVsl>j=zNSq(!0u{X z@!57?JLayxXWW!%zvONuAJom~A`GdRf=8%At9d4@bHRPs3yyUNzRU`aYrZa_3rVv> z_Eo<~7x4rfGbgU$iIYnBRC3IJ!fg}oD1IdOiR#O`JC8@?4hr{F^sb{NJF$fL_mps# zbjJ7vt_=JjzqD3FydmNW#k?Bumz)eXg%~qPl@OGb_GR|FmWM)ZfVrFHcyYVDQEaHC zkD19_>hUTvt6s>sue3zB%h}?koUSH-{iqPv@~;a2mv{auy#SN=LhB0inMwl$5Dm(^ zIIBH_16Qg8TF!rcVCrfI>uDo1;Puu*b9wNVGyV}udu3+v%3k*AC`c{|xaM1p3V z4IaW6CiOY|sR!|!Zdv>wD#fRJ^ze@!hcyIaDEd&pQJb}4wNo2XBgBovYCy~2oZ-aS zd-{at+x3>19!4hTb1H*Jh7FJL+L-C7zmqIwVQM-c<~2c!>v}%IHO)DJpF?r*un^k2 E1zX{A@c;k- diff --git a/bigint/tst/testbip b/bigint/tst/testbip index d0cff75d4aec4a66501c8e274ccb575e16fad492..085ed3ac8e2b855f08f7c99d3c8878b57fcb500a 100755 GIT binary patch delta 6743 zcmZXY4Ompw)_~8R0RaJF7!YuRnQ?|c2SGqZ6lHKgOn#Kn%07R9u9l{zAeLPv(8(mw za$3~Un@@t)BU)yB=oL~E!uyncXrg)bCMG=k-7A`1|0=PJZ>>G&T*vdx^RUnQdDq_O z?6cN7=WxH(<9@5hmeZQ@5J6yqAgn0H0e|I9y&Khm%LgjT7mrW6w@0NZafaOqfz=-4 zSb1}kM@Jx3hsi#s{eBMSqd6WYy^k4A!OvzQ49>{(j}BMTzZI- z50@gsd>P}?M3nlWDJ&S~p>&%|6=4DF8cBg4MmW=ODeJ0j_WFm%$}XeP#Qx5qK7>wk z$v-?rb2wP2+v6y@AM0c7k7YvtS5O!p8lDj<)ER^-`+kM@Fswsw3VN;R-KFsEhbHvK zkXKb@7Zu)J(2HIjdW+3f_F9Ek1kJF}@Bs8yO<8ZRRCsG4b69AE8ol+4Ubh>B`m!Tm}_!vVd;Q`QHm72W{6_Rxrp0Ntq>(R1r70^Y5LfK3R zkH}yL;n|27O&ZeGepU8Hb!1DudVb4paH7?M)r3b6C%`2{X5tf zT{~9RXhRR)%_3-ujA2*cACYrdCyddX*h+X7$IqccZ_+ejgr^_`8wBCBup-8}51RBA z|D9;%mat*Y9nh!GWu-92VA0$S66*TAu&$)q+6SeE9L*(#RRpI|3*Ck%G$$3FjokBu z(V#h^@Vv}D#pwB1;aP~DZ}FTiJomS&a=VrR`f6!ZOUUGz&cYc^9Fyj z1AB_ooHA$;rpmPdh%^m_9&;W`LBI@`j1Kl5oQrZ`&wDmHh5Z7XqhC<9Yat=Z1mQ6+ zFbk}Uai~1}VNh%`tA(`K7ueI#5Sz%(Lsx7ny8%9NIyM8NbYP9MvX5b1+)8!}evV6I zfiCNaEcPO77-7*A1>!!brG4@g`j0~Uh?T0&Ab!p>EO}980(>8BWWA%PMelCIpxMxF ziD9_?mRz<8#>BtCu0rWZt>$t7rn!2)tHB``2JP_{HXm-rPiNEM_DC(v7-?YpIlEWE zUV*|K*+k~x+-nN%5a$NKn52cZ31;lZ4GAf@9khO-g011~8P1MMG_&K# zYGF}g7_LKnw1O|<{BF*7BfkyUC<_xf``eJmuWdAE*K)Rcl$pK6=WZJn7In^@#5PYm zc-q~DJLAKn3o$yC*?8pAq_C*H?vxbyk-H5ee}Iw{6N~2S_9U5E7>^E1o)xvios^=N zxZ5!LLvSWr*mXFXJRKiV{wax3>F$ISmFjN8s1)Owik|KWS~1GMf$qi zFfxlrZsL(sN1NGeuxzx2{V&`eqt*2IKfa^*B*rT%K{l0|)ffvl0^$xTxSybFoQaL) zbJmYBvsm~WvTt*?M!|M))|az+W6kU#l#Wegf8y+X1uJs)GBl)V;df-az?hoIQaPKf zV3%;VnX{jyn%PItg{&`U2PxPL&Ti!F+;L|1Dy$o4iR$rlyLxH&F1p)r_kwxkTpsD2 zW@ZI=_FAx}g+(89C#C4m+-(@$=L3I?8qSh1Je8Sv=#Lm$UvOgl5^B{GOc5P;r(*@-GjD%uzrd{hl)KMhyQXYUfK?MxnF01q&@X(- z2m49Dqki(TH+4W)3}B4AFBa#D#pOp1dc@Qq!+B3@|3(GhsK%Emy2)oXdhvmC z|7Dn$uESRPYI>?>8QR>>au&3w>nX?5b67jHPtt0R_`2N(oa<-EpJ-7{7y@4;4~Oj& z<5>)xm}p{=aC4%Ly~#sfSA-mek&{f!6ACA#vR@%HLkrs{c}LvBG`Oa>wl;R?TdMIr z>skOl6CL>E>nLiO!{>QgG0)q4p7YR-Gdz)DW+!ki9s3gI;W&~<#3~|6c*GuzNM-Ny zmHn*V5p~LyJs+(+07+J@=E2~{FFJ+Kvxcv{$!ccHpvkIZ&%;R^yLd#WBEpkL+s zD$C$2ug&z17^hfyDtol@E}AFk1I0Y&y&z%IaHi)=|DI{aw{YWR9eo1exQd6YP=xGp zg<#{KoQiJ`PMa2foa`OZjXCVT-&66;Ro?F$KG9^wL~C3Vb>Ku=SZXul%aPNjW1qr4 z9K(4?up%Vi74j} zKikIcL1DH{KojMegU>};W$7P4o<9^Cn=0tZW+?x`Qy~mgn%8DQ@$HwA0Q4R0r zoMj1|sG1tjCUfF<_}kQ6%~x1|?ll(y#wQbv*_c?d_?bb;N(tJmpnRb8NlQdBQpY5s zK|%Zqh0`oX0}|f&vMtZ^mV&yb#9m@2MKIZ_xGcR zz8UoBv1rCg)_SzkH&Gz*@8pGP;v|O?9rUWt_(bV>VIjjL&w85ZyDj`f={79RvxE$m zJZ0pGf17^*^uiwWJizOu#h)XO^uf~wedxI^dF5oyeU3_TQP7p2;vYuy(#G_Rc7}ka;2AamiwktD2R0N; z$G(29U^l&XPtTpQ8_%A$Y%?AQI)tu=YgBt4Is|7u-uK3i9WCAut!KS8g7aE{(ApDF z)w&hA9$%p!dvq&LZzi-}^Mwb~heck-uVVa9K(M>32dm`an#p?xIv{z*8Mdq0v(TYt zr<&iKHQ>S4H^2Gp$BczGkD24}Vq=?IpL<2kW;Z82pW(r#HkZB#j9qE=TEb{+k~T}Piau48b7>o`QxM;TmtxTGI2y7b|azSiW@$4Po@luNfu`mJb}zQm)1JU`Cuv-zw>yBV77_OM0=zr5};>taz7xQqqHyUHU&Iy$-LJ=J#CdI(DbK zj)`2K87R!oav6#wpe@^_*GPI^j!Qo*=@+KD^c#}CdYVgDRk)5h(dj>MyPQ!);Cern+}D-H*2IQ%{ZhsJ3*+{(vcdm#>| z#kDGykkt7U$~{lxaC|lnbqi=%g+uqNIPryQK7B2Xoo~^2LAl4TzP*bK3RFxgBlj$!4HT#J7$tbt>a zS;nZqNXCykj&+K?gvn+Zqq-wGMZ$_jqc>u*S;nXwNuD5KSz-xcvRTHcN=dd!7~X8c zWV4J>@sgY?VRd3JVX|4qsHRDtDPi5B(FZZvEMrvZB+rqs*LMhsk+9Wb31PBX#;!`3L&C0# z4TQ;N8SBh<&GwFj;XNfxHp^IffeSl=3sZ)ai$-6jXXRq1FDv?gU17^~7yX_@ZxP#( z&Xmpaq-_%RrG&{k`Kbt2;~)JF$W=+@MY>#9R7a%C1w;iyx?Cw#8Klc4K_x)CocomPq{~T8 zNgcpu3jBG7GEZLuOr*>sT~0YlG19M!O~IHHork)D*%{Bu6*x8h zSoy-0<8qZVR=coL5s_&SsH#_qw-(SvF&Ph47WnqcmlB(Xy z*JEcqUpK#|;=R(Rujn)G3^U&vR?|F~ZCU){k~i;mMfG)EKi>S?+>*b3-fgqL@y%av zee&~p^DAj@4XpmAC;zJ>EkRq4&N(o;pz zdrqW#0T9_tPVH<6@5Y{jhI(r2if9fR0re627p#|6=P&vFMxI+uoQLXB-~? zugg1T^e)@9bhmo%xeJNncRE&_wS3Hu{$I0`GR<8#E5gpyWqbvL3{IehH*rxWYI~7x^2^~D|(DzT@@P62539NP- z&g>1x+%EWm#XSI41kPZga49gDy$xRlW-)h&3rb6Ukd$9m6y^oSN zm%c&CjZ2;(UhHQ$9})m@DBa`I1eChCv^d0q}1V*YPXG$0`KUbrIx z0Sf|eD1bT+Op9K>4^$))y4ORs!@Z z^p0PGgsSRAo2`1Gx~xP2twAU_>@E`Lwr{msRMlmL3Sub_GsNKNL`Xi0sS2oo_9MdJ zxPgptdAqfI-2Sq03dYJ8e9z$c2dyWopfODWjN`zxNXJ=??(YP z3^6%25g@*9J=fb@c2@yC_7wAK)7L#u6W<5u_%t^J%4 z{A(_t^}^i7)esdP6ZmtWP}LH*(`pZ{E~`;TVC;g%#ZZJZ-{DNoM_^raySc0;3uiDJ zX2Ra^81@;w7e0&q9SjjhwhYGNcmftj7&S-G!(9*p_*On2^*HueX&8kwT{AOK#79sqh{9@_&Y#vLlPKP-!}!8%h4dlrtF7Gi5FF`6JF z%ElaU9>?ckY;+2{3z|3`R7K~p)6fyUgGED0jE(i8-(XK6*0B{2@wP9lj}8J$Y#y5e zyJ8dBH8>NS8uoQR%+L!3jkndFb(C~c!qp4uv5s7fI*T2GlDOsUTj+>OWL}^dSip** zbf8%?(~r_r+9h|PrxA`0Tuys$UKkZYb6&shV70BFae%80`KfT!9K&8iUJG6E-f+(x z&$fXfej)oD&L?O!pZMa+)N`Fp6L~EhjW@Grpe=q98w+uRQdk}54l20MVB;Vo?!du8 zsVoF;4N7F|Ik!f^z0J8tP&8NzixN!O-7^!lP@SO1{h|BkDflg%zr^{_L=$U9-i-Gl z)}UZ#a&|vwTac}y*p-7r*iTTJq}4ol;h_vJe4ix%Q%AU70&)s!MbrakB8PL znb;`K&qxYk2Z{HuR`6|JFlullGjNBC=%9tWNekH$9(;iU{tK*2HnXpwHhB`e3de?O z!8;|C9;_HRS-~!G25x}TlvKPo!KV@S;&2}YJlYB4`3^~CYdE}gNC<0(q@h~>n?AqY zjsPz>JKTtIwa`Aqgw2LxhYStDVn$q3ufV?nHq6M9IKOkKi5ZbMv+bPSqF~Q*whw2A z4>PfDm@_Pq&E@Pf3bvB7pFqcOE!;--BKV{xvSiK2-&N2m? z#@S7r%^7ZDE1+b!ncalDBea^2uqC@Dy)S2{Bb&-5K>rbDY`Vz#|5d?tdh%0_=RvDS zm{>Txhwv5-mn+~VC(JmUmu6x=LTOqS`vOj+EujJ)X$(7y=NBso^&UQ!9)VeU4x&CC z8z>cW92AXAWjfe1GNO30Cl(z8jy z*QoK03Hjj=mTvT1j+o9>HeArS$R9r@dTu5}%^9 z@{_JMjC{uf)+fifYlWU+Pe5IAB-k_JStM?T7Fsg=Sbu2C&_!)_b&>*YaJ6BeMz}i4 z$OOn3l^XT~9(N7)t^KyS-LznaKl{{ud=JHb_$@d_>7t%?^_C(|akXK@?L6W&xIZeD zy$gdz>)08XFj^NC>&i*KMpqm9&gQ-c;OOYouvdO(H3iaYUIJ#(MLnV?fZS)Li1%G> z7%_oITm{9JRJI8AT6C-kn$Y*6D<}E>-PMM^0{6{{2EYrva!1c^je0TR5qoWUpF}kSdT{+2jiK`8L4{+Zu*fl0K>@%zj=NFhW2ss*t>kj2eX+FH9pHNMh0yNe#qiDv@|E4WpL;r z9Lveoyn{vWTIeC*Ga=Dn!K{qMZa62zmjf0hi0S?r;BhMXTFkV@@YnTmp=`G`R1VO(hTLXK4_Qq+^oZ8NBY9D z{2=B5CHcWj1zYkHJsTxV4`=dIe6$pXcAPx71HwD;qnh6Y^M}7{GNGwmZRvTuHnX4tTgT>3bRu`E$K7jo%$t7k4<*!UrTxo{$7gj{wL@4PP+4&$n~jy z!qRM~p+Ev!$2#@xl3qC8sh^Vct{kWSt)%aK(y6P~Ij`LfQ_jC>@v@r*wa__Da1#!Q zy^KZnweMx9w2HAR7M*Y<9%rkQalrMdg?BADv}EB>F&>B0PvWq7A`bOaaOf2Oq+$t4 z?N6b6?`a%9o`FNnd>U5baAyq$?y~dnJ7{d*O=FjMQ^gYd?tGb)Zc(FVF|1u2p=Jdt zyIFiq%~IHW@dGvc!O%A5L@_NM6H`dQLH@t5EvTDF7dzZogh4jT808MhHzjPcXmCeN zHp>{L6v5)^YY`27 z5R=U^M(Ikj8VCBN6=D%#vRTF`i%Is9uyk=BVnwo9#wfW-)=HSHlg)(xj*x(VbeV{Q z>pbl{)dJ1waG=%Hi-x|q8re)!gi(o*jPGY0n=cj-CY%3*Vdap#1OHL9`Qko~NoE{b3zC;hSeIz%hnQ@ZG3p{Dua&T!Vi94oS;o30%qC&o;y%J; zvy8RpJEK)f7@jF%vRTIL6P?&;yfGcUT{L*H2xb>Ey;#Bj>k0=ZIq6p<`ha*I=}g%y z2W^$GcO*>KX`YH;KK`RW(y0hqMT0lnplTa)a=$m5*ylf8hSJs-=jTiLNw+2afT+>3 z2#vgUx(%6I#Y{Bw=NW3e*^pW8GSpQ_m)i-o57OnnL4AUBxk0E=CSC3XRQaUKB~K+z zx?I9kvZyJ_~E@vWT9_ez*QHqh?EglQNq-Z~RHGo}n-!L0P(;r(= zynMyH#m@^fN0-+9U&X#%4J+@3FFsgxsv>?t^#h;qDZZKM>7DLh4E^G{2e5zPsFL@C z_Ewz8JvT3+_QmO|ypN1HRJUyTd);p)o}X5vx?&i!w&Z5Y?!60G%hdOew0-dC{H^9@ z_R_SY;g8y19de=h`TKi4Pvy?aPS_A%ee3e1uwU%M(&MwQRC}gGE{_e4vbDY0mDCh! z6^oy!d}naus@lUJdG0tk8)iq=4r$$z8ncbGZF72(C zUjKCW$IkA#G zA6HNMuxs0v&ug!XtvXhiJ=d~m3ar2NZs&Ec_MeW=xZCVMqqQjczedIEwjKYUhNn6M oBK`@wc~c@)U)J|2Zr$@QV?#pDl9FTN4n3Uy>_%Tz0d4)i0dd~BLI3~& diff --git a/debugMenu.c b/debugMenu.c index 6f15234..44a1602 100644 --- a/debugMenu.c +++ b/debugMenu.c @@ -18,7 +18,6 @@ void inspect(struct stack s, int fp){ if (input[0] == 'o'){ scanf("%19s",ref); ObjRefContainer container; - container = getRefs(s); for (int i = 0; i<= container.size; i++) { sprintf(refStr, "%p", (void *)&container.refs[i]); if(strcmp(ref, refStr) == 0) printf("Adress exists\n"); diff --git a/njvm.o b/njvm.o index b6ca96d6db7d9494b1eea4f6fabc18957f8cfb10..94e432203dab66212d687a35117e7dc2f92e4ce1 100644 GIT binary patch delta 20152 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 delta 20220 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 diff --git a/record.c b/record.c index 2a2e34b..8435155 100644 --- a/record.c +++ b/record.c @@ -12,7 +12,7 @@ ObjRef newRecord(int size){ if((record = malloc(objSize)) == NULL){ perror("malloc"); } - record->size = (1 << ((sizeof(int) * 8) - 1)); + record->size = MSB; record->size = record->size + size; for(int i = 0; i < size; i++) { GET_REFS_PTR(record)[i] = NULL; @@ -33,11 +33,14 @@ void setField(ObjRef arr, int point, ObjRef value){ printf("Index %i out of bounds for length %i\n",point, getSize(arr)); } if(IS_PRIMITIVE(value)){ - int size = sizeof(*value); +// printf("Size of value is %i\n", value->size); + int size = value->size; GET_REFS_PTR(arr)[point] = malloc(size); + GET_REFS_PTR(arr)[point]->size = size; }else{ int size = sizeof(*value) + (GET_ELEMENT_COUNT(value) * sizeof(void *)); GET_REFS_PTR(arr)[point] = malloc(size); + GET_REFS_PTR(arr)[point] ->size = size; } * (ObjRef *)GET_REFS_PTR(arr)[point]->data = value; } diff --git a/stack.c b/stack.c index f7927a0..6925d71 100755 --- a/stack.c +++ b/stack.c @@ -39,20 +39,20 @@ void printStack(struct stack stack, int fp) { } } -ObjRefContainer getRefs(struct stack stack){ - ObjRefContainer continer; - int counter = 0; - for (int i = 0; i <= *stack.current; i++) { - if(stack.stack[i].isObjRef == true) counter++; - } - continer.size = counter; - ObjRef *list = (ObjRef *)malloc(counter * sizeof(ObjRef)); - for (int i = 0; i<= *stack.current; i++) - if(stack.stack[i].isObjRef == true) - list[counter--] = stack.stack[i].u.objRef; - continer.refs = list; - return continer; -} +//ObjRefContainer getRefs(struct stack stack){ +// ObjRefContainer continer; +// int counter = 0; +// for (int i = 0; i <= *stack.current; i++) { +// if(stack.stack[i].isObjRef == true) counter++; +// } +// continer.size = counter; +// ObjRef *list = (ObjRef *)malloc(counter * sizeof(ObjRef)); +// for (int i = 0; i<= *stack.current; i++) +// if(stack.stack[i].isObjRef == true) +// list[counter--] = stack.stack[i].u.objRef; +// continer.refs = list; +// return continer; +//} void push(struct stack s, StackSlot value) { if (*s.current >= *s.size) { diff --git a/stackslot.c b/stackslot.c index 24d2140..61dffb7 100644 --- a/stackslot.c +++ b/stackslot.c @@ -6,8 +6,6 @@ #define STACKSLOT typedef int Object; typedef struct ObjRef{ - bool brokenHeart; - struct ObjRef *forward_pointer; unsigned int size; unsigned char data[1]; } *ObjRef; @@ -27,7 +25,7 @@ ObjRef getIntObj(int val) { perror("malloc"); } *(int *) intObject->data = val; - intObject->size = sizeof(int); + intObject->size = objSize; return intObject; } @@ -43,7 +41,7 @@ int getIntValfromStackSlot(StackSlot s) { } void setValIntObj(ObjRef iref, int val) { - iref->size = sizeof(int); + iref->size = sizeof(int)+sizeof(ObjRef); *(int *) iref->data = val; } diff --git a/support.c b/support.c index 8032a60..cdd2d80 100644 --- a/support.c +++ b/support.c @@ -18,7 +18,7 @@ void * newPrimObject(int dataSize) { if (bigObjRef == NULL) { fatalError("newPrimObject() got no memory"); } - bigObjRef->size = dataSize; + bigObjRef->size = sizeof(unsigned int) + dataSize * sizeof(unsigned char); return bigObjRef; } diff --git a/support.o b/support.o index 32abf611cb6484238776a76c02d6fad4b5704d88..e0fc0d2819c5c3289820fa3ee0c860148c04578c 100644 GIT binary patch delta 481 zcmX>gbwX-_gP=V-0~kcGKxq4kf%bxXAZ!MZAQO;1W8y+{A()^(R8oX>vMrdSt delta 455 zcmX>hbwFx@gPf%bx1AZ!MZAQO;1Vd6q_A()^(RFa2vvMrf@XVpIEt79D+6yK_oiPP!((cKc zO!k7`p`t2KQUA%6Kv8K{2p1+=JozM0)E+AO5~_CkWJzXwNe!so2~g1nE(Qj$111+T zn@e^;WmiIF9{^=RKw|PiW^+yj9tH+(An(FtMwW|A@jEu(VX0>10|f_@Gmv29ExGOwXCAvtjuha3%S)H u?wmZGd!->PXybv#@c{$;D3At$NFWCBVe-KsKG1C%lM8v|fu>I6*$x2JqC|)Q