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 890, Thu Jul 19 20:38:56 2001 UTC revision 905, Thu Aug 23 21:53:02 2001 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Matthias Blume
17    Date: 2001/08/23 17:50:00 EDT
18    Tag: blume-20010823-toplevel
19    Description:
20    
21    - some reorganization of the code that implements various kinds of
22      environments in the compiler (static, dynamic, symbolic, combined)
23    - re-implemented the EnvRef module so that evalStream works properly
24      (if the stream contains references to "use", "CM.make", etc.)
25    - cleaned up evalloop.sml and interact.sml (but they need more cleaning)
26    
27    ----------------------------------------------------------------------
28    Name: Matthias Blume
29    Date: 2001/08/20 15:50 EDT
30    Tag: blume20010820-slipup
31    Description:
32    
33    I forgot to commit a few files.  Here they are...
34    
35    ----------------------------------------------------------------------
36    Name: Matthias Blume
37    Date: 2001/08/20 15:35:00 EDT
38    Tag: blume-20010820-debugprof
39    Description:
40    
41    !!!! NEW BOOTFILES !!!!
42    
43    This is another round of reorganizing the compiler sources.  This
44    time the main goal was to factor out all the "instrumentation"
45    passes (for profiling and backtracing) into their own library.
46    The difficulty was to do it in such a way that it does not depend
47    on elaborate.cm but only on elabdata.cm.
48    
49    Therefore there have been further changes to both elaborate.cm and
50    elabdata.cm -- more "generic" things have been moved from the former
51    to the latter.  As a result, I was forced to split the assignment
52    of numbers indicating "primtyc"s into two portions: SML-generic and
53    SML/NJ-specific.  Since it would have been awkward to maintain,
54    I bit the bullet and actually _changed_ the mapping between these
55    numbers and primtycs.  The bottom line of this is that you need
56    a new set of bin- and bootfiles.
57    
58    I have built new bootfiles for all architectures, so doing a fresh
59    checkout and config/install.sh should be all you need.
60    
61    The newly created library's name is
62    
63        $smlnj/viscomp/debugprof.cm
64    
65    and its sources live under
66    
67        src/compiler/DebugProf
68    
69    ----------------------------------------------------------------------
70    Name: Matthias Blume
71    Date: 2001/08/15 17:15:00 EDT
72    Tag: blume-20010815-compreorg
73    Description:
74    
75    This is a first cut at reorganizing the CM libraries that make up the
76    core of the compiler.  The idea is to separate out pieces that could
77    be used independently by tools, e.g., the parser, the typechecker, etc.
78    
79    The current status is a step in this direction, but it is not quite
80    satisfactory yet.  Expect more changes in the future.
81    
82    Here is the current (new) organization...
83    
84        What used to be $smlnj/viscomp/core.cm is now divided into
85        six CM libraries:
86    
87             $smlnj/viscomp/basics.cm
88                           /parser.cm
89                           /elabdata.cm
90                           /elaborate.cm
91                           /execute.cm
92                           /core.cm
93    
94        The CM files for these libraries live under src/system/smlnj/viscomp.
95        All these libraries are proxy libraries that contain precisely
96        one CM library component.  Here are the locations of the components
97        (all within the src/compiler tree):
98    
99             Basics/basics.cm
100             Parse/parser.cm
101             ElabData/elabdata.cm
102             Elaborator/elaborate.cm
103             Execution/execute.cm
104             core.cm
105    
106         [This organization is the same that has been used already
107         for a while for the architecture-specific parts of the visible
108         compiler and for the old version of core.cm.]
109    
110         As you will notice, many source files have been moved from their
111         respective original locations to a new home in one of the above
112         subtrees.
113    
114         The division of labor between the new libraries is the following:
115    
116             basics.cm:
117                - Simple, basic definitions that pertain to many (or all) of
118                  the other libraries.
119             parser.cm:
120                - The SML parser, producing output of type Ast.dec.
121                - The type family for Ast is also defined and exported here.
122             elabdata.cm:
123                - The datatypes that describe input and output of the elaborator.
124                  This includes types, absyn, and static environments.
125             elaborator.cm:
126                - The SML/NJ type checker and elaborator.
127                  This maps an Ast.dec (with a given static environment) to
128                  an Absyn.dec (with a new static environment).
129                - This libraries implements certain modules that used to be
130                  structures as functors (to remove dependencies on FLINT).
131             execute.cm:
132                - Everything having to do with executing binary code objects.
133                - Dynamic environments.
134             core.cm:
135                - SML/NJ-specific instantiations of the elaborator and MLRISC.
136                - Top-level modules.
137                - FLINT (this should eventually become its own library)
138    
139    Notes:
140    
141    I am not 100% happy with the way I separated the elaborator (and its
142    data structures) from FLINT.  Two instances of the same problem:
143    
144        1. Data structures contain certain fields that carry FLINT-specific
145           information.  I hacked around this using exn and the property list
146           module from smlnj-lib.  But the fact that there are middle-end
147           specific fields around at all is a bit annoying.
148    
149        2. The elaborator calculates certain FLINT-related information.  I tried
150           to make this as abstract as I could using functorization, but, again,
151           the fact that the elaborator has to perform calculations on behalf
152           of the middle-end at all is not nice.
153    
154        3. Having to used exn and property lists is unfortunate because it
155           weakens type checking.  The other alternative (parameterizing
156           nearly *everything*) is not appealing, though.
157    
158    I removed the "rebinding =" warning hack because due to the new organization
159    it was awkward to maintain it.  As a result, the compiler now issues some of
160    these warnings when compiling init.cmi during bootstrap compilation. On
161    the plus side, you also get a warning when you do, for example:
162       val op = = Int32.+
163    which was not the case up to now.
164    
165    I placed "assign" and "deref" into the _Core structure so that the
166    code that deals with the "lazy" keyword can find them there.  This
167    removes the need for having access to the primitive environment
168    during elaboration.
169    
170    ----------------------------------------------------------------------
171    Name: Matthias Blume
172    Date: 2001/08/13
173    Tag: blume-20010813-closures
174    Description:
175    
176    This fix was sent to us by Zhong Shao.  It is supposed to improve the
177    performance of certain loops by avoiding needless closure allocation.
178    
179    ----------------------------------------------------------------------
180    Name: Lal George
181    Date: 2001/07/31 10:03:23 EDT 2001
182    Tag: george-20010731-x86-fmalloc
183    Description: Fixed bug in x86 calls
184    
185        There was a bug where call instructions would mysteriously
186        vanish. The call instruction had to be one that returned
187        a floating point value.
188    
189    ----------------------------------------------------------------------
190  Name: Lal George  Name: Lal George
191  Date: 2001/07/19 16:36:29 EDT 2001  Date: 2001/07/19 16:36:29 EDT 2001
192  Tag: george-20010719-simple-cells  Tag: george-20010719-simple-cells

Legend:
Removed from v.890  
changed lines
  Added in v.905

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