Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/compiler/CodeGen/main/machspec.sig
ViewVC logotype

Annotation of /sml/trunk/src/compiler/CodeGen/main/machspec.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 717 - (view) (download) (as text)

1 : monnier 245 (* machspec.sig
2 :     *
3 :     * COPYRIGHT (c) 1994 AT&T Bell Laboratories.
4 :     *
5 :     * This signature contains various machine and code-generator specific
6 :     * parameters.
7 :     *
8 :     * When should a code-generator parameter be put in this signature?
9 :     * Only when changing it will yield incompatible code.
10 :     * Parameters that change optimization algorithms but yield compatible
11 :     * code should not go here. -- A. Appel
12 :     *
13 :     *)
14 :    
15 :     signature MACH_SPEC =
16 :     sig
17 :    
18 :     val architecture : string
19 : george 717
20 : monnier 245 (* code generator flags *)
21 :     val polling : bool
22 :     val unboxedFloats : bool
23 :     val representations : bool
24 :     val newClosure : bool
25 :     val numRegs : int (* the number of registers used by ML *)
26 :     val numFloatRegs : int (* the number of registers used by ML *)
27 :     val numArgRegs : int (* the number of registers used to pass args. *)
28 :     val maxRepRegs : int (* rename or eliminate this *)
29 :     val numFloatArgRegs : int (* the number of FP registers used for args. *)
30 :     val numCalleeSaves : int
31 :     val numFloatCalleeSaves : int
32 :     val untaggedInt : bool (* represent all integers without tags *)
33 :    
34 :     (* machine representations *)
35 :     type value_tag = {
36 :     tagbits : int, (* number of tag bits *)
37 :     tagval : int (* value of tag bits *)
38 :     }
39 :    
40 :     val intTag : value_tag (* tag for tagged integer values *)
41 :     val ptrTag : value_tag (* tag for pointers *)
42 :     val descTag : value_tag (* tag for object descriptors *)
43 :    
44 :     (* representations of object descriptors *)
45 :     structure ObjDesc : OBJECT_DESC
46 :    
47 :     val valueSize : int (* number of bytes for an ML value *)
48 :     val charSize : int (* number of bytes for a char *)
49 :     val realSize : int (* number of bytes of the default real type *)
50 :     val realAlign : bool (* if true, reals are realSize aligned *)
51 :    
52 :     val bigEndian : bool (* true, if this is a big-endian machine *)
53 :    
54 :     val spillAreaSz : int (* the size of the area for spilling registers *)
55 :     (* in bytes *)
56 : monnier 429 val initialSpillOffset : int (* the offset of the first spill location *)
57 : monnier 245
58 :     val startgcOffset : int
59 :     val constBaseRegOffset : int
60 :    
61 :     val quasiStack : bool (* default false *)
62 :     val quasiFree : bool (* default false *)
63 :     val quasiFrameSz : int (* default 7 *)
64 :    
65 :     val newListRep : bool (* default false *)
66 :     val listCellSz : int (* default 2 *)
67 :    
68 :     val floatRegParams : bool (* for old-style codegen; default true *)
69 :    
70 :     val writeAllocateHack : bool (* default false *)
71 :    
72 :     (* get "conreps" into here eventually.
73 :     Didn't want to do it now, because it would require
74 :     functorizing the whole front end. -- A. Appel*)
75 :    
76 :     val fixedArgPassing : bool
77 :     (* Use fixed argument passing registers for known functions that
78 :     * require garbage collection. Only an issue on the x86 or machines
79 :     * that have registers implemented as memory locations, i.e., at the
80 :     * call to GC, there aren't enough registers to hold alll the roots.
81 :     * The correct way to solve this problem is to create a record of
82 :     * live variables inside the code that invokes the garbage collector
83 :     * -- Lal George.
84 :     *)
85 :    
86 :     val spillRematerialization : bool
87 :     (* Whether rematerialization of spill locations is performed *)
88 :     end (* MACH_SPEC *)
89 :    
90 :    

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