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 1155, Wed Mar 20 20:52:51 2002 UTC revision 1174, Sat Mar 23 21:14:40 2002 UTC
# Line 13  Line 13 
13  Description:  Description:
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16    Name: Allen Leung
17    Date: 2002/03/23 15:50:00 EST
18    Tag: leunga-20020323-flint-cps-rcc-primops
19    Description:
20    
21      1. Changes to FLINT primops:
22    
23        (* make a call to a C-function;
24         * The primop carries C function prototype information and specifies
25         * which of its (ML-) arguments are floating point. C prototype
26         * information is for use by the backend, ML information is for
27         * use by the CPS converter. *)
28      | RAW_CCALL of { c_proto: CTypes.c_proto,
29                       ml_args: ccall_type list,
30                       ml_res_opt: ccall_type option,
31                       reentrant : bool
32                     } option
33       (* Allocate uninitialized storage on the heap.
34        * The record is meant to hold short-lived C objects, i.e., they
35        * are not ML pointers.  With the tag, the representation is
36        * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8)
37        *)
38      | RAW_RECORD of {tag:bool,sz:int}
39      and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR
40    
41      2.  These CPS primops are now overloaded:
42    
43           rawload of {kind:numkind}
44           rawstore of {kind:numkind}
45    
46          The one argument form is:
47    
48             rawload {kind} address
49    
50          The two argument form is:
51    
52             rawload {kind} [ml object, byte-offset]
53    
54      3. RAW_CCALL/RCC now takes two extra arguments:
55    
56         a. The first is whether the C call is reentrant, i.e., whether
57            ML state should be saved and restored.
58         b. The second argument is a string argument specifying the name of
59            library and the C function.
60    
61         These things are currently not handled in the code generator, yet.
62    
63      4. In CProto,
64    
65         An encoding type of "bool" means "ml object" and is mapped into
66         C prototype of PTR.  Note that "bool" is different than "string",
67         even though "string" is also mapped into PTR, because "bool"
68         is assigned an CPS type of BOGt, while "string" is assigned INT32t.
69    
70      5. Pickler/unpicker
71    
72         Changed to handle RAW_RECORD and newest RAW_CCALL
73    
74      6. MLRiscGen,
75    
76         1. Changed to handle the new rawload/rawstore/rawrecord operators.
77         2. Code for handling C Calls has been moved to a new module CPSCCalls,
78            in the file CodeGen/cpscompile/cps-c-calls.sml
79    
80      7. Added the conditional move operator
81    
82             condmove of branch
83    
84         to cps.  Generation of this is still buggy so it is currently
85         disabled.
86    
87    ----------------------------------------------------------------------
88    Name: Lal George
89    Date: 2002/03/22 14:18:25 EST
90    Tag: george-20020322-cps-branch-prob
91    Description:
92    
93    Implemented the Ball-Larus branch prediction-heuristics, and
94    incorporated graphical viewers for control flow graphs.
95    
96    Ball-Larus Heuristics:
97    ---------------------
98    See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml.
99    
100    By design it uses the Dempster-Shafer theory for combining
101    probabilities.  For example, in the function:
102    
103        fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc)
104    
105    the ball-larus heuristics predicts that the n=0 is unlikely
106    (OH-heuristic), and the 'then' branch is unlikely because of the
107    RH-heuristic -- giving the 'then' branch an even lower combined
108    probability using the Dempster-Shafer theory.
109    
110    Finally, John Reppy's loop analysis in MLRISC, further lowers the
111    probability of the 'then' branch because of the loop in the else
112    branch.
113    
114    
115    Graphical Viewing:
116    ------------------
117    I merely plugged in Allen's graphical viewers into the compiler. The
118    additional code is not much. At the top level, saying:
119    
120            Control.MLRISC.getFlag "cfg-graphical-view" := true;
121    
122    will display the graphical view of the control flow graph just before
123    back-patching.  daVinci must be in your path for this to work. If
124    daVinci is not available, then the default viewer can be changed
125    using:
126    
127            Control.MLRISC.getString "viewer"
128    
129    which can be set to "dot" or "vcg" for the corresponding viewers. Of
130    course, these viewers must be in your path.
131    
132    The above will display the compilation unit at the level of clusters,
133    many of which are small, boring, and un-interesting. Also setting:
134    
135            Control.MLRISC.getInt "cfg-graphical-view_size"
136    
137    will display clusters that are larger than the value set by the above.
138    
139    
140    ----------------------------------------------------------------------
141    Name: Matthias Blume
142    Date: 2002/03/21 22:20:00 EST
143    Tag: blume-20020321-kmp-bugfix
144    Description:
145    
146    Changed the interface to the KMP routine in PreString and fixed
147    a minor bug in one place where it was used.
148    
149    ----------------------------------------------------------------------
150    Name: Allen Leung
151    Date: 2002/03/21 20:30:00 EST
152    Tag: leunga-20020321-cfg
153    Description:
154    
155      Fixed a potential problem in cfg edge splitting.
156    
157    ----------------------------------------------------------------------
158    Name: Allen Leung
159    Date: 2002/03/21 17:15:00 EST
160    Tag: leunga-20020321-x86-fp-cfg
161    Description:
162    
163      1. Recoded the buggy parts of x86-fp.
164    
165         a. All the block reordering code has been removed.
166            We now depend on the block placement phases to do this work.
167    
168         b. Critical edge splitting code has been simplified and moved into the
169            CFG modules, as where they belong.
170    
171         Both of these were quite buggy and complex.  The code is now much, much
172         simpler.
173    
174      2. X86 backend.
175    
176         a. Added instructions for 64-bit support.  Instruction selection for
177            64-bit has not been committed, however, since that
178            requires changes to MLTREE which haven't been approved by
179            Lal and John.
180    
181         b. Added support for FUCOMI and FUCOMIP when generating code for
182            PentiumPro and above.  We only generate these instructions in
183            the fast-fp mode.
184    
185         c. Added cases for JP and JNP in X86FreqProps.
186    
187      3. CFG
188    
189         CFG now has a bunch of methods for edge splitting and merging.
190    
191      4. Machine description.
192    
193         John's simplification of MLTREE_BASIS.fcond broke a few machine
194         description things:
195    
196         rtl-build.{sig,sml} and hppa.mdl fixed.
197    
198         NOTE: the machine description stuff in the repository is still broken.
199               Again, I can't put my fixes in because that involves
200               changes to MLTREE.
201    
202    ----------------------------------------------------------------------
203  Name: Matthias Blume  Name: Matthias Blume
204  Date: 2002/03/20 15:55:00 EST  Date: 2002/03/20 15:55:00 EST
205  Tag: blume-20020320-kmp  Tag: blume-20020320-kmp

Legend:
Removed from v.1155  
changed lines
  Added in v.1174

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