CVS: sml-dist/src/compiler/Semant/basics inlinfo.sig, 1.4, 1.4.8.1 inlinfo.sml, 1.6, 1.6.8.1

David MacQueen <[email protected]>
Newsgroups gmane.comp.lang.sml.smlnj.commits
Message-ID <[email protected]>
Update of /cvsroot/smlnj/sml-dist/src/compiler/Semant/basics
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24436/src/compiler/Semant/basics

Modified Files:
      Tag: primop-branch-2
	inlinfo.sig inlinfo.sml 
Log Message:
update of InlInfo

Index: inlinfo.sig
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/src/compiler/Semant/basics/inlinfo.sig,v
retrieving revision 1.4
retrieving revision 1.4.8.1
diff -C2 -d -r1.4 -r1.4.8.1
*** inlinfo.sig	15 Sep 2003 22:17:10 -0000	1.4
--- inlinfo.sig	19 Jun 2006 22:29:00 -0000	1.4.8.1
***************
*** 4,15 ****
   *)
  
! signature INL_INFO = sig
  
      type inl_info
  
-     val INL_PRIM : PrimOp.primop * Types.ty -> inl_info
-     val INL_STR : inl_info list -> inl_info
-     val INL_NO : inl_info
- 
      val match : inl_info ->
  		{ inl_prim: PrimOp.primop * Types.ty -> 'a,
--- 4,12 ----
   *)
  
! signature INL_INFO =
! sig
  
      type inl_info
  
      val match : inl_info ->
  		{ inl_prim: PrimOp.primop * Types.ty -> 'a,
***************
*** 19,31 ****
  
      val prInfo : inl_info -> string
-     val selInfo : inl_info * int -> inl_info
  
!     val isPrimInfo : inl_info -> bool
      val isPrimCallcc : inl_info -> bool
!     val pureInfo : inl_info -> bool
  
      val mkPrimInfo : PrimOp.primop * Types.ty -> inl_info
      val mkStrInfo : inl_info list -> inl_info
- 
      val nullInfo : inl_info
! end
--- 16,31 ----
  
      val prInfo : inl_info -> string
  
!     val isPrimop : inl_info -> bool
!     val selStrInfo : inl_info * int -> inl_info
! 
      val isPrimCallcc : inl_info -> bool
!     val isPrimCast : inl_info -> bool
  
      val mkPrimInfo : PrimOp.primop * Types.ty -> inl_info
      val mkStrInfo : inl_info list -> inl_info
      val nullInfo : inl_info
! 
!     val primopTy : inl_info -> Types.ty option
! 
! end (* signature INL_INFO *)

Index: inlinfo.sml
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/src/compiler/Semant/basics/inlinfo.sml,v
retrieving revision 1.6
retrieving revision 1.6.8.1
diff -C2 -d -r1.6 -r1.6.8.1
*** inlinfo.sml	15 Sep 2003 22:17:10 -0000	1.6
--- inlinfo.sml	19 Jun 2006 22:29:00 -0000	1.6.8.1
***************
*** 3,6 ****
--- 3,12 ----
   * (C) 2001 Lucent Technologies, Bell Labs
   *)
+ 
+ (* [dbm, 6/19/06]
+      Folded ii.sml into this structure, eliminating exn hack.
+      Changed name of pureInfo to isPrimCast.
+      Eliminated redundant INL_PRIM, INL_STR, INL_NO. *)
+ 
  structure InlInfo : INL_INFO = struct
  
***************
*** 9,58 ****
      exception E of PrimOp.primop * Types.ty
  
!     type inl_info = II.ii
  
!     val INL_PRIM = II.Info o E
!     val INL_STR = II.List
!     val INL_NO = II.Null
  
      fun match i { inl_prim, inl_str, inl_no } =
! 	case i of
! 	    II.Info (E x) => inl_prim x
! 	  | II.Info _ => bug "bogus Info node"
! 	  | II.List l => inl_str l
! 	  | II.Null => inl_no ()
  
      fun prInfo i = let
  	fun loop (i, acc) =
! 	    match i { inl_prim = fn (p, _) => PrimOp.prPrimop p :: acc,
! 		      inl_no = fn () => "<InlNo>" :: acc,
! 		      inl_str = fn [] => "{}" :: acc
! 				 | h::t =>
! 				   "{" :: loop (h,
! 						foldr (fn (x, a) =>
! 							  "," :: loop (x, a))
! 						      ("}" :: acc)
! 						      t) }
      in
  	concat (loop (i, []))
      end
  
!     val selInfo = II.sel
  
!     val isPrimInfo = II.isSimple
  
!     fun isPrimCallcc (II.Info (E ((PrimOp.CALLCC | PrimOp.CAPTURE), _))) = true
!       | isPrimCallcc _ = false
  
!     fun pureInfo (II.Info (E (p, _))) =
! 	let fun isPure PrimOp.CAST = true
! 	      | isPure _ = false
! 	(* val isPure = PrimOp.purePrimop *)
! 	in
! 	    isPure p
! 	end
!       | pureInfo _ = false
  
!     val mkPrimInfo = INL_PRIM
!     val mkStrInfo = INL_STR
!     val nullInfo = INL_NO
! end
--- 15,66 ----
      exception E of PrimOp.primop * Types.ty
  
!     datatype inl_info
!       = Info of PrimOp.primop * Types.ty
!       | List of inl_info list
!       | Null
  
!     fun isPrimop (Info _) = true
!       | isPrimop _ = false
! 
!     fun selStrInfo (List l, i) =
! 	(List.nth (l, i) handle Subscript => bug "Wrong field in List")
!       | selStrInfo (Null, _) = Null
!       | selStrInfo (Info _, i) = bug "Unexpected selection from Info"
!     end
  
      fun match i { inl_prim, inl_str, inl_no } =
! 	case i
! 	  of Info x => inl_prim x
! 	   | List l => inl_str l
! 	   | Null => inl_no ()
  
      fun prInfo i = let
  	fun loop (i, acc) =
! 	    case i
!               of Info (p,_) => PrimOp.prPrimop p :: acc
! 	       | Null => "<InlNo>" :: acc
! 	       | List m => 
!                  (case m
!                    of [] => "{}" :: acc
! 		    | h::t =>
! 		      "{" :: loop (h,foldr (fn (x, a) => "," :: loop (x, a))
!                                            ("}" :: acc)
! 					   t)
      in
  	concat (loop (i, []))
      end
  
!     fun isPrimCallcc (Info ((PrimOp.CALLCC | PrimOp.CAPTURE), _)) = true
!       | isPrimCallcc _ = false
  
!     fun isPrimCast (Info (PrimOp.CAST, _)) = true
!       | isPrimCast _ = false
  
!     val mkPrimInfo = Info
!     val mkStrInfo = List
!     val nullInfo = Null
  
!     fun primopTy (Info (_, ty)) = SOME ty
!       | primopTy _ = NONE
  
! end (* structure InlInfo *)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.