blob: 70ea417c4b260d7a34f934b15073e8c7a4ed81cc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include "Rts.h"
static HsInt GenSymCounter = 0;
static HsInt GenSymInc = 1;
HsInt genSym(void) {
#if defined(THREADED_RTS)
if (n_capabilities == 1) {
return GenSymCounter = (GenSymCounter + GenSymInc) & 0xFFFFFF;
} else {
return atomic_inc((StgWord *)&GenSymCounter, GenSymInc) & 0xFFFFFF;
}
#else
return GenSymCounter = (GenSymCounter + GenSymInc) & 0xFFFFFF;
#endif
}
void initGenSym(HsInt NewGenSymCounter, HsInt NewGenSymInc) {
GenSymCounter = NewGenSymCounter;
GenSymInc = NewGenSymInc;
}
|