csources_v2/c_code/1_2/@m..@slib@sstd@sexitprocs.nim.c
2022-12-16 10:54:01 +08:00

403 lines
12 KiB
C

/* Generated by Nim Compiler v1.9.0 */
#define NIM_INTBITS 64
#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)((NU64)(((NU) (x))) - (NU64)(((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)16));
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)16));
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_: ;
}
}