1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 #define NIM_EmulateOverflowChecks
4 
5 #include "nimbase.h"
6 #undef LANGUAGE_C
7 #undef MIPSEB
8 #undef MIPSEL
9 #undef PPC
10 #undef R3000
11 #undef R4000
12 #undef i386
13 #undef linux
14 #undef mips
15 #undef near
16 #undef far
17 #undef powerpc
18 #undef unix
19 #define nimfr_(x, y)
20 #define nimln_(x, y)
21 typedef struct NimStringDesc NimStringDesc;
22 typedef struct TGenericSeq TGenericSeq;
23 typedef struct tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ;
24 typedef struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA;
25 typedef struct Exception Exception;
26 typedef struct RootObj RootObj;
27 typedef struct TNimType TNimType;
28 typedef struct TNimNode TNimNode;
29 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
30 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
31 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
32 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
33 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
34 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
35 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
36 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
37 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
38 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
39 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
40 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
41 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
42 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
43 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
44 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
45 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
46 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
47 struct TGenericSeq {
48 NI len;
49 NI reserved;
50 };
51 struct NimStringDesc {
52   TGenericSeq Sup;
53 NIM_CHAR data[SEQ_DECL_SIZE];
54 };
55 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
56 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
57 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
58 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
59 struct TNimType {
60 NI size;
61 NI align;
62 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
63 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
64 TNimType* base;
65 TNimNode* node;
66 void* finalizer;
67 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
68 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
69 };
70 struct RootObj {
71 TNimType* m_type;
72 };
73 struct Exception {
74   RootObj Sup;
75 Exception* parent;
76 NCSTRING name;
77 NimStringDesc* message;
78 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
79 Exception* up;
80 };
81 struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA {
82   Exception Sup;
83 };
84 struct tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ {
85   tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
86 };
87 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
88 struct TNimNode {
89 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
90 NI offset;
91 TNimType* typ;
92 NCSTRING name;
93 NI len;
94 TNimNode** sons;
95 };
96 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
97 NI refcount;
98 TNimType* typ;
99 };
100 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
101 void* bottom;
102 };
103 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
104 NI len;
105 NI cap;
106 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
107 };
108 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
109 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
110 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
111 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
112 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
113 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
114 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
115 };
116 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
117 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
118 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
119 NI key;
120 NI upperBound;
121 NI level;
122 };
123 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
124 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
125 NI Field1;
126 };
127 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
128 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
129 NI len;
130 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
131 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
132 };
133 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
134 NI minLargeObj;
135 NI maxLargeObj;
136 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
137 NU32 flBitmap;
138 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
139 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
140 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
141 NI currMem;
142 NI maxMem;
143 NI freeMem;
144 NI occ;
145 NI lastSize;
146 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
147 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
148 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
149 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
150 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
151 NIM_BOOL locked;
152 NIM_BOOL blockChunkSizeIncrease;
153 NI nextChunkSize;
154 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
155 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
156 };
157 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
158 NI stackScans;
159 NI cycleCollections;
160 NI maxThreshold;
161 NI maxStackSize;
162 NI maxStackCells;
163 NI cycleTableSize;
164 NI64 maxPause;
165 };
166 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
167 NI counter;
168 NI max;
169 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
170 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
171 };
172 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
173 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
174 NI cycleThreshold;
175 NI zctThreshold;
176 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
177 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
178 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
179 NI recGcLock;
180 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
181 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
182 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
183 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
184 NI gcThreadId;
185 };
186 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
187 NCSTRING procname;
188 NI line;
189 NCSTRING filename;
190 };
191 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
192   TGenericSeq Sup;
193   tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
194 };
195 N_LIB_PRIVATE N_NOINLINE(void, raiseAssert__systemZassertions_32)(NimStringDesc* msg) __attribute__((noreturn));
196 static N_INLINE(void, sysFatal__systemZassertions_34)(NimStringDesc* message) __attribute__((noreturn));
197 N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
198 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
199 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
200 static N_INLINE(void, decRef__system_5336)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
201 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
202 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
203 static N_INLINE(void, rtlAddZCT__system_5334)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
204 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5285)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
205 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5291)(void* usr);
206 N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
207 extern TNimType NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_;
208 extern TNimType NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_;
209 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5238;
N_NIMCALL(void,eqdestroy___systemZassertions_23)210 N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___systemZassertions_23)(NimStringDesc** dest) {
211 }
N_INLINE(NI,minuspercent___system_716)212 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
213 	NI result;
214 	result = (NI)0;
215 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
216 	return result;
217 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)218 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
219 	NIM_BOOL result;
220 	result = (NIM_BOOL)0;
221 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
222 	return result;
223 }
N_INLINE(void,rtlAddZCT__system_5334)224 static N_INLINE(void, rtlAddZCT__system_5334)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
225 	addZCT__system_5285((&gch__system_5238.zct), c);
226 }
N_INLINE(void,decRef__system_5336)227 static N_INLINE(void, decRef__system_5336)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
228 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
229 	{
230 		NIM_BOOL T3_;
231 		T3_ = (NIM_BOOL)0;
232 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
233 		if (!T3_) goto LA4_;
234 		rtlAddZCT__system_5334(c);
235 	}
236 	LA4_: ;
237 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5291)238 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5291)(void* usr) {
239 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
240 	NI T1_;
241 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
242 	T1_ = (NI)0;
243 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
244 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
245 	return result;
246 }
N_INLINE(void,nimGCunrefNoCycle)247 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
248 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
249 	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
250 	T1_ = usrToCell__system_5291(p);
251 	decRef__system_5336(T1_);
252 }
N_INLINE(void,sysFatal__systemZassertions_34)253 static N_INLINE(void, sysFatal__systemZassertions_34)(NimStringDesc* message) {
254 	tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ* T1_;
255 	NimStringDesc* T2_;
256 	T1_ = NIM_NIL;
257 	T1_ = (tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ*) newObj((&NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_), sizeof(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ));
258 	(*T1_).Sup.Sup.Sup.m_type = (&NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_);
259 	(*T1_).Sup.Sup.name = "AssertionDefect";
260 	T2_ = NIM_NIL;
261 	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(message);
262 	if (T2_) nimGCunrefNoCycle(T2_);
263 	raiseExceptionEx((Exception*)T1_, "AssertionDefect", "sysFatal", "fatal.nim", 53);
264 }
N_NOINLINE(void,raiseAssert__systemZassertions_32)265 N_LIB_PRIVATE N_NOINLINE(void, raiseAssert__systemZassertions_32)(NimStringDesc* msg) {
266 	sysFatal__systemZassertions_34(msg);
267 }
N_NIMCALL(void,failedAssertImpl__systemZassertions_56)268 N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg) {
269 	raiseAssert__systemZassertions_32(msg);
270 }
271