From 07357c7b4ca5f619dbf00bc42ead29e1c2f6a4f6 Mon Sep 17 00:00:00 2001 From: mzp Date: Sat, 6 Jun 2009 08:36:08 +0900 Subject: [PATCH] Bugfix - disable static method test - fix method name index --- lib/habc/std.ho | Bin 1378 -> 1402 bytes lib/habc/std.scm | 4 ++-- scm/example/pair.scm | 4 ++-- scm/example/{static.scm => static.pending} | 0 scm/src/.ocamlinit | 5 ----- scm/src/codegen/asm.ml | 23 ++++++++++++++++------- 6 files changed, 20 insertions(+), 16 deletions(-) rename scm/example/{static.scm => static.pending} (100%) diff --git a/lib/habc/std.ho b/lib/habc/std.ho index b6a3c266bffeadb6fb56b34f418f650a63e0496b..5132846ad07a2ac6dcc172e4c81a55ebb3f5d8fd 100644 GIT binary patch literal 1402 zcmah|O=#0#7*6V&gJUrCpyE*IS~sL_2QLE!mv*IX+NSAGy0(kmn*OC{iiMA_efzx6`#ewHtlodT z!7vPqr}Ocxwu%v~4B`>-2!!zNXiaOhx+Dm%C(EOX@PMmdf<<)Uju@ zUTIuu&e7_Ey2P9G14s*a`tkIUGmWeD`h3>BhGcuXRJ* zh}JBRX{7}|medJ9EEVS~r6vF`PxHKmr1Igg*T5KU(C?MAM0d|s)G`csm0A4WRBLrO z>MfLcvQ8X>H}~J`Es1bEEy)PbD)lOyOlK6HI5y9I9Yuc6{(4yF;q;WxZ<|MB0+%nA zKuN7}!#+9NL+eRev}4I0S}&YWnY4o|dkWEM>@e;RMLOe|i??`!LyUo!{0Z3*(Lx(f z2POl8NF1E}WP}jisX{0alkiIsB7u0q^1)m<^ok(DwOE{oR8WW#N1NMt_K*!Gr;xnu zd#AeR#*i5A+B-U)b`?TW(hRg1N@Y5K;?Qa+o5QgF(zGDZCL{Sp!QNB^O)#45BUZxx zpv|ER_YST_saVsXdr7S=!}X|Wv$j(m{eZ(wo)+S^7>%1+?}&*s-4ruo++nyY^-!)! z|D${ur<8^h61P*@-v@Y<737ZEp%o3DX49EYtn9=u40XG?`@qVUf}Z6>slAKObHOM! zFyn8xaPeMD2ZF?L?w)_cvgq`{h7t_X0tI>DjUt5cS2wCl)}|88^dRW_3|mU>vPDhB zY%BR$9zR$$Gs8C=KIUziIjitFFUE*Y@n72OL>UhCplqPj)(x54!OK9wWo>Dj{z=+2v$eIfP1?GSt{ZEGUA)Ld z5icSRPx4)K;AsaDK^O{xe=dulUIwy@Fcf5m;Y9@Bm!wU)Di%Io^7`KI_kO>;Z~6Y? zb%tSBJe{9!*-Qp8GlVCGCrk+Mjn$eh8vXN)CPt4~tJBahf>*P$T4|AHwK5IE^-AMP zYlbG~N(;P&Jb;LRrytJ&a;kB)UZ1o=yQFI(D+#MOsTW%hF-+f2Lb%Nv+s9t&##|%K zR(ZUs&G|%GM_Ngpt!OO(pOWQyyOK^0`~60Z(FXl~B|~)YOr=zY0e`N5&#h9e4u}24 zGEdeBH*|CNoo(qVsS(;|nnI70t#fBYMdSIvE?6d_tw6v2WI&~Z-g5hX~o;iPuCrDxtUI-=?V+ga__%PrP z3vt4^l+_VJbax5DVNt>d6{6up($>M8>w7`4!ZWYVLP`)~gll6PpB*xSd=bIhy0@x3 zUNniBT6sh1X;(2K$(EsNB$e*`iKNv?<`SCqm!`QWZ8Dsnk2;%FXhw}DC&f}M5OOH= z;L5=@kq&DK^e&WYi*Q|xJEUz@$37vsg=1FSmSPEO);m&inr@0^F|IG%P4+;pB>xBb zP^OTE5+XYxt*Zc!vVznZ^yE?#o@5hp$5D3jH~RUp_5FcuD=m7Oi%ab_e3lEvuz{I) zy@5OT{BkfvxHI$W=gD6Hp0cxla|DR`9^BKT(Eb{EsD3h(nu+U}=}8~IF@*V|Kn z$j4;f={a6!_*`%p=7-}OG>?Sv4dJX RVHcx*7kffWrqC~*{{w9h27dqm diff --git a/lib/habc/std.scm b/lib/habc/std.scm index cf6e38a..a0eebec 100644 --- a/lib/habc/std.scm +++ b/lib/habc/std.scm @@ -22,10 +22,10 @@ (define-method null? ([self Cons]) #f) -(define (length xs) +(define (list-length xs) (if (null? xs) 0 - (+ 1 (length (cdr xs))))) + (+ 1 (list-length (cdr xs))))) (define (map f xs) (if (null? xs) diff --git a/scm/example/pair.scm b/scm/example/pair.scm index 1fd360c..7e525de 100644 --- a/scm/example/pair.scm +++ b/scm/example/pair.scm @@ -1,10 +1,10 @@ ;;; 1 ;;; 2 -;;; 4 +;;; 3 (define x (cons 1 2)) (trace (car x)) (trace (cdr x)) (define xs (list 1 2 3)) -(trace (length xs)) +(trace (list-length xs)) diff --git a/scm/example/static.scm b/scm/example/static.pending similarity index 100% rename from scm/example/static.scm rename to scm/example/static.pending diff --git a/scm/src/.ocamlinit b/scm/src/.ocamlinit index 0cadc5d..8ac2eb9 100644 --- a/scm/src/.ocamlinit +++ b/scm/src/.ocamlinit @@ -8,11 +8,6 @@ #directory "type";; #load "type.cma";; - -#directory "lib";; -#load "codegen.cmo";; -#load "parser.cmo";; -#load "checker.cmo";; #load "habc-scm.cma";; diff --git a/scm/src/codegen/asm.ml b/scm/src/codegen/asm.ml index a396fcc..7642351 100644 --- a/scm/src/codegen/asm.ml +++ b/scm/src/codegen/asm.ml @@ -156,12 +156,21 @@ let make_class ~cpool ~classes ~methods inst = Abc.trait_name = Cpool.index attr cpool; data = Abc.SlotTrait (id+1,0,0,0) } in let instance_info = { - Abc.instance_name = Cpool.index c.class_name cpool; - super_name = Cpool.index c.super cpool; - instance_flags = List.map flag c.class_flags; - interface = List.map (flip RevList.index classes) c.interface; - iinit = RevList.index c.iinit methods; - instance_traits = (List.map method_trait c.instance_methods) @ (ExtList.List.mapi attr_trait c.attributes) + Abc.instance_name = + Cpool.index c.class_name cpool; + super_name = + Cpool.index c.super cpool; + instance_flags = + List.map flag c.class_flags; + interface = + List.map (flip RevList.index classes) c.interface; + iinit = + RevList.index c.iinit methods; + instance_traits = + List.concat [ + List.map method_trait c.instance_methods; + ExtList.List.mapi attr_trait c.attributes + ] } in class_info,instance_info in sure make @@ class_ inst @@ -192,7 +201,7 @@ let make_method ~cpool ~methods ~insts ~usage inst = let info = { Abc.params = m.params; return = m.return; - method_name = Cpool.index m.method_name cpool; + method_name = Cpool.index m.method_name cpool - 1; method_flags = m.method_flags } in let body = { Abc.method_sig = -1; (* dummy *) -- 2.11.0