Annotation of researchv10no/cmd/sml/src/cps/size.sml, revision 1.1.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.