CVS: sml-dist notes,1.1.2.4,1.1.2.5

David MacQueen <[email protected]> Tue, 20 Jun 2006 15:15:27 -0700
Newsgroups gmane.comp.lang.sml.smlnj.commits
Message-ID <[email protected]>
Update of /cvsroot/smlnj/sml-dist
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv6779

Modified Files:
      Tag: primop-branch-2
	notes 
Log Message:
further primop changes

Index: notes
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/Attic/notes,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -C2 -d -r1.1.2.4 -r1.1.2.5
*** notes	20 Jun 2006 01:27:59 -0000	1.1.2.4
--- notes	20 Jun 2006 22:15:23 -0000	1.1.2.5
***************
*** 28,33 ****
  
  4. Why do CONpats (see CONpat case of patType in typecheck.sml) need
! the "insts" value?  What do they have to do with primops? Where is this
! information used?
  
  5. Catalogue of primops:
--- 28,34 ----
  
  4. Why do CONpats (see CONpat case of patType in typecheck.sml) need
! the "insts" value? Similarly for CONexps. What do they have to do with
! primops? Where is this information used?  Is this related to the
! special role of ref?
  
  5. Catalogue of primops:
***************
*** 61,64 ****
--- 62,74 ----
  available in ElabData/types/TypesUtil.
  
+ We've merged these into a single module InlInfo. This depends on PrimOp.
+ This caused the sigmatch functor to be moved to Semant/modules.
+ 
+ 
+ 8. Dynamic access and inline info.  Are these mutually exclusive (i.e.
+ something has a dynamic value accessed via the access info, or it is
+ a primop accessed via the inline info), or to they both work in parallel
+ (i.e. a primop also has a function closure representation stored in
+ a slot in the dynamic vector for its home structure)?
  
  
***************
*** 253,257 ****
  
  This uses ii2ty (passed as a parameter to the TypeCheckingFn, but uniquely
! defined to be InlInfo.pureInfo in Semant/types/typecheck.sml) to extract 
  a type from the info field, if possible (i.e. when the VALvar is associated
  with a primop).
--- 263,267 ----
  
  This uses ii2ty (passed as a parameter to the TypeCheckingFn, but uniquely
! defined to be InstantiateParam.ii2ty in Semant/types/typecheck.sml) to extract 
  a type from the info field, if possible (i.e. when the VALvar is associated
  with a primop).
***************
*** 267,271 ****
  
  Relevant Files and Modules
! 
  Primitive Types
  
--- 277,281 ----
  
  Relevant Files and Modules
! --------------------------
  Primitive Types
  
***************
*** 295,300 ****
  
    PrimEnv: PRIM_ENV (Semant/statenv/prim.sml)
!       define static env primEnv, containing primitive types (PrimTypes), 
!       primops (InLine), and unrolled lists (UnrolledList)
        defs: PRIM_ENV, PrimEnv: PRIM_ENV  
  
--- 305,311 ----
  
    PrimEnv: PRIM_ENV (Semant/statenv/prim.sml)
!       define static env primEnv, containing module bindings for 
!       primitive types (PrimTypes), primops (InLine), and unrolled
!       lists (UnrolledList)
        defs: PRIM_ENV, PrimEnv: PRIM_ENV  
  
***************
*** 305,308 ****
--- 316,320 ----
        the types (primop, etc.) used to represent primops and their
        attributes. There are no type specs in these primop representations.
+       PrimOp imports CTypes, which are defined in MLRISC! (MLRISC/c-calls/ctype.sml)
  
    PrimEnv (Semant/statenv/prim.sml)
***************
*** 337,340 ****
     simplified, eliminating the exn hack. Interface function names have
     bin changed (e.g. pureInfo => isPrimCast). ii2ty has been added with
!    new name primopTy.]
  
--- 349,363 ----
     simplified, eliminating the exn hack. Interface function names have
     bin changed (e.g. pureInfo => isPrimCast). ii2ty has been added with
!    new name primopTy (moved from InstantiateParam).]
! 
! 
! Semant
  
+   ElabData and Elaborate CM groups cannot refernce FLINT and MLRISC stuff,
+   which are part of the Core group.  Therefore places where the front end
+   depend on FLINT (e.g. PrimOp, PLambdaType (in InstantiateParam)) have to
+   be in Semant, which is part of Core group.
+ 
+   This means that many of the elaboration modules are functorized, ultimately
+   on PrimOp related values (former TypeCheckFn) or on PLambdaType stuff
+   (InstantiateFn in Elaborate requires parameter InstantiateParam from Semant).