Annotation of researchv10no/cmd/sml/src/translate/unboxed.sml, revision 1.1

1.1     ! root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
        !             2: structure Unboxed : sig structure Basics : BASICS
        !             3:                        val unboxedAssign : Basics.ty -> Access.primop
        !             4:                        val unboxedUpdate : Basics.ty -> Access.primop
        !             5:                    end =
        !             6: struct
        !             7: 
        !             8:   structure Basics = Basics
        !             9:   open Access Prim Basics BasicTypes
        !            10:   val intStamp = TypesUtil.tycStamp(!intTycon)
        !            11:   fun alwaysunboxed ty =
        !            12:     case ty
        !            13:      of VARty(ref(INSTANTIATED t)) => alwaysunboxed t
        !            14:       | VARty _  => false
        !            15:       | CONty(ref(TYCON{kind=DATAtyc dcons,...}), _) =>
        !            16:            not(exists (fn (DATACON{rep=CONSTANT _,...})=>false 
        !            17:                         | _ => true)
        !            18:                       dcons) 
        !            19:       | CONty(ref tyc,_) => let val ans = TypesUtil.tycStamp tyc = intStamp
        !            20:                            in if !System.Control.debugging
        !            21:                               then  (print "tr: "; PrintType.printTycon tyc;
        !            22:                                      print "\n";
        !            23:                                      if ans then print "ans: true\n"
        !            24:                                             else print "ans: false\n")
        !            25:                               else ();
        !            26:                               ans
        !            27:                            end
        !            28:       | _ => false (* impossible ? *)
        !            29: 
        !            30:   fun unboxedAssign(CONty(_,[CONty(_,[_,VARty(ref(INSTANTIATED ty))]),_])) =
        !            31:         if alwaysunboxed ty then P.unboxedassign else P.:=
        !            32:     | unboxedAssign _ = P.:=
        !            33: 
        !            34:   fun unboxedUpdate(CONty(_,[CONty(_,[_,_,VARty(ref(INSTANTIATED ty))]),_]))=
        !            35:         if alwaysunboxed ty then P.unboxedupdate else P.update
        !            36:     | unboxedUpdate _ = P.update
        !            37:   
        !            38: end

unix.superglobalmegacorp.com

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