summaryrefslogtreecommitdiff
path: root/ghc/includes/SMcopying.lh
blob: 7667fb2d4b143543ce37d2b12748a42f537516b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
%************************************************************************
%*									*
\section[SMcopying]{Code labels for two-space copying collectors}
%*									*
%************************************************************************
Multi-slurp protection:
\begin{code}
#ifndef SMCOPYING_H
#define SMCOPYING_H
\end{code}

\begin{code}
typedef P_ (StgEvacFun)PROTO((P_));
typedef P_ (*StgEvacPtr)PROTO((P_));

typedef void (StgScavFun)(STG_NO_ARGS);
typedef void (*StgScavPtr)(STG_NO_ARGS);

extern StgEvacFun _Evacuate_1;
extern StgEvacFun _Evacuate_2;
extern StgEvacFun _Evacuate_3;
extern StgEvacFun _Evacuate_4;
extern StgEvacFun _Evacuate_5;
extern StgEvacFun _Evacuate_6;
extern StgEvacFun _Evacuate_7;
extern StgEvacFun _Evacuate_8;
extern StgEvacFun _Evacuate_9;
extern StgEvacFun _Evacuate_10;
extern StgEvacFun _Evacuate_11;
extern StgEvacFun _Evacuate_12;

extern StgEvacFun _EvacuateSelector_0; /* 0-origin */
extern StgEvacFun _EvacuateSelector_1;
extern StgEvacFun _EvacuateSelector_2;
extern StgEvacFun _EvacuateSelector_3;
extern StgEvacFun _EvacuateSelector_4;
extern StgEvacFun _EvacuateSelector_5;
extern StgEvacFun _EvacuateSelector_6;
extern StgEvacFun _EvacuateSelector_7;
extern StgEvacFun _EvacuateSelector_8;
extern StgEvacFun _EvacuateSelector_9;
extern StgEvacFun _EvacuateSelector_10;
extern StgEvacFun _EvacuateSelector_11;
extern StgEvacFun _EvacuateSelector_12;

#ifdef TICKY_TICKY
extern StgScavFun _Scavenge_0_0;
#endif
extern StgScavFun _Scavenge_1_0;
extern StgScavFun _Scavenge_2_0;
extern StgScavFun _Scavenge_3_0;
extern StgScavFun _Scavenge_4_0;
extern StgScavFun _Scavenge_5_0;

extern StgScavFun _Scavenge_2_1; /* 1 ptr,  1 non-ptr  */
extern StgScavFun _Scavenge_3_1; /* 1 ptr,  2 non-ptrs */
extern StgScavFun _Scavenge_3_2; /* 2 ptrs, 1 non-ptr  */

extern StgScavFun _Scavenge_1_1;
extern StgScavFun _Scavenge_2_2;
extern StgScavFun _Scavenge_3_3;
extern StgScavFun _Scavenge_4_4;
extern StgScavFun _Scavenge_5_5;
extern StgScavFun _Scavenge_6_6;
extern StgScavFun _Scavenge_7_7;
extern StgScavFun _Scavenge_8_8;
extern StgScavFun _Scavenge_9_9;
extern StgScavFun _Scavenge_10_10;
extern StgScavFun _Scavenge_11_11;
extern StgScavFun _Scavenge_12_12;

extern StgEvacFun _Evacuate_S;
extern StgScavFun _Scavenge_S_N;

extern StgEvacFun _Evacuate_Dyn;
extern StgScavFun _Scavenge_Dyn;

extern StgEvacFun _Evacuate_Tuple;
extern StgScavFun _Scavenge_Tuple;

extern StgEvacFun _Evacuate_Data;
extern StgScavFun _Scavenge_Data;

extern StgEvacFun _Evacuate_MuTuple;
extern StgScavFun _Scavenge_MuTuple;

#if defined(PAR) || defined(GRAN)
extern StgEvacFun _Evacuate_RBH_2;
extern StgEvacFun _Evacuate_RBH_3;
extern StgEvacFun _Evacuate_RBH_4;
extern StgEvacFun _Evacuate_RBH_5;
extern StgEvacFun _Evacuate_RBH_6;
extern StgEvacFun _Evacuate_RBH_7;
extern StgEvacFun _Evacuate_RBH_8;
extern StgEvacFun _Evacuate_RBH_9;
extern StgEvacFun _Evacuate_RBH_10;
extern StgEvacFun _Evacuate_RBH_11;
extern StgEvacFun _Evacuate_RBH_12;
extern StgEvacFun _Evacuate_RBH_S;
extern StgEvacFun _Evacuate_FetchMe;
extern StgEvacFun _Evacuate_BF;

extern StgScavFun _Scavenge_RBH_2_1;
extern StgScavFun _Scavenge_RBH_3_1;
extern StgScavFun _Scavenge_RBH_3_3;
extern StgScavFun _Scavenge_RBH_4_1;
extern StgScavFun _Scavenge_RBH_4_4;
extern StgScavFun _Scavenge_RBH_5_1;
extern StgScavFun _Scavenge_RBH_5_5;
extern StgScavFun _Scavenge_RBH_6_6;
extern StgScavFun _Scavenge_RBH_7_7;
extern StgScavFun _Scavenge_RBH_8_8;
extern StgScavFun _Scavenge_RBH_9_9;
extern StgScavFun _Scavenge_RBH_10_10;
extern StgScavFun _Scavenge_RBH_11_11;
extern StgScavFun _Scavenge_RBH_12_12;
extern StgScavFun _Scavenge_RBH_N;
extern StgScavFun _Scavenge_FetchMe;
extern StgScavFun _Scavenge_BF;
#endif /* PAR || GRAN */

#if !defined(PAR) || defined(GRAN)
extern StgEvacFun _Evacuate_ForeignObj;
extern StgScavFun _Scavenge_ForeignObj;
#endif /* PAR */


extern StgEvacFun _Evacuate_BH_N;
extern StgScavFun _Scavenge_BH_N;

extern StgEvacFun _Evacuate_BH_U;
extern StgScavFun _Scavenge_BH_U;

extern StgEvacFun _Evacuate_Static;

extern StgEvacFun _Evacuate_Ind;
extern StgScavFun _Scavenge_Ind;

extern StgEvacFun _Evacuate_Caf;
extern StgScavFun _Scavenge_Caf;

#if defined(PROFILING) || defined(TICKY_TICKY)
extern StgEvacFun _Evacuate_PI;
extern StgScavFun _Scavenge_PI;
#endif

extern StgEvacFun _Evacuate_Const;

extern StgEvacFun _Evacuate_CharLike;

extern StgEvacFun _Evacuate_IntLike;

#ifdef CONCURRENT
extern StgEvacFun _Evacuate_BQ;
extern StgScavFun _Scavenge_BQ;

extern StgEvacFun _Evacuate_TSO;
extern StgScavFun _Scavenge_TSO;

extern StgEvacFun _Evacuate_StkO;
extern StgScavFun _Scavenge_StkO;
#endif
\end{code}

\begin{code}
EXTFUN(Caf_Evac_Upd_entry);
#if defined(GCgn)
EXTFUN(Forward_Ref_New_entry);
EXTFUN(Forward_Ref_Old_entry);
EXTFUN(OldRoot_Forward_Ref_entry);
#else
EXTFUN(Forward_Ref_entry);
#endif

\end{code}

End of multi-slurp protection:
\begin{code}
#endif /* SMCOPYING_H */
\end{code}