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/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

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

revision 898, Mon Aug 13 17:44:08 2001 UTC revision 903, Mon Aug 20 19:34:06 2001 UTC
# Line 14  Line 14 
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume  Name: Matthias Blume
17    Date: 2001/08/20 15:35:00 EDT
18    Tag: blume-20010820-debugprof
19    Description:
21    !!!! NEW BOOTFILES !!!!
23    This is another round of reorganizing the compiler sources.  This
24    time the main goal was to factor out all the "instrumentation"
25    passes (for profiling and backtracing) into their own library.
26    The difficulty was to do it in such a way that it does not depend
27    on elaborate.cm but only on elabdata.cm.
29    Therefore there have been further changes to both elaborate.cm and
30    elabdata.cm -- more "generic" things have been moved from the former
31    to the latter.  As a result, I was forced to split the assignment
32    of numbers indicating "primtyc"s into two portions: SML-generic and
33    SML/NJ-specific.  Since it would have been awkward to maintain,
34    I bit the bullet and actually _changed_ the mapping between these
35    numbers and primtycs.  The bottom line of this is that you need
36    a new set of bin- and bootfiles.
38    I have built new bootfiles for all architectures, so doing a fresh
39    checkout and config/install.sh should be all you need.
41    The newly created library's name is
43        $smlnj/viscomp/debugprof.cm
45    and its sources live under
47        src/compiler/DebugProf
49    ----------------------------------------------------------------------
50    Name: Matthias Blume
51    Date: 2001/08/15 17:15:00 EDT
52    Tag: blume-20010815-compreorg
53    Description:
55    This is a first cut at reorganizing the CM libraries that make up the
56    core of the compiler.  The idea is to separate out pieces that could
57    be used independently by tools, e.g., the parser, the typechecker, etc.
59    The current status is a step in this direction, but it is not quite
60    satisfactory yet.  Expect more changes in the future.
62    Here is the current (new) organization...
64        What used to be $smlnj/viscomp/core.cm is now divided into
65        six CM libraries:
67             $smlnj/viscomp/basics.cm
68                           /parser.cm
69                           /elabdata.cm
70                           /elaborate.cm
71                           /execute.cm
72                           /core.cm
74        The CM files for these libraries live under src/system/smlnj/viscomp.
75        All these libraries are proxy libraries that contain precisely
76        one CM library component.  Here are the locations of the components
77        (all within the src/compiler tree):
79             Basics/basics.cm
80             Parse/parser.cm
81             ElabData/elabdata.cm
82             Elaborator/elaborate.cm
83             Execution/execute.cm
84             core.cm
86         [This organization is the same that has been used already
87         for a while for the architecture-specific parts of the visible
88         compiler and for the old version of core.cm.]
90         As you will notice, many source files have been moved from their
91         respective original locations to a new home in one of the above
92         subtrees.
94         The division of labor between the new libraries is the following:
96             basics.cm:
97                - Simple, basic definitions that pertain to many (or all) of
98                  the other libraries.
99             parser.cm:
100                - The SML parser, producing output of type Ast.dec.
101                - The type family for Ast is also defined and exported here.
102             elabdata.cm:
103                - The datatypes that describe input and output of the elaborator.
104                  This includes types, absyn, and static environments.
105             elaborator.cm:
106                - The SML/NJ type checker and elaborator.
107                  This maps an Ast.dec (with a given static environment) to
108                  an Absyn.dec (with a new static environment).
109                - This libraries implements certain modules that used to be
110                  structures as functors (to remove dependencies on FLINT).
111             execute.cm:
112                - Everything having to do with executing binary code objects.
113                - Dynamic environments.
114             core.cm:
115                - SML/NJ-specific instantiations of the elaborator and MLRISC.
116                - Top-level modules.
117                - FLINT (this should eventually become its own library)
119    Notes:
121    I am not 100% happy with the way I separated the elaborator (and its
122    data structures) from FLINT.  Two instances of the same problem:
124        1. Data structures contain certain fields that carry FLINT-specific
125           information.  I hacked around this using exn and the property list
126           module from smlnj-lib.  But the fact that there are middle-end
127           specific fields around at all is a bit annoying.
129        2. The elaborator calculates certain FLINT-related information.  I tried
130           to make this as abstract as I could using functorization, but, again,
131           the fact that the elaborator has to perform calculations on behalf
132           of the middle-end at all is not nice.
134        3. Having to used exn and property lists is unfortunate because it
135           weakens type checking.  The other alternative (parameterizing
136           nearly *everything*) is not appealing, though.
138    I removed the "rebinding =" warning hack because due to the new organization
139    it was awkward to maintain it.  As a result, the compiler now issues some of
140    these warnings when compiling init.cmi during bootstrap compilation. On
141    the plus side, you also get a warning when you do, for example:
142       val op = = Int32.+
143    which was not the case up to now.
145    I placed "assign" and "deref" into the _Core structure so that the
146    code that deals with the "lazy" keyword can find them there.  This
147    removes the need for having access to the primitive environment
148    during elaboration.
150    ----------------------------------------------------------------------
151    Name: Matthias Blume
152  Date: 2001/08/13  Date: 2001/08/13
153  Tag: blume-20010813-closures  Tag: blume-20010813-closures
154  Description:  Description:

Removed from v.898  
changed lines
  Added in v.903

ViewVC Help
Powered by ViewVC 1.0.0