X-Git-Url: http://git.joshuawise.com/snipe.git/blobdiff_plain/5c79bb689ab446551bc7ec4497e6c9b75582837e..4a34fbf0834d02dd913bf872e45b3285aafce641:/trans/temp.sml diff --git a/trans/temp.sml b/trans/temp.sml index bd311c4..68de49c 100644 --- a/trans/temp.sml +++ b/trans/temp.sml @@ -8,58 +8,28 @@ signature TEMP = sig type temp - datatype size = Byte | Word | Long | Quad val reset : unit -> unit (* resets temp numbering *) - val new : string -> size -> temp (* returns a unique new temp *) + val new : string -> temp (* returns a unique new temp *) val name : temp -> string (* returns the name of a temp *) - val size : temp -> size (* returns the size of a temp *) val compare : temp * temp -> order (* comparison function *) val eq : temp * temp -> bool - val cmpsize : size * size -> order - val sfx : size -> string - val sts : int -> size end structure Temp :> TEMP = struct - datatype size = Byte | Word | Long | Quad - type temp = int * string * size + type temp = int * string local val counter = ref 1 in (* warning: calling reset() may jeopardize uniqueness of temps! *) fun reset () = ( counter := 1 ) - fun new str size = (!counter, str, size) before ( counter := !counter + 1 ) + fun new str = (!counter, str) before ( counter := !counter + 1 ) end - fun sfx Byte = "b" - | sfx Word = "w" - | sfx Long = "l" - | sfx Quad = "q" - - fun name (t,s, sz) = "+t" ^ Int.toString t ^ "[" ^ s ^ "]" ^ sfx sz - fun size (t, s, sz) = sz - fun compare ((t1,_,_),(t2,_,_)) = Int.compare (t1,t2) - - fun eq ((t1,_,_), (t2,_,_)) = t1 = t2 - - fun cmpsize (Quad,Quad) = EQUAL - | cmpsize (Quad,_) = GREATER - | cmpsize (_,Quad) = LESS - | cmpsize (Long,Long) = EQUAL - | cmpsize (Long,_) = GREATER - | cmpsize (_,Long) = LESS - | cmpsize (Word,Word) = EQUAL - | cmpsize (Word,_) = GREATER - | cmpsize (_,Word) = LESS - | cmpsize (Byte,Byte) = EQUAL - - fun sts 8 = Quad - | sts 4 = Long - | sts 2 = Word - | sts 1 = Byte - | sts _ = raise ErrorMsg.InternalError "Temp.sts: invalid size" + fun name (t,s) = "+t" ^ Int.toString t ^ "[" ^ s ^ "]" + fun compare ((t1,_),(t2,_)) = Int.compare (t1,t2) + fun eq ((t1,_), (t2,_)) = t1 = t2 end