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/branches/SMLNJ/src/compiler/CodeGen/main/machspec.sig
ViewVC logotype

Annotation of /sml/branches/SMLNJ/src/compiler/CodeGen/main/machspec.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 245 - (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 :    
20 :     (* 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 :    
57 :     val startgcOffset : int
58 :     val constBaseRegOffset : int
59 :    
60 :     val quasiStack : bool (* default false *)
61 :     val quasiFree : bool (* default false *)
62 :     val quasiFrameSz : int (* default 7 *)
63 :    
64 :     val newListRep : bool (* default false *)
65 :     val listCellSz : int (* default 2 *)
66 :    
67 :     val floatRegParams : bool (* for old-style codegen; default true *)
68 :    
69 :     val writeAllocateHack : bool (* default false *)
70 :    
71 :     (* get "conreps" into here eventually.
72 :     Didn't want to do it now, because it would require
73 :     functorizing the whole front end. -- A. Appel*)
74 :    
75 :     val fixedArgPassing : bool
76 :     (* Use fixed argument passing registers for known functions that
77 :     * require garbage collection. Only an issue on the x86 or machines
78 :     * that have registers implemented as memory locations, i.e., at the
79 :     * call to GC, there aren't enough registers to hold alll the roots.
80 :     * The correct way to solve this problem is to create a record of
81 :     * live variables inside the code that invokes the garbage collector
82 :     * -- Lal George.
83 :     *)
84 :    
85 :     val spillRematerialization : bool
86 :     (* Whether rematerialization of spill locations is performed *)
87 :     end (* MACH_SPEC *)
88 :    
89 :    
90 :     (*
91 :     * $Log: machspec.sig,v $
92 :     * Revision 1.1.1.1 1998/04/08 18:39:53 george
93 :     * Version 110.5
94 :     *
95 :     *)

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