]> Joshua Wise's Git repositories - snipe.git/blame - trans/temp.sml
Initial import of l2c
[snipe.git] / trans / temp.sml
CommitLineData
0a24e44d 1(* L2 Compiler
12aa4087
JW
2 * Temporaries
3 * Author: Kaustuv Chaudhuri <kaustuv+@cs.cmu.edu>
4 * Modified: Alex Vaynberg <alv@andrew.cmu.edu>
5 * Modified: Frank Pfenning <fp@cs.cmu.edu>
6 *)
7
8signature TEMP =
9sig
10 type temp
11
12 val reset : unit -> unit (* resets temp numbering *)
13 val new : unit -> temp (* returns a unique new temp *)
14 val name : temp -> string (* returns the name of a temp *)
15 val compare : temp * temp -> order (* comparison function *)
16end
17
18structure Temp :> TEMP =
19struct
20 type temp = int
21
22 local
23 val counter = ref 1
24 in
25 (* warning: calling reset() may jeopardize uniqueness of temps! *)
26 fun reset () = ( counter := 1 )
27 fun new () = !counter before ( counter := !counter + 1 )
28 end
29
30 fun name t = "+t" ^ Int.toString t
31
32 fun compare (t1,t2) = Int.compare (t1,t2)
33end
This page took 0.028524 seconds and 4 git commands to generate.