1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3
4 #include "nimbase.h"
5 #include <string.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 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
22 typedef struct tyObject_TType__facALICuu8zUj0hjvbTLFg tyObject_TType__facALICuu8zUj0hjvbTLFg;
23 typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
24 typedef struct NimStringDesc NimStringDesc;
25 typedef struct TGenericSeq TGenericSeq;
26 typedef struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ;
27 typedef struct tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA;
28 typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
29 typedef struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w;
30 typedef struct RootObj RootObj;
31 typedef struct TNimType TNimType;
32 typedef struct TNimNode TNimNode;
33 typedef struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g;
34 typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
35 typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
36 typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
37 typedef struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A;
38 typedef struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q tySequence__vhmj4KkIKPinmRXny9c2Q6Q;
39 typedef struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg;
40 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
41 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
42 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
43 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
44 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
45 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
46 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
47 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
48 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
49 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
50 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
51 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
52 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
53 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
54 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
55 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
56 struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
57 NU16 line;
58 NI16 col;
59 NI32 fileIndex;
60 };
61 typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
62 typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
63 struct TGenericSeq {
64 NI len;
65 NI reserved;
66 };
67 struct NimStringDesc {
68 TGenericSeq Sup;
69 NIM_CHAR data[SEQ_DECL_SIZE];
70 };
71 struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
72 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
73 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
74 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
75 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
76 union{
77 struct {NI64 intVal;
78 } _kind_1;
79 struct {NF floatVal;
80 } _kind_2;
81 struct {NimStringDesc* strVal;
82 } _kind_3;
83 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* sym;
84 } _kind_4;
85 struct {tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* ident;
86 } _kind_5;
87 struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
88 } _kind_6;
89 };
90 };
91 struct tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA {
92 NI id;
93 NimStringDesc* s;
94 tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* next;
95 NI h;
96 };
97 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
98 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
99 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
100 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
101 struct TNimType {
102 NI size;
103 NI align;
104 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
105 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
106 TNimType* base;
107 TNimNode* node;
108 void* finalizer;
109 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
110 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
111 };
112 struct RootObj {
113 TNimType* m_type;
114 };
115 struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g {
116 NI32 module;
117 NI32 item;
118 };
119 struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w {
120 RootObj Sup;
121 tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g itemId;
122 };
123 typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
124 typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
125 typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
126 typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
127 typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
128 typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
129 typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
130 struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
131 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
132 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
133 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
134 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
135 tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
136 };
137 struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ {
138 tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w Sup;
139 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
140 union{
141 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* gcUnsafetyReason;
142 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
143 } _kind_1;
144 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* guard;
145 NI bitsize;
146 NI alignment;
147 } _kind_2;
148 };
149 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
150 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
151 tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* name;
152 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
153 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* owner;
154 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
155 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
156 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
157 NI position;
158 NI offset;
159 tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
160 tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
161 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
162 };
163 struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A {
164 NI counter;
165 tySequence__vhmj4KkIKPinmRXny9c2Q6Q* data;
166 };
167 struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg {
168 NI h;
169 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key;
170 NI val;
171 };
172 typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
173 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
174 struct TNimNode {
175 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
176 NI offset;
177 TNimType* typ;
178 NCSTRING name;
179 NI len;
180 TNimNode** sons;
181 };
182 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
183 NI refcount;
184 TNimType* typ;
185 };
186 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
187 void* bottom;
188 };
189 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
190 NI len;
191 NI cap;
192 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
193 };
194 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
195 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
196 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
197 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
198 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
199 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
200 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
201 };
202 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
203 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
204 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
205 NI key;
206 NI upperBound;
207 NI level;
208 };
209 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
210 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
211 NI Field1;
212 };
213 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
214 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
215 NI len;
216 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
217 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
218 };
219 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
220 NI minLargeObj;
221 NI maxLargeObj;
222 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
223 NU32 flBitmap;
224 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
225 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
226 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
227 NI currMem;
228 NI maxMem;
229 NI freeMem;
230 NI occ;
231 NI lastSize;
232 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
233 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
234 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
235 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
236 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
237 NIM_BOOL locked;
238 NIM_BOOL blockChunkSizeIncrease;
239 NI nextChunkSize;
240 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
241 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
242 };
243 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
244 NI stackScans;
245 NI cycleCollections;
246 NI maxThreshold;
247 NI maxStackSize;
248 NI maxStackCells;
249 NI cycleTableSize;
250 NI64 maxPause;
251 };
252 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
253 NI counter;
254 NI max;
255 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
256 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
257 };
258 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
259 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
260 NI cycleThreshold;
261 NI zctThreshold;
262 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
263 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
264 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
265 NI recGcLock;
266 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
267 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
268 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
269 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
270 NI gcThreadId;
271 };
272 struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q {
273 TGenericSeq Sup;
274 tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg data[SEQ_DECL_SIZE];
275 };
276 struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
277 TGenericSeq Sup;
278 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
279 };
280 static N_INLINE(NI, emarkamp___pureZhashes_3)(NI h, NI val);
281 N_LIB_PRIVATE N_NIMCALL(NI, toInt__system_1708)(NF f);
282 N_LIB_PRIVATE N_NIMCALL(NI, hash__pureZhashes_279)(NimStringDesc* x);
283 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
284 N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
285 static N_INLINE(NI, emarkdollar___pureZhashes_18)(NI h);
286 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_85)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A t, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key);
287 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_37)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
288 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
289 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size);
290 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
291 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNil__types_1839)(tyObject_TType__facALICuu8zUj0hjvbTLFg* a, tyObject_TType__facALICuu8zUj0hjvbTLFg* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
292 static N_INLINE(NI, nextTry__astalgo_90)(NI h, NI maxHash);
293 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, mustRehash__astalgo_87)(NI length, NI counter);
294 N_LIB_PRIVATE N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q*, newSeq__treetab_163)(NI len);
295 N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
296 N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_119)(tySequence__vhmj4KkIKPinmRXny9c2Q6Q** data, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val);
297 static N_INLINE(void, asgnRef)(void** dest, void* src);
298 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
299 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
300 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr);
301 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
302 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
303 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
304 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
305 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5264)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
306 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
307 extern TNimType NTItnodepairseq__vhmj4KkIKPinmRXny9c2Q6Q_;
308 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5217;
N_INLINE(NI,emarkamp___pureZhashes_3)309 static N_INLINE(NI, emarkamp___pureZhashes_3)(NI h, NI val) {
310 NI result;
311 NU h_2;
312 NU val_2;
313 NU res;
314 result = (NI)0;
315 h_2 = ((NU) (h));
316 val_2 = ((NU) (val));
317 res = (NU)((NU32)(h_2) + (NU32)(val_2));
318 res = (NU)((NU32)(res) + (NU32)((NU)((NU32)(res) << (NU32)(((NI) 10)))));
319 res = (NU)(res ^ (NU)((NU32)(res) >> (NU32)(((NI) 6))));
320 result = ((NI) (res));
321 return result;
322 }
N_INLINE(NI,len__ast_3198)323 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
324 NI result;
325 NI T1_;
326 result = (NI)0;
327 T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0);
328 result = T1_;
329 return result;
330 }
N_INLINE(NI,emarkdollar___pureZhashes_18)331 static N_INLINE(NI, emarkdollar___pureZhashes_18)(NI h) {
332 NI result;
333 NU h_2;
334 NU res;
335 result = (NI)0;
336 h_2 = ((NU) (h));
337 res = (NU)((NU32)(h_2) + (NU32)((NU)((NU32)(h_2) << (NU32)(((NI) 3)))));
338 res = (NU)(res ^ (NU)((NU32)(res) >> (NU32)(((NI) 11))));
339 res = (NU)((NU32)(res) + (NU32)((NU)((NU32)(res) << (NU32)(((NI) 15)))));
340 result = ((NI) (res));
341 return result;
342 }
N_NIMCALL(NI,hashTree__treetab_5)343 N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
344 NI result;
345 { result = (NI)0;
346 {
347 if (!(n == 0)) goto LA3_;
348 goto BeforeRet_;
349 }
350 LA3_: ;
351 result = (*n).kind;
352 switch ((*n).kind) {
353 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
354 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
355 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
356 {
357 }
358 break;
359 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
360 {
361 result = emarkamp___pureZhashes_3(result, (*(*n)._kind_5.ident).h);
362 }
363 break;
364 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
365 {
366 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym0_;
367 xX60gensym0_ = (*n)._kind_4.sym;
368 result = emarkamp___pureZhashes_3(result, (NI)((NI)((NU32)(((NI) ((*xX60gensym0_).Sup.itemId.module))) << (NU32)(((NI) 20))) + ((NI) ((*xX60gensym0_).Sup.itemId.item))));
369 }
370 break;
371 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
372 {
373 {
374 NIM_BOOL T11_;
375 T11_ = (NIM_BOOL)0;
376 T11_ = (IL64(-2147483648) <= (*n)._kind_1.intVal);
377 if (!(T11_)) goto LA12_;
378 T11_ = ((*n)._kind_1.intVal <= IL64(2147483647));
379 LA12_: ;
380 if (!T11_) goto LA13_;
381 result = emarkamp___pureZhashes_3(result, ((NI) ((*n)._kind_1.intVal)));
382 }
383 LA13_: ;
384 }
385 break;
386 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
387 {
388 {
389 NIM_BOOL T18_;
390 NI T22_;
391 T18_ = (NIM_BOOL)0;
392 T18_ = (-1000000.0 <= (*n)._kind_2.floatVal);
393 if (!(T18_)) goto LA19_;
394 T18_ = ((*n)._kind_2.floatVal <= 1000000.0);
395 LA19_: ;
396 if (!T18_) goto LA20_;
397 T22_ = (NI)0;
398 T22_ = toInt__system_1708((*n)._kind_2.floatVal);
399 result = emarkamp___pureZhashes_3(result, T22_);
400 }
401 LA20_: ;
402 }
403 break;
404 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
405 {
406 NI T24_;
407 T24_ = (NI)0;
408 T24_ = hash__pureZhashes_279((*n)._kind_3.strVal);
409 result = emarkamp___pureZhashes_3(result, T24_);
410 }
411 break;
412 default:
413 {
414 {
415 NI i;
416 NI colontmp_;
417 NI i_2;
418 i = (NI)0;
419 colontmp_ = (NI)0;
420 colontmp_ = len__ast_3198(n);
421 i_2 = ((NI) 0);
422 {
423 while (1) {
424 NI T29_;
425 if (!(i_2 < colontmp_)) goto LA28;
426 i = i_2;
427 T29_ = (NI)0;
428 T29_ = hashTree__treetab_5((*n)._kind_6.sons->data[i]);
429 result = emarkamp___pureZhashes_3(result, T29_);
430 i_2 += ((NI) 1);
431 } LA28: ;
432 }
433 }
434 }
435 break;
436 }
437 result = emarkdollar___pureZhashes_18(result);
438 }BeforeRet_: ;
439 return result;
440 }
N_INLINE(int,nimCmpMem)441 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
442 int result;
443 result = (int)0;
444 result = memcmp(a, b, ((size_t) (size)));
445 return result;
446 }
N_INLINE(NIM_BOOL,equalMem__system_1735)447 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size) {
448 NIM_BOOL result;
449 int T1_;
450 result = (NIM_BOOL)0;
451 T1_ = (int)0;
452 T1_ = nimCmpMem(a, b, size);
453 result = (T1_ == ((NI32) 0));
454 return result;
455 }
N_INLINE(NIM_BOOL,eqStrings)456 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
457 NIM_BOOL result;
458 NI alen;
459 NI blen;
460 { result = (NIM_BOOL)0;
461 alen = (a ? a->Sup.len : 0);
462 blen = (b ? b->Sup.len : 0);
463 {
464 if (!(alen == blen)) goto LA3_;
465 {
466 if (!(alen == ((NI) 0))) goto LA7_;
467 result = NIM_TRUE;
468 goto BeforeRet_;
469 }
470 LA7_: ;
471 result = equalMem__system_1735(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
472 goto BeforeRet_;
473 }
474 LA3_: ;
475 }BeforeRet_: ;
476 return result;
477 }
N_NIMCALL(NIM_BOOL,treesEquivalent__treetab_37)478 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_37)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
479 NIM_BOOL result;
480 { result = (NIM_BOOL)0;
481 {
482 if (!(a == b)) goto LA3_;
483 result = NIM_TRUE;
484 }
485 goto LA1_;
486 LA3_: ;
487 {
488 NIM_BOOL T6_;
489 NIM_BOOL T7_;
490 T6_ = (NIM_BOOL)0;
491 T7_ = (NIM_BOOL)0;
492 T7_ = !((a == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
493 if (!(T7_)) goto LA8_;
494 T7_ = !((b == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
495 LA8_: ;
496 T6_ = T7_;
497 if (!(T6_)) goto LA9_;
498 T6_ = ((*a).kind == (*b).kind);
499 LA9_: ;
500 if (!T6_) goto LA10_;
501 switch ((*a).kind) {
502 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
503 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
504 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
505 {
506 result = NIM_TRUE;
507 }
508 break;
509 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
510 {
511 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym6_;
512 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym7_;
513 xX60gensym6_ = (*a)._kind_4.sym;
514 xX60gensym7_ = (*b)._kind_4.sym;
515 result = ((NI)((NI)((NU32)(((NI) ((*xX60gensym6_).Sup.itemId.module))) << (NU32)(((NI) 20))) + ((NI) ((*xX60gensym6_).Sup.itemId.item))) == (NI)((NI)((NU32)(((NI) ((*xX60gensym7_).Sup.itemId.module))) << (NU32)(((NI) 20))) + ((NI) ((*xX60gensym7_).Sup.itemId.item))));
516 }
517 break;
518 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
519 {
520 result = ((*(*a)._kind_5.ident).id == (*(*b)._kind_5.ident).id);
521 }
522 break;
523 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
524 {
525 result = ((*a)._kind_1.intVal == (*b)._kind_1.intVal);
526 }
527 break;
528 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
529 {
530 result = ((*a)._kind_2.floatVal == (*b)._kind_2.floatVal);
531 }
532 break;
533 case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
534 {
535 result = eqStrings((*a)._kind_3.strVal, (*b)._kind_3.strVal);
536 }
537 break;
538 default:
539 {
540 {
541 NI T21_;
542 NI T22_;
543 T21_ = (NI)0;
544 T21_ = len__ast_3198(a);
545 T22_ = (NI)0;
546 T22_ = len__ast_3198(b);
547 if (!(T21_ == T22_)) goto LA23_;
548 {
549 NI i;
550 NI colontmp_;
551 NI i_2;
552 i = (NI)0;
553 colontmp_ = (NI)0;
554 colontmp_ = len__ast_3198(a);
555 i_2 = ((NI) 0);
556 {
557 while (1) {
558 if (!(i_2 < colontmp_)) goto LA27;
559 i = i_2;
560 {
561 NIM_BOOL T30_;
562 T30_ = (NIM_BOOL)0;
563 T30_ = treesEquivalent__treetab_37((*a)._kind_6.sons->data[i], (*b)._kind_6.sons->data[i]);
564 if (!!(T30_)) goto LA31_;
565 goto BeforeRet_;
566 }
567 LA31_: ;
568 i_2 += ((NI) 1);
569 } LA27: ;
570 }
571 }
572 result = NIM_TRUE;
573 }
574 LA23_: ;
575 }
576 break;
577 }
578 {
579 if (!result) goto LA35_;
580 result = sameTypeOrNil__types_1839((*a).typ, (*b).typ, 0);
581 }
582 LA35_: ;
583 }
584 goto LA1_;
585 LA10_: ;
586 LA1_: ;
587 }BeforeRet_: ;
588 return result;
589 }
N_INLINE(NI,nextTry__astalgo_90)590 static N_INLINE(NI, nextTry__astalgo_90)(NI h, NI maxHash) {
591 NI result;
592 result = (NI)0;
593 result = (NI)((NI)((NI)(((NI) 5) * h) + ((NI) 1)) & maxHash);
594 return result;
595 }
N_NIMCALL(NI,nodeTableRawGet__treetab_85)596 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_85)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A t, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key) {
597 NI result;
598 NI h;
599 NI T1_;
600 { result = (NI)0;
601 T1_ = ((t.data ? t.data->Sup.len : 0)-1);
602 h = (NI)(k & T1_);
603 {
604 while (1) {
605 NI T10_;
606 if (!!((t.data->data[h].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3;
607 {
608 NIM_BOOL T6_;
609 T6_ = (NIM_BOOL)0;
610 T6_ = (t.data->data[h].h == k);
611 if (!(T6_)) goto LA7_;
612 T6_ = treesEquivalent__treetab_37(t.data->data[h].key, key);
613 LA7_: ;
614 if (!T6_) goto LA8_;
615 result = h;
616 goto BeforeRet_;
617 }
618 LA8_: ;
619 T10_ = ((t.data ? t.data->Sup.len : 0)-1);
620 h = nextTry__astalgo_90(h, T10_);
621 } LA3: ;
622 }
623 result = ((NI) -1);
624 }BeforeRet_: ;
625 return result;
626 }
N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q *,newSeq__treetab_163)627 N_LIB_PRIVATE N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q*, newSeq__treetab_163)(NI len) {
628 tySequence__vhmj4KkIKPinmRXny9c2Q6Q* result;
629 result = NIM_NIL;
630 result = (tySequence__vhmj4KkIKPinmRXny9c2Q6Q*) newSeq((&NTItnodepairseq__vhmj4KkIKPinmRXny9c2Q6Q_), len);
631 return result;
632 }
N_INLINE(NI,pluspercent___system_696)633 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
634 NI result;
635 result = (NI)0;
636 result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
637 return result;
638 }
N_INLINE(void,incRef__system_5308)639 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
640 (*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
641 }
N_INLINE(NI,minuspercent___system_716)642 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
643 NI result;
644 result = (NI)0;
645 result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
646 return result;
647 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5270)648 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr) {
649 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
650 NI T1_;
651 result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
652 T1_ = (NI)0;
653 T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
654 result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
655 return result;
656 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)657 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
658 NIM_BOOL result;
659 result = (NIM_BOOL)0;
660 result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
661 return result;
662 }
N_INLINE(void,rtlAddZCT__system_5313)663 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
664 addZCT__system_5264((&gch__system_5217.zct), c);
665 }
N_INLINE(void,decRef__system_5315)666 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
667 (*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
668 {
669 NIM_BOOL T3_;
670 T3_ = (NIM_BOOL)0;
671 T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
672 if (!T3_) goto LA4_;
673 rtlAddZCT__system_5313(c);
674 }
675 LA4_: ;
676 }
N_INLINE(void,asgnRef)677 static N_INLINE(void, asgnRef)(void** dest, void* src) {
678 {
679 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
680 if (!!((src == NIM_NIL))) goto LA3_;
681 T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
682 T5_ = usrToCell__system_5270(src);
683 incRef__system_5308(T5_);
684 }
685 LA3_: ;
686 {
687 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
688 if (!!(((*dest) == NIM_NIL))) goto LA8_;
689 T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
690 T10_ = usrToCell__system_5270((*dest));
691 decRef__system_5315(T10_);
692 }
693 LA8_: ;
694 (*dest) = src;
695 }
N_NIMCALL(void,nodeTableRawInsert__treetab_119)696 N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_119)(tySequence__vhmj4KkIKPinmRXny9c2Q6Q** data, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val) {
697 NI h;
698 NI T1_;
699 T1_ = (((*data) ? (*data)->Sup.len : 0)-1);
700 h = (NI)(k & T1_);
701 {
702 while (1) {
703 NI T4_;
704 if (!!(((*data)->data[h].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3;
705 T4_ = (((*data) ? (*data)->Sup.len : 0)-1);
706 h = nextTry__astalgo_90(h, T4_);
707 } LA3: ;
708 }
709 (*data)->data[h].h = k;
710 asgnRef((void**) (&(*data)->data[h].key), key);
711 (*data)->data[h].val = val;
712 }
N_NIMCALL(NI,nodeTableTestOrSet__treetab_198)713 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableTestOrSet__treetab_198)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val) {
714 NI result;
715 NI k;
716 NI index;
717 result = (NI)0;
718 k = hashTree__treetab_5(key);
719 index = nodeTableRawGet__treetab_85((*t), k, key);
720 {
721 if (!(((NI) 0) <= index)) goto LA3_;
722 result = (*t).data->data[index].val;
723 }
724 goto LA1_;
725 LA3_: ;
726 {
727 {
728 NI T8_;
729 NIM_BOOL T9_;
730 tySequence__vhmj4KkIKPinmRXny9c2Q6Q* n;
731 NI T12_;
732 T8_ = ((*t).data ? (*t).data->Sup.len : 0);
733 T9_ = (NIM_BOOL)0;
734 T9_ = mustRehash__astalgo_87(T8_, (*t).counter);
735 if (!T9_) goto LA10_;
736 T12_ = ((*t).data ? (*t).data->Sup.len : 0);
737 n = newSeq__treetab_163(((NI) ((NI)(T12_ * ((NI) 2)))));
738 {
739 NI i;
740 NI colontmp_;
741 NI T14_;
742 NI res;
743 i = (NI)0;
744 colontmp_ = (NI)0;
745 T14_ = (((*t).data ? (*t).data->Sup.len : 0)-1);
746 colontmp_ = T14_;
747 res = ((NI) 0);
748 {
749 while (1) {
750 if (!(res <= colontmp_)) goto LA16;
751 i = res;
752 {
753 if (!!(((*t).data->data[i].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA19_;
754 nodeTableRawInsert__treetab_119((&n), (*t).data->data[i].h, (*t).data->data[i].key, (*t).data->data[i].val);
755 }
756 LA19_: ;
757 res += ((NI) 1);
758 } LA16: ;
759 }
760 }
761 unsureAsgnRef((void**) (&(*t).data), n);
762 n = NIM_NIL;
763 }
764 LA10_: ;
765 nodeTableRawInsert__treetab_119((&(*t).data), k, key, val);
766 result = val;
767 (*t).counter += ((NI) 1);
768 }
769 LA1_: ;
770 return result;
771 }
772