Annotation of researchv10no/cmd/sml/src/cps/size.sml, revision 1.1

1.1     ! root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
        !             2: structure CPSsize =
        !             3: struct
        !             4: local open CPS
        !             5: 
        !             6: fun cells_list (l : 'a list) = 2 * length l
        !             7: fun descriptors_list (l : 'a list) = length l
        !             8: 
        !             9: val rec cells =
        !            10:   fn RECORD(vl,w,ce) => 2 + 3 + cells_list vl + cells ce
        !            11:    | SELECT(i,v,w,ce) => 2 + 4 + cells ce
        !            12:    | OFFSET(i,v,w,ce) => 2 + 4 + cells ce
        !            13:    | APP(v,vl) => 2 + 2 + cells_list vl
        !            14:    | FIX(l,ce) => 2 + 2 + cells_list l + cells ce
        !            15:                + fold (fn((f,vl,e),b) => 3 + cells_list vl + cells e + b) l 0
        !            16:    | SWITCH(v,l) => 2 + 2 + cells_list l + fold (fn(a,b) => cells a + b) l 0
        !            17:    | PRIMOP(_,vl,wl,ce) => 
        !            18:        2 + 4 + cells_list vl + cells_list wl + cells_list ce
        !            19:                 + fold (fn(a,b) => cells a + b) ce 0
        !            20: 
        !            21: val rec descriptors =
        !            22:   fn RECORD(vl,w,ce) => 2 + descriptors_list vl + descriptors ce
        !            23:    | SELECT(i,v,w,ce) => 2 + descriptors ce
        !            24:    | OFFSET(i,v,w,ce) => 2 + descriptors ce
        !            25:    | APP(v,vl) => 2 + descriptors_list vl
        !            26:    | FIX(l,ce) => 2 + descriptors_list l + descriptors ce
        !            27:                + fold (fn((f,vl,e),b) => 1 + descriptors_list vl
        !            28:                        + descriptors e + b) l 0
        !            29:    | SWITCH(v,l) => 2 + descriptors_list l
        !            30:                        + fold (fn(a,b) => descriptors a + b) l 0
        !            31:    | PRIMOP(_,vl,wl,ce) => 
        !            32:        2 + descriptors_list vl + descriptors_list wl + descriptors_list ce
        !            33:                 + fold (fn(a,b) => descriptors a + b) ce 0
        !            34: in
        !            35: fun printsize ce =
        !            36:   let val c = cells ce
        !            37:       val d = descriptors ce
        !            38:   in  print "CPSsize: #cells="; print c; print "; #descriptors="; print d;
        !            39:       print "\n"; ()
        !            40:   end
        !            41: end
        !            42: 
        !            43: end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.