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