403 lines
12 KiB
C
403 lines
12 KiB
C
/* Generated by Nim Compiler v1.9.0 */
|
|
#define NIM_INTBITS 32
|
|
|
|
#include "nimbase.h"
|
|
#include <windows.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#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
|
|
#define nimfr_(x, y)
|
|
#define nimln_(x, y)
|
|
typedef struct tySequence__jPly7LEWA9bR7s5RNk1UriQ tySequence__jPly7LEWA9bR7s5RNk1UriQ;
|
|
typedef struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content;
|
|
typedef struct tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw;
|
|
typedef struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A;
|
|
typedef struct TNimTypeV2 TNimTypeV2;
|
|
struct tySequence__jPly7LEWA9bR7s5RNk1UriQ {
|
|
NI len; tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content* p;
|
|
};
|
|
typedef struct {
|
|
N_NIMCALL_PTR(void, ClP_0) (void* ClE_0);
|
|
void* ClE_0;
|
|
} tyProc__HzVCwACFYM9cx9aV62PdjtuA;
|
|
typedef NU8 tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA;
|
|
typedef N_NOCONV_PTR(void, tyProc__vhjNbzH0Mvv2fTvoe1717Q) (void);
|
|
struct tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw {
|
|
tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA kind;
|
|
union{
|
|
tyProc__HzVCwACFYM9cx9aV62PdjtuA fun1;
|
|
tyProc__vhjNbzH0Mvv2fTvoe1717Q fun2;
|
|
};
|
|
};
|
|
struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A {
|
|
NI rc;
|
|
NI rootIdx;
|
|
};
|
|
struct TNimTypeV2 {
|
|
void* destructor;
|
|
NI size;
|
|
NI16 align;
|
|
NI16 depth;
|
|
NU32* display;
|
|
void* traceImpl;
|
|
void* typeInfoV1;
|
|
NI flags;
|
|
};
|
|
typedef N_CLOSURE_PTR(void, TM__JXL39bfraktrl3ZkJ5EQGjw_2) (void);
|
|
|
|
|
|
#ifndef tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP
|
|
#define tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP
|
|
struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content { NI cap; tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw data[SEQ_DECL_SIZE];};
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP
|
|
#define tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP
|
|
struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content { NI cap; tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw data[SEQ_DECL_SIZE];};
|
|
#endif
|
|
|
|
static N_INLINE(void, initLock__coreZlocks_7)(CRITICAL_SECTION* lock);
|
|
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
|
|
static N_INLINE(void, acquire__coreZlocks_14)(CRITICAL_SECTION* lock);
|
|
N_LIB_PRIVATE N_NOCONV(void, callClosures__stdZexitprocs_202)(void);
|
|
static N_INLINE(void, nimZeroMem)(void* p, NI size);
|
|
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_100)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw src);
|
|
static N_INLINE(void, nimIncRefCyclic)(void* p, NIM_BOOL cyclic);
|
|
static N_INLINE(NI, minuspercent___system_790)(NI x, NI y);
|
|
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p);
|
|
N_LIB_PRIVATE N_NOINLINE(void, rememberCycle__system_3141)(NIM_BOOL isDestroyAction, tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* s, TNimTypeV2* desc);
|
|
N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p);
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_97)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest);
|
|
static N_INLINE(void, release__coreZlocks_16)(CRITICAL_SECTION* lock);
|
|
N_LIB_PRIVATE N_NIMCALL(void, add__stdZexitprocs_224)(tySequence__jPly7LEWA9bR7s5RNk1UriQ* x, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw value);
|
|
static N_INLINE(void, nimMarkCyclic)(void* p);
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_244)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest);
|
|
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p, NI align);
|
|
N_LIB_PRIVATE tySequence__jPly7LEWA9bR7s5RNk1UriQ gFuns__stdZexitprocs_15;
|
|
N_LIB_PRIVATE CRITICAL_SECTION gFunsLock__stdZexitprocs_14;
|
|
extern NIM_BOOL nimInErrorMode__system_3980;
|
|
static N_INLINE(void, initLock__coreZlocks_7)(CRITICAL_SECTION* lock) {
|
|
InitializeCriticalSection(lock);
|
|
}
|
|
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
|
|
NIM_BOOL* result;
|
|
result = (NIM_BOOL*)0;
|
|
result = (&nimInErrorMode__system_3980);
|
|
return result;
|
|
}
|
|
static N_INLINE(void, acquire__coreZlocks_14)(CRITICAL_SECTION* lock) {
|
|
EnterCriticalSection(lock);
|
|
}
|
|
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
|
|
void* T1_;
|
|
T1_ = (void*)0;
|
|
T1_ = memset(a, v, ((size_t) (size)));
|
|
}
|
|
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
|
|
NIM_BOOL* nimErr_;
|
|
{nimErr_ = nimErrorFlag();
|
|
nimSetMem__systemZmemory_7(p, ((int)0), size);
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
}BeforeRet_: ;
|
|
}
|
|
static N_INLINE(NI, minuspercent___system_790)(NI x, NI y) {
|
|
NI result;
|
|
result = (NI)0;
|
|
result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
|
|
return result;
|
|
}
|
|
static N_INLINE(void, nimIncRefCyclic)(void* p, NIM_BOOL cyclic) {
|
|
tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* h;
|
|
NI T1_;
|
|
T1_ = (NI)0;
|
|
T1_ = minuspercent___system_790(((NI) (ptrdiff_t) (p)), ((NI)8));
|
|
h = ((tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A*) (T1_));
|
|
(*h).rc += ((NI)16);
|
|
}
|
|
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p) {
|
|
NIM_BOOL result;
|
|
NIM_BOOL* nimErr_;
|
|
{nimErr_ = nimErrorFlag();
|
|
result = (NIM_BOOL)0;
|
|
{
|
|
tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* cell;
|
|
NI T5_;
|
|
if (!!((p == NIM_NIL))) goto LA3_;
|
|
T5_ = (NI)0;
|
|
T5_ = minuspercent___system_790(((NI) (ptrdiff_t) (p)), ((NI)8));
|
|
cell = ((tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A*) (T5_));
|
|
{
|
|
if (!((NI)((*cell).rc & ((NI)-16)) == ((NI)0))) goto LA8_;
|
|
result = NIM_TRUE;
|
|
}
|
|
goto LA6_;
|
|
LA8_: ;
|
|
{
|
|
(*cell).rc -= ((NI)16);
|
|
}
|
|
LA6_: ;
|
|
rememberCycle__system_3141(result, cell, (*((TNimTypeV2**) (p))));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
}
|
|
LA3_: ;
|
|
}BeforeRet_: ;
|
|
return result;
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_100)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw src) {
|
|
tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw colontmp_;
|
|
nimZeroMem((void*)(&colontmp_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
colontmp_ = (*dest);
|
|
nimZeroMem((void*)(&(*dest)), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
(*dest).kind = src.kind;
|
|
switch ((*dest).kind) {
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0):
|
|
{
|
|
void* colontmp__2;
|
|
colontmp__2 = (*dest).fun1.ClE_0;
|
|
{
|
|
if (!src.fun1.ClE_0) goto LA4_;
|
|
nimIncRefCyclic(src.fun1.ClE_0, NIM_TRUE);
|
|
}
|
|
LA4_: ;
|
|
(*dest).fun1.ClE_0 = src.fun1.ClE_0;
|
|
(*dest).fun1.ClP_0 = src.fun1.ClP_0;
|
|
{
|
|
NIM_BOOL T8_;
|
|
T8_ = (NIM_BOOL)0;
|
|
T8_ = nimDecRefIsLastCyclicDyn(colontmp__2);
|
|
if (!T8_) goto LA9_;
|
|
nimDestroyAndDispose(colontmp__2);
|
|
}
|
|
LA9_: ;
|
|
}
|
|
break;
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1):
|
|
{
|
|
(*dest).fun2 = src.fun2;
|
|
}
|
|
break;
|
|
}
|
|
switch (colontmp_.kind) {
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0):
|
|
{
|
|
{
|
|
NIM_BOOL T15_;
|
|
T15_ = (NIM_BOOL)0;
|
|
T15_ = nimDecRefIsLastCyclicDyn(colontmp_.fun1.ClE_0);
|
|
if (!T15_) goto LA16_;
|
|
nimDestroyAndDispose(colontmp_.fun1.ClE_0);
|
|
}
|
|
LA16_: ;
|
|
}
|
|
break;
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1):
|
|
{
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_97)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest) {
|
|
switch ((*dest).kind) {
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0):
|
|
{
|
|
{
|
|
NIM_BOOL T4_;
|
|
T4_ = (NIM_BOOL)0;
|
|
T4_ = nimDecRefIsLastCyclicDyn((*dest).fun1.ClE_0);
|
|
if (!T4_) goto LA5_;
|
|
nimDestroyAndDispose((*dest).fun1.ClE_0);
|
|
}
|
|
LA5_: ;
|
|
}
|
|
break;
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1):
|
|
{
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
static N_INLINE(void, release__coreZlocks_16)(CRITICAL_SECTION* lock) {
|
|
LeaveCriticalSection(lock);
|
|
}
|
|
N_LIB_PRIVATE N_NOCONV(void, callClosures__stdZexitprocs_202)(void) {
|
|
NIM_BOOL oldNimErrFin1_;
|
|
NIM_BOOL* nimErr_;
|
|
{nimErr_ = nimErrorFlag();
|
|
acquire__coreZlocks_14((&gFunsLock__stdZexitprocs_14));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
{
|
|
NI i;
|
|
NI colontmp_;
|
|
NI T3_;
|
|
NI res;
|
|
i = (NI)0;
|
|
colontmp_ = (NI)0;
|
|
T3_ = gFuns__stdZexitprocs_15.len;
|
|
colontmp_ = (NI)(T3_ - ((NI)1));
|
|
res = colontmp_;
|
|
{
|
|
while (1) {
|
|
tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw fun;
|
|
if (!(((NI)0) <= res)) goto LA5 ;
|
|
nimZeroMem((void*)(&fun), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
i = res;
|
|
eqcopy___stdZexitprocs_100((&fun), gFuns__stdZexitprocs_15.p->data[i]);
|
|
switch (fun.kind) {
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0):
|
|
{
|
|
fun.fun1.ClE_0? fun.fun1.ClP_0(fun.fun1.ClE_0):((TM__JXL39bfraktrl3ZkJ5EQGjw_2)(fun.fun1.ClP_0))();
|
|
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
|
|
}
|
|
break;
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1):
|
|
{
|
|
fun.fun2();
|
|
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
|
|
}
|
|
break;
|
|
}
|
|
res -= ((NI)1);
|
|
eqdestroy___stdZexitprocs_97((&fun));
|
|
} LA5: ;
|
|
}
|
|
}
|
|
{
|
|
LA1_:;
|
|
}
|
|
{
|
|
oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
|
|
release__coreZlocks_16((&gFunsLock__stdZexitprocs_14));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
*nimErr_ = oldNimErrFin1_;
|
|
}
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
}BeforeRet_: ;
|
|
}
|
|
static N_INLINE(void, nimMarkCyclic)(void* p) {
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_244)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest) {
|
|
{
|
|
NIM_BOOL T3_;
|
|
T3_ = (NIM_BOOL)0;
|
|
T3_ = nimDecRefIsLastCyclicDyn((*dest).ClE_0);
|
|
if (!T3_) goto LA4_;
|
|
nimDestroyAndDispose((*dest).ClE_0);
|
|
}
|
|
LA4_: ;
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, addExitProc__stdZexitprocs_218)(tyProc__HzVCwACFYM9cx9aV62PdjtuA cl) {
|
|
tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw T7_;
|
|
tyProc__HzVCwACFYM9cx9aV62PdjtuA blitTmp;
|
|
NIM_BOOL oldNimErrFin1_;
|
|
NIM_BOOL* nimErr_;
|
|
{nimErr_ = nimErrorFlag();
|
|
acquire__coreZlocks_14((&gFunsLock__stdZexitprocs_14));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
{
|
|
NI T4_;
|
|
T4_ = gFuns__stdZexitprocs_15.len;
|
|
if (!(T4_ == ((NI)0))) goto LA5_;
|
|
atexit(callClosures__stdZexitprocs_202);
|
|
}
|
|
LA5_: ;
|
|
nimZeroMem((void*)(&T7_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
nimZeroMem((void*)(&T7_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
T7_.kind = ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0);
|
|
nimZeroMem((void*)(&blitTmp), sizeof(tyProc__HzVCwACFYM9cx9aV62PdjtuA));
|
|
blitTmp.ClE_0 = cl.ClE_0;
|
|
blitTmp.ClP_0 = cl.ClP_0;
|
|
nimMarkCyclic(cl.ClE_0);
|
|
nimZeroMem((void*)(&cl), sizeof(tyProc__HzVCwACFYM9cx9aV62PdjtuA));
|
|
T7_.fun1.ClE_0 = blitTmp.ClE_0;
|
|
T7_.fun1.ClP_0 = blitTmp.ClP_0;
|
|
add__stdZexitprocs_224((&gFuns__stdZexitprocs_15), T7_);
|
|
{
|
|
LA1_:;
|
|
}
|
|
{
|
|
oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
|
|
release__coreZlocks_16((&gFunsLock__stdZexitprocs_14));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
*nimErr_ = oldNimErrFin1_;
|
|
}
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
eqdestroy___stdZexitprocs_244((&cl));
|
|
}BeforeRet_: ;
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_247)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest, tyProc__HzVCwACFYM9cx9aV62PdjtuA src, NIM_BOOL cyclic) {
|
|
void* colontmp_;
|
|
colontmp_ = (*dest).ClE_0;
|
|
{
|
|
if (!src.ClE_0) goto LA3_;
|
|
nimIncRefCyclic(src.ClE_0, cyclic);
|
|
}
|
|
LA3_: ;
|
|
(*dest).ClE_0 = src.ClE_0;
|
|
(*dest).ClP_0 = src.ClP_0;
|
|
{
|
|
NIM_BOOL T7_;
|
|
T7_ = (NIM_BOOL)0;
|
|
T7_ = nimDecRefIsLastCyclicDyn(colontmp_);
|
|
if (!T7_) goto LA8_;
|
|
nimDestroyAndDispose(colontmp_);
|
|
}
|
|
LA8_: ;
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_31)(tySequence__jPly7LEWA9bR7s5RNk1UriQ* dest) {
|
|
NI colontmp_;
|
|
colontmp_ = ((NI)0);
|
|
{
|
|
while (1) {
|
|
NI T3_;
|
|
T3_ = (*dest).len;
|
|
if (!(colontmp_ < T3_)) goto LA2 ;
|
|
switch ((*dest).p->data[colontmp_].kind) {
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0):
|
|
{
|
|
{
|
|
NIM_BOOL T7_;
|
|
T7_ = (NIM_BOOL)0;
|
|
T7_ = nimDecRefIsLastCyclicDyn((*dest).p->data[colontmp_].fun1.ClE_0);
|
|
if (!T7_) goto LA8_;
|
|
nimDestroyAndDispose((*dest).p->data[colontmp_].fun1.ClE_0);
|
|
}
|
|
LA8_: ;
|
|
}
|
|
break;
|
|
case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1):
|
|
{
|
|
}
|
|
break;
|
|
}
|
|
colontmp_ += ((NI)1);
|
|
} LA2: ;
|
|
}
|
|
if ((*dest).p && !((*dest).p->cap & NIM_STRLIT_FLAG)) {
|
|
alignedDealloc((*dest).p, NIM_ALIGNOF(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw));
|
|
}
|
|
}
|
|
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatslibatsstdatsexitprocsdotnim_Init000)(void) {
|
|
{
|
|
NIM_BOOL* nimErr_;
|
|
nimErr_ = nimErrorFlag();
|
|
initLock__coreZlocks_7((&gFunsLock__stdZexitprocs_14));
|
|
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
|
|
BeforeRet_: ;
|
|
}
|
|
}
|
|
|