/* Generated by Nim Compiler v2.2.0 */ #define NIM_INTBITS 64 #include "nimbase.h" #include #include #include #include #include #undef LANGUAGE_C #undef MIPSEB #undef MIPSEL #undef PPC #undef R3000 #undef R4000 #undef i386 #undef linux #undef mips #undef near #undef far #undef powerpc #undef unix typedef struct tySequence__aNpJjaoUowCQc7fBn3wtDQ tySequence__aNpJjaoUowCQc7fBn3wtDQ; typedef struct tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content; typedef struct Exception Exception; typedef struct NimStrPayload NimStrPayload; typedef struct NimStringV2 NimStringV2; typedef struct tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg; typedef struct tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA; typedef struct tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g; typedef struct tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ; typedef struct tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA; typedef struct tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg; typedef struct tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg; typedef struct tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ; typedef struct tyTuple__hnXneaaGpqadwTHCdtBUrg tyTuple__hnXneaaGpqadwTHCdtBUrg; typedef struct tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg; typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ; typedef struct tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA; typedef struct TNimTypeV2 TNimTypeV2; typedef struct RootObj RootObj; typedef struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg tySequence__8XHFOeTbUzLnvMyFAUC3Tg; typedef struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content; typedef struct tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ; struct tySequence__aNpJjaoUowCQc7fBn3wtDQ { NI len; tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content* p; }; typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9axCnCRMUx32AHzFgBrzSMg) (Exception* e_p0); typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void); typedef N_NIMCALL_PTR(void, tyProc__NFmM6mqUOVW3cJg4yvk8Fw) (Exception* e_p0); struct NimStrPayload { NI cap; NIM_CHAR data[SEQ_DECL_SIZE]; }; struct NimStringV2 { NI len; NimStrPayload* p; }; typedef N_NIMCALL_PTR(void, tyProc__W6IXMh2CA4X1rFYGjUb4yg) (NimStringV2 msg_p0); typedef tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* tyArray__0HQdtIqtKJoAiThHSbtBQA[256]; typedef tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* tyArray__XmMLlJQDH9a09bkWaqOA7sYw[256]; typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24]; typedef tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* tyArray__XPZ2BGOoN7MiJZ53A8hO7Q[32]; typedef tyArray__XPZ2BGOoN7MiJZ53A8hO7Q tyArray__q0aKN8e9aGccro86M8TuatA[24]; typedef tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* tyArray__1B3xg0GrwWq7q9crvT1c9bWQ[256]; struct tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg { tyArray__1B3xg0GrwWq7q9crvT1c9bWQ data; }; struct tyTuple__hnXneaaGpqadwTHCdtBUrg { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* Field0; NI Field1; }; typedef tyTuple__hnXneaaGpqadwTHCdtBUrg tyArray__jn06c7SdV7noGtDlCUkKuw[30]; struct tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ { NI len; tyArray__jn06c7SdV7noGtDlCUkKuw chunks; tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* next; }; struct tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg { tyArray__0HQdtIqtKJoAiThHSbtBQA freeSmallChunks; tyArray__XmMLlJQDH9a09bkWaqOA7sYw sharedFreeLists; NU32 flBitmap; tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap; tyArray__q0aKN8e9aGccro86M8TuatA matrix; tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* llmem; NI currMem; NI maxMem; NI freeMem; NI occ; NI lastSize; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* sharedFreeListBigChunks; tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg chunkStarts; NIM_BOOL lockActive; NIM_BOOL locked; NIM_BOOL blockChunkSizeIncrease; NI nextChunkSize; tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ heapLinks; }; struct tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg { NI prevSize; NI size; tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* owner; }; struct tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg Sup; tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* next; tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* prev; tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* freeList; NI32 free; NU32 acc; NI foreignCells; NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE]; }; typedef NI8 tyArray__mkmEeKAWtk2yS9bBb1lUWXA[256]; struct tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg Sup; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* next; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* prev; NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE]; }; struct tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA { NI size; NI acc; tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* next; }; typedef NU tyArray__VqSA39cBDWnwnJySTumCdjw[8]; struct tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg { tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* next; NI key; tyArray__VqSA39cBDWnwnJySTumCdjw bits; }; struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ { NI Field0; NI Field1; }; struct tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g { tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* next; NI alignment; }; struct tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA { NI rc; }; struct TNimTypeV2 { void* destructor; NI size; NI16 align; NI16 depth; NU32* display; void* traceImpl; void* typeInfoV1; NI flags; void* vTable[SEQ_DECL_SIZE]; }; typedef N_NIMCALL_PTR(void, tyProc__4SVlZZPmetqBimNsH9cHcOA) (void* p_p0); struct RootObj { TNimTypeV2* m_type; }; struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg { NI len; tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content* p; }; struct Exception { RootObj Sup; Exception* parent; NCSTRING name; NimStringV2 message; tySequence__8XHFOeTbUzLnvMyFAUC3Tg trace; Exception* up; }; typedef N_NOCONV_PTR(void, tyProc__gx1DG571q2UZkCl7Jq3AOg) (int a_p0); typedef NIM_CHAR tyArray__gpc2RrLEcWgv7ONpLYNHOw[2001]; struct tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ { NCSTRING procname; NI line; NCSTRING filename; }; typedef struct { N_NIMCALL_PTR(void, ClP_0) (void* ClE_0); void* ClE_0; } tyProc__HzVCwACFYM9cx9aV62PdjtuA; struct tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content { NI cap; tyProc__HzVCwACFYM9cx9aV62PdjtuA data[SEQ_DECL_SIZE]; }; struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content { NI cap; tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ data[SEQ_DECL_SIZE]; }; N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign_p0); N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_u3285)(NCSTRING data_p0, NI length_p1); N_LIB_PRIVATE N_NIMCALL(NimStringV2, cstrToNimstr)(NCSTRING str_p0); static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1); static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2); static N_INLINE(NIM_BOOL*, nimErrorFlag)(void); N_LIB_PRIVATE N_NIMCALL(NimStringV2, toNimStr)(NCSTRING str_p0, NI len_p1); N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size_p0); N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_u1742)(NI size_p0); N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_u5976)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, NI size_p1); N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_u5718)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI requestedSize_p1); static N_INLINE(NI, roundup__system_u4701)(NI x_p0, NI v_p1); N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*, getSmallChunk__system_u5560)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0); N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getBigChunk__system_u5532)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); static N_INLINE(void, mappingSearch__system_u4861)(NI* r_p0, NI* fl_p1, NI* sl_p2); static N_INLINE(NI, msbit__system_u4836)(NU32 x_p0); static N_INLINE(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, findSuitableBlock__system_u4894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI* fl_p1, NI* sl_p2); static N_INLINE(NI, lsbit__system_u4844)(NU32 x_p0); N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, requestOsChunks__system_u5434)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); N_LIB_PRIVATE N_NIMCALL(void*, allocPages__system_u5021)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); static N_INLINE(void*, osAllocPages__system_u4721)(NI size_p0); N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_u4696)(void); static N_INLINE(void, rawWrite)(FILE* f_p0, NCSTRING s_p1); N_LIB_PRIVATE N_NIMCALL(void*, tryAllocPages__system_u5025)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); static N_INLINE(void*, osTryAllocPages__system_u4724)(NI size_p0); static N_INLINE(void, incCurrMem__system_u5001)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1); N_LIB_PRIVATE N_NIMCALL(tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*, addHeapLink__system_u5064)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* p_p1, NI size_p2); N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_u5029)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); static N_INLINE(void, zeroMem__system_u1723)(void* p_p0, NI size_p1); static N_INLINE(NI, pluspercent___system_u787)(NI x_p0, NI y_p1); N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_u5196)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1); N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetGet__system_u5150)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p0, NI key_p1); static N_INLINE(NI, pageIndex__system_u5417)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0); static N_INLINE(NI, minuspercent___system_u807)(NI x_p0, NI y_p1); N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_u5503)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2); N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, splitChunk2__system_u5482)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2); static N_INLINE(void, updatePrevSize__system_u5477)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI prevSize_p2); static N_INLINE(NIM_BOOL, isAccessible__system_u5459)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1); static N_INLINE(NI, pageIndex__system_u5424)(void* p_p0); N_LIB_PRIVATE N_NIMCALL(void, incl__system_u5234)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p1, NI key_p2); N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetPut__system_u5179)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p1, NI key_p2); N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_u4991)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1); static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_u4879)(NI r_p0); static N_INLINE(void, setBit__system_u4847)(NI nr_p0, NU32* dest_p1); N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_u4982)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1, NI fl_p2, NI sl_p3); static N_INLINE(void, clearBit__system_u4854)(NI nr_p0, NU32* dest_p1); N_LIB_PRIVATE N_NIMCALL(void, compensateCounters__system_u5651)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1, NI size_p2); static N_INLINE(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*, pageAddr__system_u5431)(void* p_p0); static N_INLINE(void, listAdd__system_u5750)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1); static N_INLINE(void, listRemove__system_u5827)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1); N_LIB_PRIVATE N_NIMCALL(void, freeDeferredObjects__system_u5686)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* root_p1); N_LIB_PRIVATE N_NIMCALL(void, deallocBigChunk__system_u5578)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1); N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_u5556)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1); N_LIB_PRIVATE N_NIMCALL(void, excl__system_u5256)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1); static N_INLINE(void, decCurrMem__system_u5009)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1); static N_INLINE(void, osDeallocPages__system_u4727)(void* p_p0, NI size_p1); N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_u5508)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1); static N_INLINE(NIM_BOOL, chunkUnused__system_u5332)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0); static N_INLINE(NIM_BOOL, isSmallChunk__system_u5326)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0); N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_u4943)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1); static N_INLINE(void, addToSharedFreeListBigChunks__system_u5589)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1); N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getHugeChunk__system_u5552)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1); static N_INLINE(void, copyMem__system_u1726)(void* dest_p0, void* source_p1, NI size_p2); static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2); static N_INLINE(NI, nimCStrLen)(NCSTRING a_p0); N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0); N_LIB_PRIVATE N_NOCONV(void, deallocSharedImpl__system_u1759)(void* p_p0); N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_u1746)(void* p_p0); N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_u5984)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1); N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_u5894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1); static N_INLINE(void, addToSharedFreeList__system_u5613)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p0, tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f_p1, NI size_p2); static N_INLINE(void, popCurrentException)(void); N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZtypedthreads_u211)(Exception** dest_p0, Exception* src_p1); static N_INLINE(void, nimIncRef)(void* p_p0); static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p_p0); N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0); N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1); N_LIB_PRIVATE N_NIMCALL(NI, align__system_u1628)(NI address_p0, NI alignment_p1); N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1); N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_u3280)(NCSTRING msg_p0, NI length_p1); static N_INLINE(void, rawWriteString)(FILE* f_p0, NCSTRING s_p1, NI length_p2); N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_u3798)(void); N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_u3573)(Exception* e_p0); N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_u3494)(Exception* e_p0); N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___system_u3465)(tySequence__8XHFOeTbUzLnvMyFAUC3Tg stackTraceEntries_p0); N_NIMCALL(NimStringV2, rawNewString)(NI cap_p0); static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1); N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1); static N_INLINE(NI, resize__system_u2198)(NI old_p0); N_LIB_PRIVATE N_NOCONV(void*, reallocSharedImpl__system_u1761)(void* p_p0, NI newSize_p1); N_LIB_PRIVATE N_NOCONV(void*, reallocImpl__system_u1748)(void* p_p0, NI newSize_p1); N_LIB_PRIVATE N_NIMCALL(void*, realloc__system_u5987)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1, NI newsize_p2); N_LIB_PRIVATE N_NIMCALL(NI, ptrSize__system_u5964)(void* p_p0); N_LIB_PRIVATE N_NIMCALL(void, add__system_u2870)(NimStringV2* x_p0, NCSTRING y_p1); static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1); static N_INLINE(void, addInt__stdZprivateZdigitsutils_u195)(NimStringV2* result_p0, NI x_p1); N_LIB_PRIVATE N_NIMCALL(void, addInt__stdZprivateZdigitsutils_u178)(NimStringV2* result_p0, NI64 x_p1); N_LIB_PRIVATE N_NOCONV(void*, reallocShared0Impl__system_u1764)(void* p_p0, NI oldSize_p1, NI newSize_p2); N_LIB_PRIVATE N_NOCONV(void*, realloc0Impl__system_u1751)(void* p_p0, NI oldSize_p1, NI newSize_p2); static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0); N_LIB_PRIVATE N_NIMCALL(void, eqsink___stdZtypedthreads_u217)(Exception** dest_p0, Exception* src_p1); N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void); static const struct { NI cap; NIM_CHAR data[17+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_2 = { 17 | NIM_STRLIT_FLAG, "[[reraised from:\012" }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_3 = {17, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_2}; static const struct { NI cap; NIM_CHAR data[3+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_4 = { 3 | NIM_STRLIT_FLAG, "]]\012" }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_5 = {3, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_4}; static const struct { NI cap; NIM_CHAR data[1+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_6 = { 1 | NIM_STRLIT_FLAG, "(" }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_7 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_6}; static const struct { NI cap; NIM_CHAR data[2+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_8 = { 2 | NIM_STRLIT_FLAG, ", " }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_9 = {2, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_8}; static const struct { NI cap; NIM_CHAR data[1+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_10 = { 1 | NIM_STRLIT_FLAG, ")" }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_11 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_10}; static const struct { NI cap; NIM_CHAR data[1+1]; } TM__Q5wkpxktOdTGvlSRo9bzt9aw_12 = { 1 | NIM_STRLIT_FLAG, "\012" }; static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_13 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_12}; N_LIB_PRIVATE NIM_CONST tyArray__mkmEeKAWtk2yS9bBb1lUWXA fsLookupTable__system_u4835 = {((NI8)-1), ((NI8)0), ((NI8)1), ((NI8)1), ((NI8)2), ((NI8)2), ((NI8)2), ((NI8)2), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)3), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)4), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)5), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)6), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7), ((NI8)7)} ; N_LIB_PRIVATE NIM_THREADVAR tySequence__aNpJjaoUowCQc7fBn3wtDQ nimThreadDestructionHandlers__system_u3191; N_LIB_PRIVATE NIM_THREADVAR Exception* currException__system_u3313; N_LIB_PRIVATE NI nim_program_result; N_LIB_PRIVATE NIM_THREADVAR TFrame* framePtr__system_u2639; N_LIB_PRIVATE tyProc__9axCnCRMUx32AHzFgBrzSMg globalRaiseHook__system_u2861; N_LIB_PRIVATE NIM_THREADVAR tyProc__9axCnCRMUx32AHzFgBrzSMg localRaiseHook__system_u2864; N_LIB_PRIVATE tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ outOfMemHook__system_u2866; N_LIB_PRIVATE tyProc__NFmM6mqUOVW3cJg4yvk8Fw unhandledExceptionHook__system_u2869; N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg errorMessageWriter__system_u3277; N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg onUnhandledException__system_u3493; N_LIB_PRIVATE NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u3579; N_LIB_PRIVATE NIM_THREADVAR tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg allocator__system_u6025; static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) { void* T1_; T1_ = (void*)0; T1_ = memset(a_p0, v_p1, ((size_t) (size_p2))); } static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) { NIM_BOOL* result; result = (&nimInErrorMode__system_u3579); return result; } static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) { NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; }BeforeRet_: ; } static N_INLINE(NI, roundup__system_u4701)(NI x_p0, NI v_p1) { NI result; result = (NI)((NI)(x_p0 + (NI)(v_p1 - ((NI)1))) & (NI)((NU64) ~((NI)(v_p1 - ((NI)1))))); return result; } static N_INLINE(NI, msbit__system_u4836)(NU32 x_p0) { NI result; NI colontmpD_; NI colontmpD__2; NI a; colontmpD_ = (NI)0; colontmpD__2 = (NI)0; { NI colontmpD__3; NI colontmpD__4; if (!((NU32)(x_p0) <= (NU32)(((NU32)65535)))) goto LA3_; colontmpD__3 = (NI)0; colontmpD__4 = (NI)0; { if (!((NU32)(x_p0) <= (NU32)(((NU32)255)))) goto LA7_; colontmpD__3 = ((NI)0); colontmpD_ = colontmpD__3; } goto LA5_; LA7_: ; { colontmpD__4 = ((NI)8); colontmpD_ = colontmpD__4; } LA5_: ; a = colontmpD_; } goto LA1_; LA3_: ; { NI colontmpD__5; NI colontmpD__6; colontmpD__5 = (NI)0; colontmpD__6 = (NI)0; { if (!((NU32)(x_p0) <= (NU32)(((NU32)16777215)))) goto LA13_; colontmpD__5 = ((NI)16); colontmpD__2 = colontmpD__5; } goto LA11_; LA13_: ; { colontmpD__6 = ((NI)24); colontmpD__2 = colontmpD__6; } LA11_: ; a = colontmpD__2; } LA1_: ; result = (NI)(((NI) (fsLookupTable__system_u4835[((NU32)((NU32)(x_p0) >> (NU64)(a)))- 0])) + a); return result; } static N_INLINE(void, mappingSearch__system_u4861)(NI* r_p0, NI* fl_p1, NI* sl_p2) { NI t; NI T1_; NI T2_; T1_ = (NI)0; T1_ = msbit__system_u4836(((NU32) ((*r_p0)))); T2_ = (NI)0; T2_ = roundup__system_u4701((NI)((NU64)(((NI)1)) << (NU64)((NI)(T1_ - ((NI)5)))), ((NI)4096)); t = (NI)(T2_ - ((NI)1)); (*r_p0) = (NI)((*r_p0) + t); (*r_p0) = (NI)((*r_p0) & (NI)((NU64) ~(t))); (*r_p0) = (((*r_p0) <= ((NI)1056964608)) ? (*r_p0) : ((NI)1056964608)); (*fl_p1) = msbit__system_u4836(((NU32) ((*r_p0)))); (*sl_p2) = (NI)((NI)((NI64)((*r_p0)) >> (NU64)((NI)((*fl_p1) - ((NI)5)))) - ((NI)32)); (*fl_p1) -= ((NI)6); } static N_INLINE(NI, lsbit__system_u4844)(NU32 x_p0) { NI result; result = msbit__system_u4836((NU32)(x_p0 & (NU32)((NU32)((NU32)((NU32) ~(x_p0))) + (NU32)(((NU32)1))))); return result; } static N_INLINE(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, findSuitableBlock__system_u4894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI* fl_p1, NI* sl_p2) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result; NU32 tmp; tmp = (NU32)((*a_p0).slBitmap[((*fl_p1))- 0] & (NU32)((NU64)(((NU32)IL64(4294967295))) << (NU64)((*sl_p2)))); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); { if (!!((tmp == ((NU32)0)))) goto LA3_; (*sl_p2) = lsbit__system_u4844(tmp); result = (*a_p0).matrix[((*fl_p1))- 0][((*sl_p2))- 0]; } goto LA1_; LA3_: ; { (*fl_p1) = lsbit__system_u4844((NU32)((*a_p0).flBitmap & (NU32)((NU64)(((NU32)IL64(4294967295))) << (NU64)((NI)((*fl_p1) + ((NI)1)))))); { if (!(((NI)0) < (*fl_p1))) goto LA8_; (*sl_p2) = lsbit__system_u4844((*a_p0).slBitmap[((*fl_p1))- 0]); result = (*a_p0).matrix[((*fl_p1))- 0][((*sl_p2))- 0]; } LA8_: ; } LA1_: ; return result; } static N_INLINE(void, rawWrite)(FILE* f_p0, NCSTRING s_p1) { size_t T1_; size_t T2_; int T3_; T1_ = (size_t)0; T1_ = strlen(s_p1); T2_ = (size_t)0; T2_ = fwrite(((void*) (s_p1)), ((size_t)1), T1_, f_p0); (void)(T2_); T3_ = (int)0; T3_ = fflush(f_p0); (void)(T3_); } N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_u4696)(void) { { if (!!((outOfMemHook__system_u2866 == NIM_NIL))) goto LA3_; outOfMemHook__system_u2866(); } LA3_: ; rawWrite(stderr, "out of memory\012"); exit(((int)1)); } static N_INLINE(void*, osAllocPages__system_u4721)(NI size_p0) { void* result; result = mmap(NIM_NIL, ((size_t) (size_p0)), ((int)3), ((int)34), ((int)-1), ((NI)0)); { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = (result == NIM_NIL); if (T3_) goto LA4_; T3_ = (result == ((void*) (((NI)-1)))); LA4_: ; if (!T3_) goto LA5_; raiseOutOfMem__system_u4696(); } LA5_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void*, allocPages__system_u5021)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { void* result; result = osAllocPages__system_u4721(size_p1); return result; } static N_INLINE(void*, osTryAllocPages__system_u4724)(NI size_p0) { void* result; result = mmap(NIM_NIL, ((size_t) (size_p0)), ((int)3), ((int)34), ((int)-1), ((NI)0)); { if (!(result == ((void*) (((NI)-1))))) goto LA3_; result = NIM_NIL; } LA3_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void*, tryAllocPages__system_u5025)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { void* result; result = osTryAllocPages__system_u4724(size_p1); return result; } static N_INLINE(void, incCurrMem__system_u5001)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1) { (*a_p0).currMem += bytes_p1; } static N_INLINE(void, zeroMem__system_u1723)(void* p_p0, NI size_p1) { nimZeroMem(p_p0, size_p1); } N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_u5029)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { void* result; { NIM_BOOL T3_; tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* old; void* T7_; T3_ = (NIM_BOOL)0; T3_ = ((*a_p0).llmem == ((tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA*) NIM_NIL)); if (T3_) goto LA4_; T3_ = ((*(*a_p0).llmem).size < size_p1); LA4_: ; if (!T3_) goto LA5_; old = (*a_p0).llmem; T7_ = (void*)0; T7_ = allocPages__system_u5021(a_p0, ((NI)4096)); (*a_p0).llmem = ((tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA*) (T7_)); incCurrMem__system_u5001(a_p0, ((NI)4096)); (*(*a_p0).llmem).size = ((NI)4072); (*(*a_p0).llmem).acc = ((NI)24); (*(*a_p0).llmem).next = old; } LA5_: ; result = ((void*) ((NI)(((NI) (ptrdiff_t) ((*a_p0).llmem)) + (*(*a_p0).llmem).acc))); (*(*a_p0).llmem).size -= size_p1; (*(*a_p0).llmem).acc += size_p1; zeroMem__system_u1723(result, (size_p1)); return result; } N_LIB_PRIVATE N_NIMCALL(tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*, addHeapLink__system_u5064)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* p_p1, NI size_p2) { tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* result; tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* it; it = (&(*a_p0).heapLinks); { while (1) { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = !((it == ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) NIM_NIL))); if (!(T3_)) goto LA4_; T3_ = (((NI)30) <= (*it).len); LA4_: ; if (!T3_) goto LA2; it = (*it).next; } LA2: ; } { tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* n; void* T9_; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmp_; NI colontmp__2; if (!(it == ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) NIM_NIL))) goto LA7_; T9_ = (void*)0; T9_ = llAlloc__system_u5029(a_p0, ((NI)496)); n = ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) (T9_)); (*n).next = (*a_p0).heapLinks.next; (*a_p0).heapLinks.next = n; colontmp_ = p_p1; colontmp__2 = size_p2; (*n).chunks[(((NI)0))- 0].Field0 = colontmp_; (*n).chunks[(((NI)0))- 0].Field1 = colontmp__2; (*n).len = ((NI)1); result = n; } goto LA5_; LA7_: ; { NI L; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmp__3; NI colontmp__4; L = (*it).len; colontmp__3 = p_p1; colontmp__4 = size_p2; (*it).chunks[(L)- 0].Field0 = colontmp__3; (*it).chunks[(L)- 0].Field1 = colontmp__4; (*it).len += ((NI)1); result = it; } LA5_: ; return result; } static N_INLINE(NI, pluspercent___system_u787)(NI x_p0, NI y_p1) { NI result; result = ((NI) ((NU)((NU64)(((NU) (x_p0))) + (NU64)(((NU) (y_p1)))))); return result; } N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetGet__system_u5150)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p0, NI key_p1) { tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* result; tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* it; { it = (*t_p0).data[((NI)(key_p1 & ((NI)255)))- 0]; { while (1) { if (!!((it == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA2; { if (!((*it).key == key_p1)) goto LA5_; result = it; goto BeforeRet_; } LA5_: ; it = (*it).next; } LA2: ; } result = ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL); }BeforeRet_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_u5196)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1) { NIM_BOOL result; tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t; t = intSetGet__system_u5150(s_p0, (NI)((NI64)(key_p1) >> (NU64)(((NI)9)))); { NI u; if (!!((t == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA3_; u = (NI)(key_p1 & ((NI)511)); result = !(((NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] & (NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63))))) == ((NU)0))); } goto LA1_; LA3_: ; { result = NIM_FALSE; } LA1_: ; return result; } static N_INLINE(NI, pageIndex__system_u5417)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) { NI result; result = (NI)((NI64)(((NI) (ptrdiff_t) (c_p0))) >> (NU64)(((NI)12))); return result; } static N_INLINE(NI, minuspercent___system_u807)(NI x_p0, NI y_p1) { NI result; result = ((NI) ((NU)((NU64)(((NU) (x_p0))) - (NU64)(((NU) (y_p1)))))); return result; } N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, requestOsChunks__system_u5434)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result; NI colontmpD_; NI colontmpD__2; NI size_2; tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* heapLink; NI nxt; tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* next; NI lastSize; NI prv; tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* prev; colontmpD_ = (NI)0; colontmpD__2 = (NI)0; { NI usedMem; if (!!((*a_p0).blockChunkSizeIncrease)) goto LA3_; usedMem = (*a_p0).occ; { if (!(usedMem < ((NI)65536))) goto LA7_; (*a_p0).nextChunkSize = ((NI)16384); } goto LA5_; LA7_: ; { NI T10_; T10_ = (NI)0; T10_ = roundup__system_u4701((NI)((NI64)(usedMem) >> (NU64)(((NI)2))), ((NI)4096)); (*a_p0).nextChunkSize = ((T10_ <= (NI)((*a_p0).nextChunkSize * ((NI)2))) ? T10_ : (NI)((*a_p0).nextChunkSize * ((NI)2))); (*a_p0).nextChunkSize = (((*a_p0).nextChunkSize <= ((NI)1056964608)) ? (*a_p0).nextChunkSize : ((NI)1056964608)); } LA5_: ; } LA3_: ; size_2 = size_p1; { void* T15_; if (!((*a_p0).nextChunkSize < size_2)) goto LA13_; T15_ = (void*)0; T15_ = allocPages__system_u5021(a_p0, size_2); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T15_)); } goto LA11_; LA13_: ; { void* T17_; T17_ = (void*)0; T17_ = tryAllocPages__system_u5025(a_p0, (*a_p0).nextChunkSize); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T17_)); { void* T22_; if (!(result == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA20_; T22_ = (void*)0; T22_ = allocPages__system_u5021(a_p0, size_2); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T22_)); (*a_p0).blockChunkSizeIncrease = NIM_TRUE; } goto LA18_; LA20_: ; { size_2 = (*a_p0).nextChunkSize; } LA18_: ; } LA11_: ; incCurrMem__system_u5001(a_p0, size_2); (*a_p0).freeMem += size_2; heapLink = addHeapLink__system_u5064(a_p0, result, size_2); (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).Sup.size = size_2; nxt = pluspercent___system_u787(((NI) (ptrdiff_t) (result)), size_2); next = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (nxt)); { NI T26_; NIM_BOOL T27_; T26_ = (NI)0; T26_ = pageIndex__system_u5417(next); T27_ = (NIM_BOOL)0; T27_ = contains__system_u5196((&(*a_p0).chunkStarts), T26_); if (!T27_) goto LA28_; (*next).prevSize = (NI)(size_2 | (NI)((*next).prevSize & ((NI)1))); } LA28_: ; { if (!!(((*a_p0).lastSize == ((NI)0)))) goto LA32_; colontmpD_ = (*a_p0).lastSize; lastSize = colontmpD_; } goto LA30_; LA32_: ; { colontmpD__2 = ((NI)4096); lastSize = colontmpD__2; } LA30_: ; prv = minuspercent___system_u807(((NI) (ptrdiff_t) (result)), lastSize); prev = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (prv)); { NIM_BOOL T37_; NI T38_; T37_ = (NIM_BOOL)0; T38_ = (NI)0; T38_ = pageIndex__system_u5417(prev); T37_ = contains__system_u5196((&(*a_p0).chunkStarts), T38_); if (!(T37_)) goto LA39_; T37_ = ((*prev).size == lastSize); LA39_: ; if (!T37_) goto LA40_; (*result).Sup.prevSize = (NI)(lastSize | (NI)((*result).Sup.prevSize & ((NI)1))); } goto LA35_; LA40_: ; { (*result).Sup.prevSize = (NI)(((NI)0) | (NI)((*result).Sup.prevSize & ((NI)1))); } LA35_: ; (*a_p0).lastSize = size_2; return result; } static N_INLINE(NI, pageIndex__system_u5424)(void* p_p0) { NI result; result = (NI)((NI64)(((NI) (ptrdiff_t) (p_p0))) >> (NU64)(((NI)12))); return result; } static N_INLINE(NIM_BOOL, isAccessible__system_u5459)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1) { NIM_BOOL result; NI T1_; T1_ = (NI)0; T1_ = pageIndex__system_u5424(p_p1); result = contains__system_u5196((&(*a_p0).chunkStarts), T1_); return result; } static N_INLINE(void, updatePrevSize__system_u5477)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI prevSize_p2) { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* ri; NI T1_; T1_ = (NI)0; T1_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_p1)), (*c_p1).Sup.size); ri = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T1_)); { NIM_BOOL T4_; T4_ = (NIM_BOOL)0; T4_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (ri))); if (!T4_) goto LA5_; (*ri).prevSize = (NI)(prevSize_p2 | (NI)((*ri).prevSize & ((NI)1))); } LA5_: ; } N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetPut__system_u5179)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p1, NI key_p2) { tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* result; result = intSetGet__system_u5150((&(*t_p1)), key_p2); { void* T5_; if (!(result == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL))) goto LA3_; T5_ = (void*)0; T5_ = llAlloc__system_u5029(a_p0, ((NI)80)); result = ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) (T5_)); (*result).next = (*t_p1).data[((NI)(key_p2 & ((NI)255)))- 0]; (*t_p1).data[((NI)(key_p2 & ((NI)255)))- 0] = result; (*result).key = key_p2; } LA3_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void, incl__system_u5234)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p1, NI key_p2) { tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t; NI u; t = intSetPut__system_u5179(a_p0, s_p1, (NI)((NI64)(key_p2) >> (NU64)(((NI)9)))); u = (NI)(key_p2 & ((NI)511)); (*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] | (NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63))))); } N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, splitChunk2__system_u5482)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result; NI T1_; tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T2_; NI T3_; T1_ = (NI)0; T1_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_p1)), size_p2); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T1_)); (*result).Sup.size = (NI)((*c_p1).Sup.size - size_p2); (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).Sup.prevSize = size_p2; (*result).Sup.owner = a_p0; updatePrevSize__system_u5477(a_p0, c_p1, (*result).Sup.size); (*c_p1).Sup.size = size_p2; T2_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0; T2_ = a_p0; T3_ = (NI)0; T3_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result))))); incl__system_u5234(T2_, (&(*a_p0).chunkStarts), T3_); return result; } static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_u4879)(NI r_p0) { tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ result; nimZeroMem((void*)(&result), sizeof(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ)); result.Field0 = msbit__system_u4836(((NU32) (r_p0))); result.Field1 = (NI)((NI)((NI64)(r_p0) >> (NU64)((NI)(result.Field0 - ((NI)5)))) - ((NI)32)); result.Field0 -= ((NI)6); return result; } static N_INLINE(void, setBit__system_u4847)(NI nr_p0, NU32* dest_p1) { (*dest_p1) = (NU32)((*dest_p1) | (NU32)((NU64)(((NU32)1)) << (NU64)((NI)(nr_p0 & ((NI)31))))); } N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_u4991)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1) { tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tmpTuple; NI fl; NI sl; tmpTuple = mappingInsert__system_u4879((*b_p1).Sup.size); fl = tmpTuple.Field0; sl = tmpTuple.Field1; (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*b_p1).next = (*a_p0).matrix[(fl)- 0][(sl)- 0]; { if (!!(((*a_p0).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_; (*(*a_p0).matrix[(fl)- 0][(sl)- 0]).prev = b_p1; } LA3_: ; (*a_p0).matrix[(fl)- 0][(sl)- 0] = b_p1; setBit__system_u4847(sl, (&(*a_p0).slBitmap[(fl)- 0])); setBit__system_u4847(fl, (&(*a_p0).flBitmap)); } N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_u5503)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest; rest = splitChunk2__system_u5482(a_p0, c_p1, size_p2); addChunkToMatrix__system_u4991(a_p0, rest); } static N_INLINE(void, clearBit__system_u4854)(NI nr_p0, NU32* dest_p1) { (*dest_p1) = (NU32)((*dest_p1) & (NU32)((NU32) ~((NU32)((NU64)(((NU32)1)) << (NU64)((NI)(nr_p0 & ((NI)31))))))); } N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_u4982)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1, NI fl_p2, NI sl_p3) { (*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0] = (*b_p1).next; { if (!!(((*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_; (*(*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0]).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); } goto LA1_; LA3_: ; { clearBit__system_u4854(sl_p3, (&(*a_p0).slBitmap[(fl_p2)- 0])); { if (!((*a_p0).slBitmap[(fl_p2)- 0] == ((NU32)0))) goto LA8_; clearBit__system_u4854(fl_p2, (&(*a_p0).flBitmap)); } LA8_: ; } LA1_: ; (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*b_p1).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); } N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getBigChunk__system_u5532)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result; NI size_2; NI fl; NI sl; tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T19_; NI T20_; size_2 = size_p1; fl = ((NI)0); sl = ((NI)0); mappingSearch__system_u4861((&size_2), (&fl), (&sl)); result = findSuitableBlock__system_u4894((&(*a_p0)), (&fl), (&sl)); { if (!(result == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA3_; { if (!(size_2 < ((NI)524288))) goto LA7_; result = requestOsChunks__system_u5434(a_p0, ((NI)524288)); splitChunk__system_u5503(a_p0, result, size_2); } goto LA5_; LA7_: ; { result = requestOsChunks__system_u5434(a_p0, size_2); { if (!(size_2 < (*result).Sup.size)) goto LA12_; splitChunk__system_u5503(a_p0, result, size_2); } LA12_: ; } LA5_: ; (*result).Sup.owner = a_p0; } goto LA1_; LA3_: ; { removeChunkFromMatrix2__system_u4982(a_p0, result, fl, sl); { if (!((NI)(size_2 + ((NI)4096)) <= (*result).Sup.size)) goto LA17_; splitChunk__system_u5503(a_p0, result, size_2); } LA17_: ; } LA1_: ; (*result).Sup.prevSize = ((NI)1); T19_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0; T19_ = a_p0; T20_ = (NI)0; T20_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result))))); incl__system_u5234(T19_, (&(*a_p0).chunkStarts), T20_); (*a_p0).freeMem -= size_2; return result; } N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*, getSmallChunk__system_u5560)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0) { tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* result; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* res; res = getBigChunk__system_u5532(a_p0, ((NI)4096)); result = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (res)); return result; } static N_INLINE(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*, pageAddr__system_u5431)(void* p_p0) { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* result; result = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) ((NI)(((NI) (ptrdiff_t) (p_p0)) & ((NI)-4096)))); return result; } N_LIB_PRIVATE N_NIMCALL(void, compensateCounters__system_u5651)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1, NI size_p2) { tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* it; NI total; it = (*c_p1).freeList; total = ((NI)0); { while (1) { tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* chunk; tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* T3_; if (!!((it == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL)))) goto LA2; total += size_p2; T3_ = (tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*)0; T3_ = pageAddr__system_u5431(((void*) (it))); chunk = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (T3_)); { if (!!((c_p1 == chunk))) goto LA6_; (*c_p1).foreignCells += ((NI)1); } LA6_: ; it = (*it).next; } LA2: ; } (*c_p1).free += total; (*a_p0).occ -= total; } static N_INLINE(void, listAdd__system_u5750)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1) { (*c_p1).next = (*head_p0); { if (!!(((*head_p0) == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA3_; (*(*head_p0)).prev = c_p1; } LA3_: ; (*head_p0) = c_p1; } static N_INLINE(void, listRemove__system_u5827)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1) { { if (!(c_p1 == (*head_p0))) goto LA3_; (*head_p0) = (*c_p1).next; { if (!!(((*head_p0) == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA7_; (*(*head_p0)).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL); } LA7_: ; } goto LA1_; LA3_: ; { (*(*c_p1).prev).next = (*c_p1).next; { if (!!(((*c_p1).next == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA12_; (*(*c_p1).next).prev = (*c_p1).prev; } LA12_: ; } LA1_: ; (*c_p1).next = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL); (*c_p1).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL); } N_LIB_PRIVATE N_NIMCALL(void, excl__system_u5256)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1) { tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t; t = intSetGet__system_u5150((&(*s_p0)), (NI)((NI64)(key_p1) >> (NU64)(((NI)9)))); { NI u; if (!!((t == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA3_; u = (NI)(key_p1 & ((NI)511)); (*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] & (NU)((NU64) ~((NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63))))))); } LA3_: ; } static N_INLINE(void, decCurrMem__system_u5009)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1) { (*a_p0).maxMem = (((*a_p0).maxMem >= (*a_p0).currMem) ? (*a_p0).maxMem : (*a_p0).currMem); (*a_p0).currMem -= bytes_p1; } static N_INLINE(void, osDeallocPages__system_u4727)(void* p_p0, NI size_p1) { int T1_; T1_ = (int)0; T1_ = munmap(p_p0, ((size_t) (size_p1))); (void)(T1_); } N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_u5556)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) { NI size; NI T1_; size = (*c_p1).Sup.size; T1_ = (NI)0; T1_ = pageIndex__system_u5417(&c_p1->Sup); excl__system_u5256((&(*a_p0).chunkStarts), T1_); decCurrMem__system_u5009(a_p0, size); osDeallocPages__system_u4727(((void*) (c_p1)), size); } static N_INLINE(NIM_BOOL, chunkUnused__system_u5332)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) { NIM_BOOL result; result = ((NI)((*c_p0).prevSize & ((NI)1)) == ((NI)0)); return result; } static N_INLINE(NIM_BOOL, isSmallChunk__system_u5326)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) { NIM_BOOL result; result = ((*c_p0).size <= ((NI)4032)); return result; } N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_u4943)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1) { tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tmpTuple; NI fl; NI sl; tmpTuple = mappingInsert__system_u4879((*b_p1).Sup.size); fl = tmpTuple.Field0; sl = tmpTuple.Field1; { if (!!(((*b_p1).next == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_; (*(*b_p1).next).prev = (*b_p1).prev; } LA3_: ; { if (!!(((*b_p1).prev == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA7_; (*(*b_p1).prev).next = (*b_p1).next; } LA7_: ; { if (!((*a_p0).matrix[(fl)- 0][(sl)- 0] == b_p1)) goto LA11_; (*a_p0).matrix[(fl)- 0][(sl)- 0] = (*b_p1).next; { if (!((*a_p0).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA15_; clearBit__system_u4854(sl, (&(*a_p0).slBitmap[(fl)- 0])); { if (!((*a_p0).slBitmap[(fl)- 0] == ((NU32)0))) goto LA19_; clearBit__system_u4854(fl, (&(*a_p0).flBitmap)); } LA19_: ; } LA15_: ; } LA11_: ; (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*b_p1).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); } N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_u5508)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_2; NI prevSize; tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* ri; NI T24_; c_2 = c_p1; (*a_p0).freeMem += (*c_2).Sup.size; (*c_2).Sup.prevSize = (NI)((*c_2).Sup.prevSize & ((NI)-2)); prevSize = (*c_2).Sup.prevSize; { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* le; NI T5_; if (!!((prevSize == ((NI)0)))) goto LA3_; T5_ = (NI)0; T5_ = minuspercent___system_u807(((NI) (ptrdiff_t) (c_2)), prevSize); le = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T5_)); { NIM_BOOL T8_; T8_ = (NIM_BOOL)0; T8_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (le))); if (!(T8_)) goto LA9_; T8_ = chunkUnused__system_u5332(le); LA9_: ; if (!T8_) goto LA10_; { NIM_BOOL T14_; NIM_BOOL T15_; NI T19_; T14_ = (NIM_BOOL)0; T15_ = (NIM_BOOL)0; T15_ = isSmallChunk__system_u5326(le); T14_ = !(T15_); if (!(T14_)) goto LA16_; T14_ = ((*le).size < ((NI)1056964608)); LA16_: ; if (!T14_) goto LA17_; removeChunkFromMatrix__system_u4943(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (le))); (*le).size += (*c_2).Sup.size; T19_ = (NI)0; T19_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(c_2))))); excl__system_u5256((&(*a_p0).chunkStarts), T19_); c_2 = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (le)); { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest; if (!(((NI)1056964608) < (*c_2).Sup.size)) goto LA22_; rest = splitChunk2__system_u5482(a_p0, c_2, ((NI)1056964608)); addChunkToMatrix__system_u4991(a_p0, c_2); c_2 = rest; } LA22_: ; } LA17_: ; } LA10_: ; } LA3_: ; T24_ = (NI)0; T24_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_2)), (*c_2).Sup.size); ri = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T24_)); { NIM_BOOL T27_; T27_ = (NIM_BOOL)0; T27_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (ri))); if (!(T27_)) goto LA28_; T27_ = chunkUnused__system_u5332(ri); LA28_: ; if (!T27_) goto LA29_; { NIM_BOOL T33_; NIM_BOOL T34_; NI T38_; T33_ = (NIM_BOOL)0; T34_ = (NIM_BOOL)0; T34_ = isSmallChunk__system_u5326(ri); T33_ = !(T34_); if (!(T33_)) goto LA35_; T33_ = ((*c_2).Sup.size < ((NI)1056964608)); LA35_: ; if (!T33_) goto LA36_; removeChunkFromMatrix__system_u4943(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (ri))); (*c_2).Sup.size += (*ri).size; T38_ = (NI)0; T38_ = pageIndex__system_u5417(ri); excl__system_u5256((&(*a_p0).chunkStarts), T38_); { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest_2; if (!(((NI)1056964608) < (*c_2).Sup.size)) goto LA41_; rest_2 = splitChunk2__system_u5482(a_p0, c_2, ((NI)1056964608)); addChunkToMatrix__system_u4991(a_p0, rest_2); } LA41_: ; } LA36_: ; } LA29_: ; addChunkToMatrix__system_u4991(a_p0, c_2); } N_LIB_PRIVATE N_NIMCALL(void, deallocBigChunk__system_u5578)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) { (*a_p0).occ -= (*c_p1).Sup.size; { if (!(((NI)1056964609) <= (*c_p1).Sup.size)) goto LA3_; freeHugeChunk__system_u5556(a_p0, c_p1); } goto LA1_; LA3_: ; { freeBigChunk__system_u5508(a_p0, c_p1); } LA1_: ; } static N_INLINE(void, addToSharedFreeListBigChunks__system_u5589)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) { { while (1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* T3_; T3_ = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0; T3_ = __atomic_load_n(&(*a_p0).sharedFreeListBigChunks, __ATOMIC_RELAXED); __atomic_store_n(&(*c_p1).next, T3_, __ATOMIC_RELAXED); { NIM_BOOL T6_; T6_ = (NIM_BOOL)0; T6_ = __atomic_compare_exchange_n(&(*a_p0).sharedFreeListBigChunks, &(*c_p1).next, c_p1, NIM_TRUE, __ATOMIC_RELEASE, __ATOMIC_RELAXED); if (!T6_) goto LA7_; goto LA1; } LA7_: ; } } LA1: ; } N_LIB_PRIVATE N_NIMCALL(void, freeDeferredObjects__system_u5686)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* root_p1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* it; NI maxIters; it = root_p1; maxIters = ((NI)20); { while (1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest; rest = __atomic_load_n(&(*it).next, __ATOMIC_RELAXED); __atomic_store_n(&(*it).next, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL), __ATOMIC_RELAXED); deallocBigChunk__system_u5578(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (it))); { if (!(maxIters == ((NI)0))) goto LA5_; { if (!!((rest == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA9_; addToSharedFreeListBigChunks__system_u5589(a_p0, rest); } LA9_: ; goto LA1; } LA5_: ; it = rest; maxIters -= ((NI)1); { if (!(it == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA13_; goto LA1; } LA13_: ; } } LA1: ; } N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getHugeChunk__system_u5552)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result; void* T1_; tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T2_; NI T3_; T1_ = (void*)0; T1_ = allocPages__system_u5021(a_p0, size_p1); result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T1_)); incCurrMem__system_u5001(a_p0, size_p1); (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL); (*result).Sup.size = size_p1; (*result).Sup.prevSize = ((NI)1); (*result).Sup.owner = a_p0; T2_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0; T2_ = a_p0; T3_ = (NI)0; T3_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result))))); incl__system_u5234(T2_, (&(*a_p0).chunkStarts), T3_); return result; } N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_u5718)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI requestedSize_p1) { void* result; NI size; result = (void*)0; size = roundup__system_u4701(requestedSize_p1, ((NI)16)); { NI s; tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c; if (!(size <= ((NI)4032))) goto LA3_; s = (NI)(size / ((NI)16)); c = (*a_p0).freeSmallChunks[(s)- 0]; { if (!(c == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL))) goto LA7_; c = getSmallChunk__system_u5560(a_p0); (*c).freeList = ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL); (*c).foreignCells = ((NI)0); (*c).Sup.size = size; (*c).acc = ((NU32) (size)); (*c).free = (NI32)(((NI32)4032) - ((NI32) (size))); (*c).next = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL); (*c).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL); { if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA11_; (*c).freeList = __atomic_exchange_n(&(*a_p0).sharedFreeLists[(s)- 0], ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL), __ATOMIC_RELAXED); compensateCounters__system_u5651(a_p0, c, size); } LA11_: ; { if (!(size <= ((NI) ((*c).free)))) goto LA15_; listAdd__system_u5750(&(*a_p0).freeSmallChunks[(s)- 0], c); } LA15_: ; result = ((void*) ((*c).data)); } goto LA5_; LA7_: ; { { NI T22_; if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA20_; T22_ = (NI)0; T22_ = pluspercent___system_u787(((NI) (ptrdiff_t) ((*c).data)), ((NI) ((*c).acc))); result = ((void*) (T22_)); (*c).acc += size; } goto LA18_; LA20_: ; { result = ((void*) ((*c).freeList)); (*c).freeList = (*(*c).freeList).next; { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* T26_; T26_ = (tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*)0; T26_ = pageAddr__system_u5431(result); if (!!((((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (T26_)) == c))) goto LA27_; (*c).foreignCells -= ((NI)1); } goto LA24_; LA27_: ; { } LA24_: ; } LA18_: ; (*c).free -= size; { if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA32_; (*c).freeList = __atomic_exchange_n(&(*a_p0).sharedFreeLists[(s)- 0], ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL), __ATOMIC_RELAXED); compensateCounters__system_u5651(a_p0, c, size); } LA32_: ; { if (!(((NI) ((*c).free)) < size)) goto LA36_; listRemove__system_u5827(&(*a_p0).freeSmallChunks[(s)- 0], c); } LA36_: ; } LA5_: ; (*a_p0).occ += size; } goto LA1_; LA3_: ; { tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmpD_; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmpD__2; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* deferredFrees; tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_2; colontmpD_ = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0; colontmpD__2 = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0; deferredFrees = __atomic_exchange_n(&(*a_p0).sharedFreeListBigChunks, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL), __ATOMIC_RELAXED); { if (!!((deferredFrees == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA41_; freeDeferredObjects__system_u5686(a_p0, deferredFrees); } LA41_: ; size = (NI)(requestedSize_p1 + ((NI)48)); { if (!(((NI)1056964609) <= size)) goto LA45_; colontmpD_ = getHugeChunk__system_u5552(a_p0, size); c_2 = colontmpD_; } goto LA43_; LA45_: ; { colontmpD__2 = getBigChunk__system_u5532(a_p0, size); c_2 = colontmpD__2; } LA43_: ; result = ((void*) ((*c_2).data)); (*a_p0).occ += (*c_2).Sup.size; } LA1_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_u5976)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, NI size_p1) { void* result; result = rawAlloc__system_u5718(allocator_p0, size_p1); return result; } N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_u1742)(NI size_p0) { void* result; result = alloc__system_u5976((&allocator__system_u6025), size_p0); return result; } N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size_p0) { void* result; result = allocImpl__system_u1742(size_p0); return result; } static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2) { void* T1_; T1_ = (void*)0; T1_ = memcpy(dest_p0, source_p1, ((size_t) (size_p2))); } static N_INLINE(void, copyMem__system_u1726)(void* dest_p0, void* source_p1, NI size_p2) { nimCopyMem(dest_p0, source_p1, size_p2); } N_LIB_PRIVATE N_NIMCALL(NimStringV2, toNimStr)(NCSTRING str_p0, NI len_p1) { NimStringV2 result; nimZeroMem((void*)(&result), sizeof(NimStringV2)); { if (!(len_p1 <= ((NI)0))) goto LA3_; result.len = ((NI)0); result.p = ((NimStrPayload*) NIM_NIL); } goto LA1_; LA3_: ; { NI colontmpD_; NimStrPayload* p; void* T6_; colontmpD_ = (NI)0; T6_ = (void*)0; T6_ = allocSharedImpl(((NI)((NI)(len_p1 + ((NI)1)) + ((NI)8)))); p = ((NimStrPayload*) (T6_)); (*p).cap = len_p1; copyMem__system_u1726(((void*) ((&(*p).data[((NI)0)]))), ((void*) (str_p0)), ((NI)(len_p1 + ((NI)1)))); colontmpD_ = len_p1; result.len = colontmpD_; result.p = p; } LA1_: ; return result; } static N_INLINE(NI, nimCStrLen)(NCSTRING a_p0) { NI result; size_t T5_; { result = (NI)0; { if (!(a_p0 == 0)) goto LA3_; result = ((NI)0); goto BeforeRet_; } LA3_: ; T5_ = (size_t)0; T5_ = strlen(a_p0); result = ((NI) (T5_)); }BeforeRet_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NimStringV2, cstrToNimstr)(NCSTRING str_p0) { NimStringV2 result; NimStringV2 colontmpD_; NimStringV2 colontmpD__2; nimZeroMem((void*)(&colontmpD_), sizeof(NimStringV2)); nimZeroMem((void*)(&colontmpD__2), sizeof(NimStringV2)); { if (!(((void*) (str_p0)) == NIM_NIL)) goto LA3_; colontmpD_ = toNimStr(str_p0, ((NI)0)); result = colontmpD_; } goto LA1_; LA3_: ; { colontmpD__2 = toNimStr(str_p0, nimCStrLen(str_p0)); result = colontmpD__2; } LA1_: ; return result; } static N_INLINE(void, addToSharedFreeList__system_u5613)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p0, tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f_p1, NI size_p2) { { while (1) { tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* T3_; T3_ = (tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*)0; T3_ = __atomic_load_n(&(*(*c_p0).Sup.owner).sharedFreeLists[(size_p2)- 0], __ATOMIC_RELAXED); __atomic_store_n(&(*f_p1).next, T3_, __ATOMIC_RELAXED); { NIM_BOOL T6_; T6_ = (NIM_BOOL)0; T6_ = __atomic_compare_exchange_n(&(*(*c_p0).Sup.owner).sharedFreeLists[(size_p2)- 0], &(*f_p1).next, f_p1, NIM_TRUE, __ATOMIC_RELEASE, __ATOMIC_RELAXED); if (!T6_) goto LA7_; goto LA1; } LA7_: ; } } LA1: ; } N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_u5894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1) { tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c; c = pageAddr__system_u5431(p_p1); { NIM_BOOL T3_; tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_2; NI s; tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f; T3_ = (NIM_BOOL)0; T3_ = isSmallChunk__system_u5326(c); if (!T3_) goto LA4_; c_2 = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (c)); s = (*c_2).Sup.size; f = ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) (p_p1)); { tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* activeChunk; if (!((*c_2).Sup.owner == a_p0)) goto LA8_; (*a_p0).occ -= s; activeChunk = (*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0]; { NIM_BOOL T12_; T12_ = (NIM_BOOL)0; T12_ = !((activeChunk == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL))); if (!(T12_)) goto LA13_; T12_ = !((c_2 == activeChunk)); LA13_: ; if (!T12_) goto LA14_; (*f).next = (*activeChunk).freeList; (*activeChunk).freeList = f; (*activeChunk).free += s; (*activeChunk).foreignCells += ((NI)1); } goto LA10_; LA14_: ; { (*f).next = (*c_2).freeList; (*c_2).freeList = f; { if (!(((NI) ((*c_2).free)) < s)) goto LA19_; listAdd__system_u5750(&(*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0], c_2); (*c_2).free += s; } goto LA17_; LA19_: ; { (*c_2).free += s; { NIM_BOOL T24_; T24_ = (NIM_BOOL)0; T24_ = ((*c_2).free == ((NI32)4032)); if (!(T24_)) goto LA25_; T24_ = ((*c_2).foreignCells == ((NI)0)); LA25_: ; if (!T24_) goto LA26_; listRemove__system_u5827(&(*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0], c_2); (*c_2).Sup.size = ((NI)4096); freeBigChunk__system_u5508(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c_2))); } LA26_: ; } LA17_: ; } LA10_: ; } goto LA6_; LA8_: ; { addToSharedFreeList__system_u5613(c_2, f, (NI)(s / ((NI)16))); } LA6_: ; } goto LA1_; LA4_: ; { { if (!((*c).owner == a_p0)) goto LA32_; deallocBigChunk__system_u5578(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c))); } goto LA30_; LA32_: ; { addToSharedFreeListBigChunks__system_u5589((*c).owner, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c))); } LA30_: ; } LA1_: ; } N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_u5984)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1) { rawDealloc__system_u5894(allocator_p0, p_p1); } N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_u1746)(void* p_p0) { dealloc__system_u5984((&allocator__system_u6025), p_p0); } N_LIB_PRIVATE N_NOCONV(void, deallocSharedImpl__system_u1759)(void* p_p0) { deallocImpl__system_u1746(p_p0); } N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0) { deallocSharedImpl__system_u1759(p_p0); } static N_INLINE(void, nimIncRef)(void* p_p0) { NI T1_; T1_ = (NI)0; T1_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)8)); (*((tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA*) (T1_))).rc += ((NI)8); } static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p_p0) { NIM_BOOL result; result = (NIM_BOOL)0; { tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA* cell; NI T5_; if (!!((p_p0 == NIM_NIL))) goto LA3_; T5_ = (NI)0; T5_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)8)); cell = ((tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA*) (T5_)); { if (!((NI)((NI64)((*cell).rc) >> (NU64)(((NI)3))) == ((NI)0))) goto LA8_; result = NIM_TRUE; } goto LA6_; LA8_: ; { (*cell).rc -= ((NI)8); } LA6_: ; } LA3_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NI, align__system_u1628)(NI address_p0, NI alignment_p1) { NI result; { if (!(alignment_p1 == ((NI)0))) goto LA3_; result = address_p0; } goto LA1_; LA3_: ; { result = (NI)((NI)(address_p0 + (NI)(alignment_p1 - ((NI)1))) & (NI)((NU64) ~((NI)(alignment_p1 - ((NI)1))))); } LA1_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1) { { if (!(align_p1 <= ((NI)16))) goto LA3_; deallocShared(p_p0); } goto LA1_; LA3_: ; { NU16 offset; NI T6_; NI T7_; T6_ = (NI)0; T6_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)2)); offset = (*((NU16*) (((void*) (T6_))))); T7_ = (NI)0; T7_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI) (offset))); deallocShared(((void*) (T7_))); } LA1_: ; } N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1) { NI hdrSize; NI T1_; hdrSize = align__system_u1628(((NI)8), alignment_p1); T1_ = (NI)0; T1_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), hdrSize); alignedDealloc(((void*) (T1_)), alignment_p1); } N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0) { TNimTypeV2** rti; NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); rti = ((TNimTypeV2**) (p_p0)); { if (!!(((*(*rti)).destructor == NIM_NIL))) goto LA3_; ((tyProc__4SVlZZPmetqBimNsH9cHcOA) ((*(*rti)).destructor))(p_p0); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; } LA3_: ; nimRawDispose(p_p0, ((NI) ((*(*rti)).align))); }BeforeRet_: ; } N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZtypedthreads_u211)(Exception** dest_p0, Exception* src_p1) { { if (!src_p1) goto LA3_; nimIncRef(src_p1); } LA3_: ; { NIM_BOOL T7_; T7_ = (NIM_BOOL)0; T7_ = nimDecRefIsLast((*dest_p0)); if (!T7_) goto LA8_; nimDestroyAndDispose((*dest_p0)); } LA8_: ; (*dest_p0) = src_p1; } static N_INLINE(void, popCurrentException)(void) { eqcopy___stdZtypedthreads_u211(&currException__system_u3313, (*currException__system_u3313).up); } static N_INLINE(void, rawWriteString)(FILE* f_p0, NCSTRING s_p1, NI length_p2) { size_t T1_; int T2_; T1_ = (size_t)0; T1_ = fwrite(((void*) (s_p1)), ((size_t)1), ((size_t) (length_p2)), f_p0); (void)(T1_); T2_ = (int)0; T2_ = fflush(f_p0); (void)(T2_); } N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_u3280)(NCSTRING msg_p0, NI length_p1) { rawWriteString(stderr, msg_p0, length_p1); } N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_u3285)(NCSTRING data_p0, NI length_p1) { NIM_BOOL toWrite; NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); toWrite = NIM_TRUE; { NimStringV2 colontmpD_; if (!!((errorMessageWriter__system_u3277 == NIM_NIL))) goto LA3_; colontmpD_.len = 0; colontmpD_.p = NIM_NIL; colontmpD_ = cstrToNimstr(data_p0); errorMessageWriter__system_u3277(colontmpD_); toWrite = NIM_FALSE; if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) { deallocShared(colontmpD_.p); } if (NIM_UNLIKELY(*nimErr_)) { LA5_:; { *nimErr_ = NIM_FALSE; popCurrentException(); LA7_:; } } if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; } LA3_: ; { if (!toWrite) goto LA11_; writeToStdErr__system_u3280(data_p0, length_p1); } LA11_: ; }BeforeRet_: ; } N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign_p0) { NCSTRING msg; tyProc__gx1DG571q2UZkCl7Jq3AOg T26_; int T27_; msg = (NCSTRING)0; { if (!(sign_p0 == ((int)2))) goto LA3_; msg = "SIGINT: Interrupted by Ctrl-C.\012"; } goto LA1_; LA3_: ; { if (!(sign_p0 == ((int)11))) goto LA6_; msg = "SIGSEGV: Illegal storage access. (Attempt to read from nil\?)\012"; } goto LA1_; LA6_: ; { if (!(sign_p0 == ((int)6))) goto LA9_; msg = "SIGABRT: Abnormal termination.\012"; } goto LA1_; LA9_: ; { if (!(sign_p0 == ((int)8))) goto LA12_; msg = "SIGFPE: Arithmetic error.\012"; } goto LA1_; LA12_: ; { if (!(sign_p0 == ((int)4))) goto LA15_; msg = "SIGILL: Illegal operation.\012"; } goto LA1_; LA15_: ; { if (!NIM_FALSE) goto LA18_; msg = "SIGBUS: Illegal storage access. (Attempt to read from nil\?)\012"; } goto LA1_; LA18_: ; { { { if (!(sign_p0 == ((int)13))) goto LA24_; msg = "SIGPIPE: Pipe closed.\012"; goto LA21; } LA24_: ; msg = "unknown signal\012"; } LA21: ; } LA1_: ; showErrorMessage__system_u3285(msg, nimCStrLen(msg)); T26_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T26_ = signal(sign_p0, NIM_NIL); T27_ = (int)0; T27_ = raise(sign_p0); (void)(T27_); } N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_u3798)(void) { tyProc__gx1DG571q2UZkCl7Jq3AOg T1_; tyProc__gx1DG571q2UZkCl7Jq3AOg T2_; tyProc__gx1DG571q2UZkCl7Jq3AOg T3_; tyProc__gx1DG571q2UZkCl7Jq3AOg T4_; tyProc__gx1DG571q2UZkCl7Jq3AOg T5_; tyProc__gx1DG571q2UZkCl7Jq3AOg T6_; T1_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T1_ = signal(((int)2), signalHandler); T2_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T2_ = signal(((int)11), signalHandler); T3_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T3_ = signal(((int)6), signalHandler); T4_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T4_ = signal(((int)8), signalHandler); T5_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T5_ = signal(((int)4), signalHandler); T6_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0; T6_ = signal(((int)13), SIG_IGN); } N_LIB_PRIVATE N_NIMCALL(NimStringV2, rawNewString)(NI space_p0) { NimStringV2 result; nimZeroMem((void*)(&result), sizeof(NimStringV2)); { if (!(space_p0 <= ((NI)0))) goto LA3_; result.len = ((NI)0); result.p = ((NimStrPayload*) NIM_NIL); } goto LA1_; LA3_: ; { NimStrPayload* p; void* T6_; T6_ = (void*)0; T6_ = allocSharedImpl(((NI)((NI)(space_p0 + ((NI)1)) + ((NI)8)))); p = ((NimStrPayload*) (T6_)); (*p).cap = space_p0; (*p).data[((NI)0)] = 0; result.len = ((NI)0); result.p = p; } LA1_: ; return result; } N_LIB_PRIVATE N_NOCONV(void*, allocShared0Impl__system_u1757)(NI size_p0) { void* result; result = allocSharedImpl(size_p0); zeroMem__system_u1723(result, size_p0); return result; } static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1) { { if (!(((NI)0) < src_p1.len)) goto LA3_; copyMem__system_u1726(((void*) ((&(*(*dest_p0).p).data[(*dest_p0).len]))), ((void*) ((&(*src_p1.p).data[((NI)0)]))), ((NI)(src_p1.len + ((NI)1)))); (*dest_p0).len += src_p1.len; } LA3_: ; } static N_INLINE(NI, resize__system_u2198)(NI old_p0) { NI result; { if (!(old_p0 <= ((NI)0))) goto LA3_; result = ((NI)4); } goto LA1_; LA3_: ; { if (!(old_p0 <= ((NI)32767))) goto LA6_; result = (NI)(old_p0 * ((NI)2)); } goto LA1_; LA6_: ; { result = (NI)((NI)(old_p0 * ((NI)3)) / ((NI)2)); } LA1_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NI, ptrSize__system_u5964)(void* p_p0) { NI result; tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c; c = pageAddr__system_u5431(p_p0); result = (*c).size; { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = isSmallChunk__system_u5326(c); if (!!(T3_)) goto LA4_; result -= ((NI)48); } LA4_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void*, realloc__system_u5987)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1, NI newsize_p2) { void* result; result = (void*)0; { if (!(((NI)0) < newsize_p2)) goto LA3_; result = alloc__system_u5976(allocator_p0, newsize_p2); { NI T9_; if (!!((p_p1 == NIM_NIL))) goto LA7_; T9_ = (NI)0; T9_ = ptrSize__system_u5964(p_p1); copyMem__system_u1726(result, p_p1, (((T9_ <= newsize_p2) ? T9_ : newsize_p2))); dealloc__system_u5984(allocator_p0, p_p1); } LA7_: ; } goto LA1_; LA3_: ; { if (!!((p_p1 == NIM_NIL))) goto LA11_; dealloc__system_u5984(allocator_p0, p_p1); } goto LA1_; LA11_: ; LA1_: ; return result; } N_LIB_PRIVATE N_NOCONV(void*, reallocImpl__system_u1748)(void* p_p0, NI newSize_p1) { void* result; result = realloc__system_u5987((&allocator__system_u6025), p_p0, newSize_p1); return result; } N_LIB_PRIVATE N_NOCONV(void*, reallocSharedImpl__system_u1761)(void* p_p0, NI newSize_p1) { void* result; result = reallocImpl__system_u1748(p_p0, newSize_p1); return result; } N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1) { NI newLen; newLen = (NI)((*s_p0).len + addLen_p1); { NIM_BOOL T3_; NimStrPayload* oldP; void* T7_; T3_ = (NIM_BOOL)0; T3_ = ((*s_p0).p == ((NimStrPayload*) NIM_NIL)); if (T3_) goto LA4_; T3_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904))); LA4_: ; if (!T3_) goto LA5_; oldP = (*s_p0).p; T7_ = (void*)0; T7_ = allocSharedImpl(((NI)((NI)(newLen + ((NI)1)) + ((NI)8)))); (*s_p0).p = ((NimStrPayload*) (T7_)); (*(*s_p0).p).cap = newLen; { if (!(((NI)0) < (*s_p0).len)) goto LA10_; copyMem__system_u1726(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((void*) ((&(*oldP).data[((NI)0)]))), ((((*s_p0).len <= newLen) ? (*s_p0).len : newLen))); } goto LA8_; LA10_: ; { if (!(oldP == ((NimStrPayload*) NIM_NIL))) goto LA13_; (*(*s_p0).p).data[((NI)0)] = 0; } goto LA8_; LA13_: ; LA8_: ; } goto LA1_; LA5_: ; { NI oldCap; oldCap = (NI)((*(*s_p0).p).cap & ((NI)IL64(-4611686018427387905))); { NI newCap; NI T20_; void* T21_; if (!(oldCap < newLen)) goto LA18_; T20_ = (NI)0; T20_ = resize__system_u2198(oldCap); newCap = ((newLen >= T20_) ? newLen : T20_); T21_ = (void*)0; T21_ = reallocSharedImpl__system_u1761(((void*) ((*s_p0).p)), ((NI)((NI)(newCap + ((NI)1)) + ((NI)8)))); (*s_p0).p = ((NimStrPayload*) (T21_)); (*(*s_p0).p).cap = newCap; { if (!(newLen < newCap)) goto LA24_; zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[(NI)(newLen + ((NI)1))]))), ((NI)(newCap - newLen))); } LA24_: ; } LA18_: ; } LA1_: ; } static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1) { prepareAdd(s_p0, ((NI)1)); (*(*s_p0).p).data[(*s_p0).len] = c_p1; (*s_p0).len += ((NI)1); (*(*s_p0).p).data[(*s_p0).len] = 0; } N_LIB_PRIVATE N_NIMCALL(void, add__system_u2870)(NimStringV2* x_p0, NCSTRING y_p1) { NI i; i = ((NI)0); { if (!!((((void*) (y_p1)) == NIM_NIL))) goto LA3_; { while (1) { if (!!(((NU8)(y_p1[i]) == (NU8)(0)))) goto LA6; nimAddCharV1((&(*x_p0)), y_p1[i]); i += ((NI)1); } LA6: ; } } LA3_: ; } N_LIB_PRIVATE N_NOCONV(void*, realloc0Impl__system_u1751)(void* p_p0, NI oldSize_p1, NI newSize_p2) { void* result; result = realloc__system_u5987((&allocator__system_u6025), p_p0, newSize_p2); { if (!(oldSize_p1 < newSize_p2)) goto LA3_; zeroMem__system_u1723(((void*) ((NU)((NU64)(((NU) (ptrdiff_t) (result))) + (NU64)(((NU) (oldSize_p1)))))), ((NI)(newSize_p2 - oldSize_p1))); } LA3_: ; return result; } N_LIB_PRIVATE N_NOCONV(void*, reallocShared0Impl__system_u1764)(void* p_p0, NI oldSize_p1, NI newSize_p2) { void* result; result = realloc0Impl__system_u1751(p_p0, oldSize_p1, newSize_p2); return result; } N_LIB_PRIVATE N_NIMCALL(void, setLengthStrV2)(NimStringV2* s_p0, NI newLen_p1) { { if (!(newLen_p1 == ((NI)0))) goto LA3_; } goto LA1_; LA3_: ; { { NIM_BOOL T8_; NimStrPayload* oldP; void* T12_; T8_ = (NIM_BOOL)0; T8_ = ((*s_p0).p == ((NimStrPayload*) NIM_NIL)); if (T8_) goto LA9_; T8_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904))); LA9_: ; if (!T8_) goto LA10_; oldP = (*s_p0).p; T12_ = (void*)0; T12_ = allocSharedImpl(((NI)((NI)(newLen_p1 + ((NI)1)) + ((NI)8)))); (*s_p0).p = ((NimStrPayload*) (T12_)); (*(*s_p0).p).cap = newLen_p1; { if (!(((NI)0) < (*s_p0).len)) goto LA15_; copyMem__system_u1726(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((void*) ((&(*oldP).data[((NI)0)]))), ((((*s_p0).len <= newLen_p1) ? (*s_p0).len : newLen_p1))); { if (!((*s_p0).len < newLen_p1)) goto LA19_; zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[(*s_p0).len]))), ((NI)((NI)(newLen_p1 - (*s_p0).len) + ((NI)1)))); } goto LA17_; LA19_: ; { (*(*s_p0).p).data[newLen_p1] = 0; } LA17_: ; } goto LA13_; LA15_: ; { zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((NI)(newLen_p1 + ((NI)1)))); } LA13_: ; } goto LA6_; LA10_: ; { NI oldCap; if (!((*s_p0).len < newLen_p1)) goto LA24_; oldCap = (NI)((*(*s_p0).p).cap & ((NI)IL64(-4611686018427387905))); { NI newCap; NI T30_; void* T31_; if (!(oldCap < newLen_p1)) goto LA28_; T30_ = (NI)0; T30_ = resize__system_u2198(oldCap); newCap = ((newLen_p1 >= T30_) ? newLen_p1 : T30_); T31_ = (void*)0; T31_ = reallocShared0Impl__system_u1764(((void*) ((*s_p0).p)), ((NI)((NI)(oldCap + ((NI)1)) + ((NI)8))), ((NI)((NI)(newCap + ((NI)1)) + ((NI)8)))); (*s_p0).p = ((NimStrPayload*) (T31_)); (*(*s_p0).p).cap = newCap; } LA28_: ; } goto LA6_; LA24_: ; LA6_: ; (*(*s_p0).p).data[newLen_p1] = 0; } LA1_: ; (*s_p0).len = newLen_p1; } static N_INLINE(void, addInt__stdZprivateZdigitsutils_u195)(NimStringV2* result_p0, NI x_p1) { addInt__stdZprivateZdigitsutils_u178(result_p0, ((NI64) (x_p1))); } N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___system_u3465)(tySequence__8XHFOeTbUzLnvMyFAUC3Tg stackTraceEntries_p0) { NimStringV2 result; tySequence__8XHFOeTbUzLnvMyFAUC3Tg s; s.len = 0; s.p = NIM_NIL; s = stackTraceEntries_p0; result = rawNewString(((NI)2000)); { NI i; NI colontmp_; NI T2_; NI res; i = (NI)0; colontmp_ = (NI)0; T2_ = s.len; colontmp_ = (NI)(T2_ - ((NI)1)); res = ((NI)0); { while (1) { if (!(res <= colontmp_)) goto LA4; i = ((NI) (res)); { if (!(s.p->data[i].line == ((NI)-10))) goto LA7_; prepareAdd((&result), 17); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_3); } goto LA5_; LA7_: ; { if (!(s.p->data[i].line == ((NI)-100))) goto LA10_; prepareAdd((&result), 3); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_5); } goto LA5_; LA10_: ; { NI oldLenX60gensym152_; oldLenX60gensym152_ = result.len; add__system_u2870((&result), s.p->data[i].filename); { if (!(((NI)0) < s.p->data[i].line)) goto LA15_; prepareAdd((&result), 1); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_7); addInt__stdZprivateZdigitsutils_u195((&result), s.p->data[i].line); { if (!NIM_FALSE) goto LA19_; prepareAdd((&result), 2); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_9); addInt__stdZprivateZdigitsutils_u195((&result), ((NI)0)); } LA19_: ; prepareAdd((&result), 1); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_11); } LA15_: ; { NI kX60gensym152_; NI colontmp__2; NI res_2; kX60gensym152_ = (NI)0; colontmp__2 = (NI)0; colontmp__2 = ((((NI)1) >= (NI)(((NI)25) - (NI)(result.len - oldLenX60gensym152_))) ? ((NI)1) : (NI)(((NI)25) - (NI)(result.len - oldLenX60gensym152_))); res_2 = ((NI)1); { while (1) { if (!(res_2 <= colontmp__2)) goto LA23; kX60gensym152_ = ((NI) (res_2)); nimAddCharV1((&result), 32); res_2 += ((NI)1); } LA23: ; } } add__system_u2870((&result), s.p->data[i].procname); prepareAdd((&result), 1); appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_13); } LA5_: ; res += ((NI)1); } LA4: ; } } return result; } static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0) { NCSTRING result; { if (!(s_p0.len == ((NI)0))) goto LA3_; result = ""; } goto LA1_; LA3_: ; { result = ((NCSTRING) ((*s_p0.p).data)); } LA1_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_u3494)(Exception* e_p0) { tyArray__gpc2RrLEcWgv7ONpLYNHOw buf; NI L; nimZeroMem((void*)buf, sizeof(tyArray__gpc2RrLEcWgv7ONpLYNHOw)); L = ((NI)0); { NI T3_; NimStringV2 trace; T3_ = (*e_p0).trace.len; if (!!((T3_ == ((NI)0)))) goto LA4_; trace = dollar___system_u3465((*e_p0).trace); { if (!((NI)(L + trace.len) < ((NI)2000))) goto LA8_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv(trace))), (trace.len)); L += trace.len; } LA8_: ; if (trace.p && !(trace.p->cap & NIM_STRLIT_FLAG)) { deallocShared(trace.p); } } LA4_: ; { if (!((NI)(L + ((NI)28)) < ((NI)2000))) goto LA12_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ("Error: unhandled exception: ")), ((NI)28)); L += ((NI)28); } LA12_: ; { if (!((NI)(L + (*e_p0).message.len) < ((NI)2000))) goto LA16_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv((*e_p0).message))), ((*e_p0).message.len)); L += (*e_p0).message.len; } LA16_: ; { if (!((NI)(L + ((NI)2)) < ((NI)2000))) goto LA20_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (" [")), ((NI)2)); L += ((NI)2); } LA20_: ; { if (!((NI)(L + nimCStrLen((*e_p0).name)) < ((NI)2000))) goto LA24_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ((*e_p0).name)), (nimCStrLen((*e_p0).name))); L += nimCStrLen((*e_p0).name); } LA24_: ; { if (!((NI)(L + ((NI)2)) < ((NI)2000))) goto LA28_; copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ("]\012")), ((NI)2)); L += ((NI)2); } LA28_: ; { NimStringV2 T34_; if (!!((onUnhandledException__system_u3493 == NIM_NIL))) goto LA32_; T34_.len = 0; T34_.p = NIM_NIL; T34_ = cstrToNimstr(((NCSTRING) (buf))); onUnhandledException__system_u3493(T34_); } goto LA30_; LA32_: ; { showErrorMessage__system_u3285(((NCSTRING) (buf)), L); } LA30_: ; } N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_u3573)(Exception* e_p0) { { if (!!((unhandledExceptionHook__system_u2869 == NIM_NIL))) goto LA3_; unhandledExceptionHook__system_u2869(e_p0); } LA3_: ; reportUnhandledErrorAux__system_u3494(e_p0); } N_LIB_PRIVATE N_NIMCALL(void, eqsink___stdZtypedthreads_u217)(Exception** dest_p0, Exception* src_p1) { { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = nimDecRefIsLast((*dest_p0)); if (!T3_) goto LA4_; nimDestroyAndDispose((*dest_p0)); } LA4_: ; (*dest_p0) = src_p1; } N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void) { { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = nimInErrorMode__system_u3579; if (!(T3_)) goto LA4_; T3_ = !((currException__system_u3313 == ((Exception*) NIM_NIL))); LA4_: ; if (!T3_) goto LA5_; reportUnhandledError__system_u3573(currException__system_u3313); eqsink___stdZtypedthreads_u217(&currException__system_u3313, ((Exception*) NIM_NIL)); exit(((int)1)); } LA5_: ; } N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotdotatsdotdotatsdotdotatsnimatslibatssystemdotnim_Init000)(void) { { registerSignalHandler__system_u3798(); nimTestErrorFlag(); } }