Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/compiler/FLINT/flint/flint.sig
ViewVC logotype

Diff of /sml/trunk/src/compiler/FLINT/flint/flint.sig

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 183, Sun Nov 8 16:58:19 1998 UTC revision 184, Sun Nov 8 21:18:20 1998 UTC
# Line 14  Line 14 
14  type fflag = LtyDef.fflag  type fflag = LtyDef.fflag
15  type rflag = LtyDef.rflag  type rflag = LtyDef.rflag
16    
17    
18    (* what kind of inlining behavior is desired for the function *)
19    datatype ilhint
20      = IH_ALWAYS                           (* inline whenever possible *)
21      | IH_UNROLL                           (* only inline once within itself *)
22      | IH_SAFE                             (* only if trivially size-safe *)
23    
24    (* what kind of recursive function (aka loop) is this *)
25    (* the distinction between LK_LOOP and LK_UNKNOWN is not clear
26     * and might get dropped so that we only need `tail:bool' *)
27    datatype loopkind
28      = LK_UNKNOWN                          (* something else *)
29      | LK_LOOP                             (* loop wrapped in a preheader *)
30      | LK_WHILE                            (* like LK_LOOP but tail-recursive *)
31    
32    (* calling convention *)
33    datatype cconv
34      = CC_FCT                              (* it's a functor *)
35      | CC_FUN of fflag                     (* it's a function *)
36    
37  (** classifying various kinds of functions *)  (** classifying various kinds of functions *)
38  datatype fkind  type fkind
39    = FK_FCT   = {inline: ilhint,                     (* when should it be inlined *)
40    | FK_FUN of      known : bool,                       (* are all the call sites known *)
41        {isrec : lty list option,  (* is this function recursive ? *)      cconv : cconv,                      (* calling convention *)
42         fixed : fflag,            (* is calling convention fixed ? *)      isrec : (lty list * loopkind) option} (* is it recursive *)
        known : bool,             (* is this function known, default: false *)  
        inline: bool}             (* should this be inlined, default: false *)  
43    
44  (** classifying various kinds of records *)  (** classifying various kinds of records *)
45  datatype rkind  datatype rkind

Legend:
Removed from v.183  
changed lines
  Added in v.184

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0