small fixes for windows

This commit is contained in:
Andreas Rumpf 2008-12-12 14:35:17 +01:00
commit 1c8ddca7e0
4 changed files with 276 additions and 272 deletions

View file

@ -750,7 +750,7 @@ proc collectCycles(gch: var TGcHeap) =
CellSetDeinit(gch.cycleRoots) CellSetDeinit(gch.cycleRoots)
gch.cycleRoots = newRoots gch.cycleRoots = newRoots
proc gcMark(p: pointer) {.fastcall.} = proc gcMark(p: pointer) = # {.fastcall.} =
# the addresses are not as objects on the stack, so turn them to objects: # the addresses are not as objects on the stack, so turn them to objects:
var cell = usrToCell(p) var cell = usrToCell(p)
var c = cast[TAddress](cell) var c = cast[TAddress](cell)

View file

@ -30,59 +30,59 @@
# if key[-4:] == "Flag": continue # if key[-4:] == "Flag": continue
# cog.out(toEnum(key, val)) # cog.out(toEnum(key, val))
#]]] #]]]
type type
TNimrodNodeKind* = enum TNimrodTypeKind* = enum
nnkNone, nnkEmpty, nnkIdent, nnkSym, ntyNone, ntyBool, ntyChar, ntyEmpty,
nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit, ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst,
nnkInt16Lit, nnkInt32Lit, nnkInt64Lit, nnkFloatLit, ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray,
nnkFloat32Lit, nnkFloat64Lit, nnkStrLit, nnkRStrLit, ntyObject, ntyTuple, ntySet, ntyRange,
nnkTripleStrLit, nnkMetaNode, nnkNilLit, nnkDotCall, ntyPtr, ntyRef, ntyVar, ntySequence,
nnkCommand, nnkCall, nnkGenericCall, nnkExplicitTypeListCall, ntyProc, ntyPointer, ntyOpenArray, ntyString,
nnkExprEqExpr, nnkExprColonExpr, nnkIdentDefs, nnkInfix, ntyCString, ntyForward, ntyInt, ntyInt8,
nnkPrefix, nnkPostfix, nnkPar, nnkCurly, ntyInt16, ntyInt32, ntyInt64, ntyFloat,
nnkBracket, nnkBracketExpr, nnkPragmaExpr, nnkRange, ntyFloat32, ntyFloat64, ntyFloat128
nnkDotExpr, nnkCheckedFieldExpr, nnkDerefExpr, nnkIfExpr, TNimTypeKinds* = set[TNimrodTypeKind]
nnkElifExpr, nnkElseExpr, nnkLambda, nnkAccQuoted, TNimrodSymKind* = enum
nnkHeaderQuoted, nnkTableConstr, nnkQualified, nnkHiddenStdConv, nskUnknownSym, nskConditional, nskDynLib, nskParam,
nnkHiddenSubConv, nnkHiddenCallConv, nnkConv, nnkCast, nskTypeParam, nskTemp, nskType, nskConst,
nnkAddr, nnkHiddenAddr, nnkHiddenDeref, nnkObjDownConv, nskVar, nskProc, nskIterator, nskConverter,
nnkObjUpConv, nnkChckRangeF, nnkChckRange64, nnkChckRange, nskMacro, nskTemplate, nskField, nskEnumField,
nnkStringToCString, nnkCStringToString, nnkPassAsOpenArray, nnkAsgn, nskForVar, nskModule, nskLabel, nskStub
nnkDefaultTypeParam, nnkGenericParams, nnkFormalParams, nnkOfInherit, TNimSymKinds* = set[TNimrodSymKind]
nnkModule, nnkProcDef, nnkConverterDef, nnkMacroDef, TNimrodNodeKind* = enum
nnkTemplateDef, nnkIteratorDef, nnkOfBranch, nnkElifBranch, nnkNone, nnkEmpty, nnkIdent, nnkSym,
nnkExceptBranch, nnkElse, nnkMacroStmt, nnkAsmStmt, nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit,
nnkPragma, nnkIfStmt, nnkWhenStmt, nnkForStmt, nnkInt16Lit, nnkInt32Lit, nnkInt64Lit, nnkFloatLit,
nnkWhileStmt, nnkCaseStmt, nnkVarSection, nnkConstSection, nnkFloat32Lit, nnkFloat64Lit, nnkStrLit, nnkRStrLit,
nnkConstDef, nnkTypeSection, nnkTypeDef, nnkYieldStmt, nnkTripleStrLit, nnkMetaNode, nnkNilLit, nnkDotCall,
nnkTryStmt, nnkFinally, nnkRaiseStmt, nnkReturnStmt, nnkCommand, nnkCall, nnkGenericCall, nnkExplicitTypeListCall,
nnkBreakStmt, nnkContinueStmt, nnkBlockStmt, nnkDiscardStmt, nnkExprEqExpr, nnkExprColonExpr, nnkIdentDefs, nnkInfix,
nnkStmtList, nnkImportStmt, nnkFromStmt, nnkImportAs, nnkPrefix, nnkPostfix, nnkPar, nnkCurly,
nnkIncludeStmt, nnkAccessStmt, nnkCommentStmt, nnkStmtListExpr, nnkBracket, nnkBracketExpr, nnkPragmaExpr, nnkRange,
nnkBlockExpr, nnkStmtListType, nnkBlockType, nnkVm, nnkDotExpr, nnkCheckedFieldExpr, nnkDerefExpr, nnkIfExpr,
nnkTypeOfExpr, nnkObjectTy, nnkTupleTy, nnkRecList, nnkElifExpr, nnkElseExpr, nnkLambda, nnkAccQuoted,
nnkRecCase, nnkRecWhen, nnkRefTy, nnkPtrTy, nnkHeaderQuoted, nnkTableConstr, nnkQualified, nnkHiddenStdConv,
nnkVarTy, nnkProcTy, nnkEnumTy, nnkEnumFieldDef, nnkHiddenSubConv, nnkHiddenCallConv, nnkConv, nnkCast,
nnkReturnToken nnkAddr, nnkHiddenAddr, nnkHiddenDeref, nnkObjDownConv,
TNimNodeKinds* = set[TNimrodNodeKind] nnkObjUpConv, nnkChckRangeF, nnkChckRange64, nnkChckRange,
TNimrodTypeKind* = enum nnkStringToCString, nnkCStringToString, nnkPassAsOpenArray, nnkAsgn,
ntyNone, ntyBool, ntyChar, ntyEmpty, nnkDefaultTypeParam, nnkGenericParams, nnkFormalParams, nnkOfInherit,
ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst, nnkModule, nnkProcDef, nnkConverterDef, nnkMacroDef,
ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray, nnkTemplateDef, nnkIteratorDef, nnkOfBranch, nnkElifBranch,
ntyObject, ntyTuple, ntySet, ntyRange, nnkExceptBranch, nnkElse, nnkMacroStmt, nnkAsmStmt,
ntyPtr, ntyRef, ntyVar, ntySequence, nnkPragma, nnkIfStmt, nnkWhenStmt, nnkForStmt,
ntyProc, ntyPointer, ntyOpenArray, ntyString, nnkWhileStmt, nnkCaseStmt, nnkVarSection, nnkConstSection,
ntyCString, ntyForward, ntyInt, ntyInt8, nnkConstDef, nnkTypeSection, nnkTypeDef, nnkYieldStmt,
ntyInt16, ntyInt32, ntyInt64, ntyFloat, nnkTryStmt, nnkFinally, nnkRaiseStmt, nnkReturnStmt,
ntyFloat32, ntyFloat64, ntyFloat128 nnkBreakStmt, nnkContinueStmt, nnkBlockStmt, nnkDiscardStmt,
TNimTypeKinds* = set[TNimrodTypeKind] nnkStmtList, nnkImportStmt, nnkFromStmt, nnkImportAs,
TNimrodSymKind* = enum nnkIncludeStmt, nnkAccessStmt, nnkCommentStmt, nnkStmtListExpr,
nskUnknownSym, nskConditional, nskDynLib, nskParam, nnkBlockExpr, nnkStmtListType, nnkBlockType, nnkVm,
nskTypeParam, nskTemp, nskType, nskConst, nnkTypeOfExpr, nnkObjectTy, nnkTupleTy, nnkRecList,
nskVar, nskProc, nskIterator, nskConverter, nnkRecCase, nnkRecWhen, nnkRefTy, nnkPtrTy,
nskMacro, nskTemplate, nskField, nskEnumField, nnkVarTy, nnkProcTy, nnkEnumTy, nnkEnumFieldDef,
nskForVar, nskModule, nskLabel, nskStub nnkReturnToken
TNimSymKinds* = set[TNimrodSymKind] TNimNodeKinds* = set[TNimrodNodeKind]
#[[[end]]] #[[[end]]]
type type

View file

@ -65,148 +65,148 @@ for key, val in enums.items():
cog.out(a) cog.out(a)
cog.out(b) cog.out(b)
]]]*) ]]]*)
type type
TNodeKind = ( TTypeFlag = (
nkNone, nkEmpty, nkIdent, nkSym, tfVarargs, tfFinal, tfAcyclic, tfEnumHasWholes);
nkType, nkCharLit, nkIntLit, nkInt8Lit, TTypeFlags = set of TTypeFlag;
nkInt16Lit, nkInt32Lit, nkInt64Lit, nkFloatLit, const
nkFloat32Lit, nkFloat64Lit, nkStrLit, nkRStrLit, TypeFlagToStr: array [TTypeFlag] of string = (
nkTripleStrLit, nkMetaNode, nkNilLit, nkDotCall, 'tfVarargs', 'tfFinal', 'tfAcyclic', 'tfEnumHasWholes');
nkCommand, nkCall, nkGenericCall, nkExplicitTypeListCall, type
nkExprEqExpr, nkExprColonExpr, nkIdentDefs, nkInfix, TTypeKind = (
nkPrefix, nkPostfix, nkPar, nkCurly, tyNone, tyBool, tyChar, tyEmpty,
nkBracket, nkBracketExpr, nkPragmaExpr, nkRange, tyArrayConstr, tyNil, tyGeneric, tyGenericInst,
nkDotExpr, nkCheckedFieldExpr, nkDerefExpr, nkIfExpr, tyGenericParam, tyEnum, tyAnyEnum, tyArray,
nkElifExpr, nkElseExpr, nkLambda, nkAccQuoted, tyObject, tyTuple, tySet, tyRange,
nkHeaderQuoted, nkTableConstr, nkQualified, nkHiddenStdConv, tyPtr, tyRef, tyVar, tySequence,
nkHiddenSubConv, nkHiddenCallConv, nkConv, nkCast, tyProc, tyPointer, tyOpenArray, tyString,
nkAddr, nkHiddenAddr, nkHiddenDeref, nkObjDownConv, tyCString, tyForward, tyInt, tyInt8,
nkObjUpConv, nkChckRangeF, nkChckRange64, nkChckRange, tyInt16, tyInt32, tyInt64, tyFloat,
nkStringToCString, nkCStringToString, nkPassAsOpenArray, nkAsgn, tyFloat32, tyFloat64, tyFloat128);
nkDefaultTypeParam, nkGenericParams, nkFormalParams, nkOfInherit, TTypeKinds = set of TTypeKind;
nkModule, nkProcDef, nkConverterDef, nkMacroDef, const
nkTemplateDef, nkIteratorDef, nkOfBranch, nkElifBranch, TypeKindToStr: array [TTypeKind] of string = (
nkExceptBranch, nkElse, nkMacroStmt, nkAsmStmt, 'tyNone', 'tyBool', 'tyChar', 'tyEmpty',
nkPragma, nkIfStmt, nkWhenStmt, nkForStmt, 'tyArrayConstr', 'tyNil', 'tyGeneric', 'tyGenericInst',
nkWhileStmt, nkCaseStmt, nkVarSection, nkConstSection, 'tyGenericParam', 'tyEnum', 'tyAnyEnum', 'tyArray',
nkConstDef, nkTypeSection, nkTypeDef, nkYieldStmt, 'tyObject', 'tyTuple', 'tySet', 'tyRange',
nkTryStmt, nkFinally, nkRaiseStmt, nkReturnStmt, 'tyPtr', 'tyRef', 'tyVar', 'tySequence',
nkBreakStmt, nkContinueStmt, nkBlockStmt, nkDiscardStmt, 'tyProc', 'tyPointer', 'tyOpenArray', 'tyString',
nkStmtList, nkImportStmt, nkFromStmt, nkImportAs, 'tyCString', 'tyForward', 'tyInt', 'tyInt8',
nkIncludeStmt, nkAccessStmt, nkCommentStmt, nkStmtListExpr, 'tyInt16', 'tyInt32', 'tyInt64', 'tyFloat',
nkBlockExpr, nkStmtListType, nkBlockType, nkVm, 'tyFloat32', 'tyFloat64', 'tyFloat128');
nkTypeOfExpr, nkObjectTy, nkTupleTy, nkRecList, type
nkRecCase, nkRecWhen, nkRefTy, nkPtrTy, TSymFlag = (
nkVarTy, nkProcTy, nkEnumTy, nkEnumFieldDef, sfUsed, sfStar, sfMinus, sfInInterface,
nkReturnToken); sfFromGeneric, sfGlobal, sfForward, sfImportc,
TNodeKinds = set of TNodeKind; sfExportc, sfVolatile, sfRegister, sfPure,
const sfResult, sfNoSideEffect, sfMainModule, sfSystemModule,
NodeKindToStr: array [TNodeKind] of string = ( sfNoReturn, sfAddrTaken, sfCompilerProc, sfCppMethod,
'nkNone', 'nkEmpty', 'nkIdent', 'nkSym', sfDiscriminant, sfDeprecated, sfInClosure, sfTypeCheck,
'nkType', 'nkCharLit', 'nkIntLit', 'nkInt8Lit', sfCompileTime, sfThreadVar, sfMerge);
'nkInt16Lit', 'nkInt32Lit', 'nkInt64Lit', 'nkFloatLit', TSymFlags = set of TSymFlag;
'nkFloat32Lit', 'nkFloat64Lit', 'nkStrLit', 'nkRStrLit', const
'nkTripleStrLit', 'nkMetaNode', 'nkNilLit', 'nkDotCall', SymFlagToStr: array [TSymFlag] of string = (
'nkCommand', 'nkCall', 'nkGenericCall', 'nkExplicitTypeListCall', 'sfUsed', 'sfStar', 'sfMinus', 'sfInInterface',
'nkExprEqExpr', 'nkExprColonExpr', 'nkIdentDefs', 'nkInfix', 'sfFromGeneric', 'sfGlobal', 'sfForward', 'sfImportc',
'nkPrefix', 'nkPostfix', 'nkPar', 'nkCurly', 'sfExportc', 'sfVolatile', 'sfRegister', 'sfPure',
'nkBracket', 'nkBracketExpr', 'nkPragmaExpr', 'nkRange', 'sfResult', 'sfNoSideEffect', 'sfMainModule', 'sfSystemModule',
'nkDotExpr', 'nkCheckedFieldExpr', 'nkDerefExpr', 'nkIfExpr', 'sfNoReturn', 'sfAddrTaken', 'sfCompilerProc', 'sfCppMethod',
'nkElifExpr', 'nkElseExpr', 'nkLambda', 'nkAccQuoted', 'sfDiscriminant', 'sfDeprecated', 'sfInClosure', 'sfTypeCheck',
'nkHeaderQuoted', 'nkTableConstr', 'nkQualified', 'nkHiddenStdConv', 'sfCompileTime', 'sfThreadVar', 'sfMerge');
'nkHiddenSubConv', 'nkHiddenCallConv', 'nkConv', 'nkCast', type
'nkAddr', 'nkHiddenAddr', 'nkHiddenDeref', 'nkObjDownConv', TNodeFlag = (
'nkObjUpConv', 'nkChckRangeF', 'nkChckRange64', 'nkChckRange', nfNone, nfBase2, nfBase8, nfBase16,
'nkStringToCString', 'nkCStringToString', 'nkPassAsOpenArray', 'nkAsgn', nfAllConst, nfTransf, nfSem);
'nkDefaultTypeParam', 'nkGenericParams', 'nkFormalParams', 'nkOfInherit', TNodeFlags = set of TNodeFlag;
'nkModule', 'nkProcDef', 'nkConverterDef', 'nkMacroDef', const
'nkTemplateDef', 'nkIteratorDef', 'nkOfBranch', 'nkElifBranch', NodeFlagToStr: array [TNodeFlag] of string = (
'nkExceptBranch', 'nkElse', 'nkMacroStmt', 'nkAsmStmt', 'nfNone', 'nfBase2', 'nfBase8', 'nfBase16',
'nkPragma', 'nkIfStmt', 'nkWhenStmt', 'nkForStmt', 'nfAllConst', 'nfTransf', 'nfSem');
'nkWhileStmt', 'nkCaseStmt', 'nkVarSection', 'nkConstSection', type
'nkConstDef', 'nkTypeSection', 'nkTypeDef', 'nkYieldStmt', TSymKind = (
'nkTryStmt', 'nkFinally', 'nkRaiseStmt', 'nkReturnStmt', skUnknownSym, skConditional, skDynLib, skParam,
'nkBreakStmt', 'nkContinueStmt', 'nkBlockStmt', 'nkDiscardStmt', skTypeParam, skTemp, skType, skConst,
'nkStmtList', 'nkImportStmt', 'nkFromStmt', 'nkImportAs', skVar, skProc, skIterator, skConverter,
'nkIncludeStmt', 'nkAccessStmt', 'nkCommentStmt', 'nkStmtListExpr', skMacro, skTemplate, skField, skEnumField,
'nkBlockExpr', 'nkStmtListType', 'nkBlockType', 'nkVm', skForVar, skModule, skLabel, skStub);
'nkTypeOfExpr', 'nkObjectTy', 'nkTupleTy', 'nkRecList', TSymKinds = set of TSymKind;
'nkRecCase', 'nkRecWhen', 'nkRefTy', 'nkPtrTy', const
'nkVarTy', 'nkProcTy', 'nkEnumTy', 'nkEnumFieldDef', SymKindToStr: array [TSymKind] of string = (
'nkReturnToken'); 'skUnknownSym', 'skConditional', 'skDynLib', 'skParam',
type 'skTypeParam', 'skTemp', 'skType', 'skConst',
TSymFlag = ( 'skVar', 'skProc', 'skIterator', 'skConverter',
sfUsed, sfStar, sfMinus, sfInInterface, 'skMacro', 'skTemplate', 'skField', 'skEnumField',
sfFromGeneric, sfGlobal, sfForward, sfImportc, 'skForVar', 'skModule', 'skLabel', 'skStub');
sfExportc, sfVolatile, sfRegister, sfPure, type
sfResult, sfNoSideEffect, sfMainModule, sfSystemModule, TNodeKind = (
sfNoReturn, sfAddrTaken, sfCompilerProc, sfCppMethod, nkNone, nkEmpty, nkIdent, nkSym,
sfDiscriminant, sfDeprecated, sfInClosure, sfTypeCheck, nkType, nkCharLit, nkIntLit, nkInt8Lit,
sfCompileTime, sfThreadVar, sfMerge); nkInt16Lit, nkInt32Lit, nkInt64Lit, nkFloatLit,
TSymFlags = set of TSymFlag; nkFloat32Lit, nkFloat64Lit, nkStrLit, nkRStrLit,
const nkTripleStrLit, nkMetaNode, nkNilLit, nkDotCall,
SymFlagToStr: array [TSymFlag] of string = ( nkCommand, nkCall, nkGenericCall, nkExplicitTypeListCall,
'sfUsed', 'sfStar', 'sfMinus', 'sfInInterface', nkExprEqExpr, nkExprColonExpr, nkIdentDefs, nkInfix,
'sfFromGeneric', 'sfGlobal', 'sfForward', 'sfImportc', nkPrefix, nkPostfix, nkPar, nkCurly,
'sfExportc', 'sfVolatile', 'sfRegister', 'sfPure', nkBracket, nkBracketExpr, nkPragmaExpr, nkRange,
'sfResult', 'sfNoSideEffect', 'sfMainModule', 'sfSystemModule', nkDotExpr, nkCheckedFieldExpr, nkDerefExpr, nkIfExpr,
'sfNoReturn', 'sfAddrTaken', 'sfCompilerProc', 'sfCppMethod', nkElifExpr, nkElseExpr, nkLambda, nkAccQuoted,
'sfDiscriminant', 'sfDeprecated', 'sfInClosure', 'sfTypeCheck', nkHeaderQuoted, nkTableConstr, nkQualified, nkHiddenStdConv,
'sfCompileTime', 'sfThreadVar', 'sfMerge'); nkHiddenSubConv, nkHiddenCallConv, nkConv, nkCast,
type nkAddr, nkHiddenAddr, nkHiddenDeref, nkObjDownConv,
TTypeKind = ( nkObjUpConv, nkChckRangeF, nkChckRange64, nkChckRange,
tyNone, tyBool, tyChar, tyEmpty, nkStringToCString, nkCStringToString, nkPassAsOpenArray, nkAsgn,
tyArrayConstr, tyNil, tyGeneric, tyGenericInst, nkDefaultTypeParam, nkGenericParams, nkFormalParams, nkOfInherit,
tyGenericParam, tyEnum, tyAnyEnum, tyArray, nkModule, nkProcDef, nkConverterDef, nkMacroDef,
tyObject, tyTuple, tySet, tyRange, nkTemplateDef, nkIteratorDef, nkOfBranch, nkElifBranch,
tyPtr, tyRef, tyVar, tySequence, nkExceptBranch, nkElse, nkMacroStmt, nkAsmStmt,
tyProc, tyPointer, tyOpenArray, tyString, nkPragma, nkIfStmt, nkWhenStmt, nkForStmt,
tyCString, tyForward, tyInt, tyInt8, nkWhileStmt, nkCaseStmt, nkVarSection, nkConstSection,
tyInt16, tyInt32, tyInt64, tyFloat, nkConstDef, nkTypeSection, nkTypeDef, nkYieldStmt,
tyFloat32, tyFloat64, tyFloat128); nkTryStmt, nkFinally, nkRaiseStmt, nkReturnStmt,
TTypeKinds = set of TTypeKind; nkBreakStmt, nkContinueStmt, nkBlockStmt, nkDiscardStmt,
const nkStmtList, nkImportStmt, nkFromStmt, nkImportAs,
TypeKindToStr: array [TTypeKind] of string = ( nkIncludeStmt, nkAccessStmt, nkCommentStmt, nkStmtListExpr,
'tyNone', 'tyBool', 'tyChar', 'tyEmpty', nkBlockExpr, nkStmtListType, nkBlockType, nkVm,
'tyArrayConstr', 'tyNil', 'tyGeneric', 'tyGenericInst', nkTypeOfExpr, nkObjectTy, nkTupleTy, nkRecList,
'tyGenericParam', 'tyEnum', 'tyAnyEnum', 'tyArray', nkRecCase, nkRecWhen, nkRefTy, nkPtrTy,
'tyObject', 'tyTuple', 'tySet', 'tyRange', nkVarTy, nkProcTy, nkEnumTy, nkEnumFieldDef,
'tyPtr', 'tyRef', 'tyVar', 'tySequence', nkReturnToken);
'tyProc', 'tyPointer', 'tyOpenArray', 'tyString', TNodeKinds = set of TNodeKind;
'tyCString', 'tyForward', 'tyInt', 'tyInt8', const
'tyInt16', 'tyInt32', 'tyInt64', 'tyFloat', NodeKindToStr: array [TNodeKind] of string = (
'tyFloat32', 'tyFloat64', 'tyFloat128'); 'nkNone', 'nkEmpty', 'nkIdent', 'nkSym',
type 'nkType', 'nkCharLit', 'nkIntLit', 'nkInt8Lit',
TNodeFlag = ( 'nkInt16Lit', 'nkInt32Lit', 'nkInt64Lit', 'nkFloatLit',
nfNone, nfBase2, nfBase8, nfBase16, 'nkFloat32Lit', 'nkFloat64Lit', 'nkStrLit', 'nkRStrLit',
nfAllConst, nfTransf, nfSem); 'nkTripleStrLit', 'nkMetaNode', 'nkNilLit', 'nkDotCall',
TNodeFlags = set of TNodeFlag; 'nkCommand', 'nkCall', 'nkGenericCall', 'nkExplicitTypeListCall',
const 'nkExprEqExpr', 'nkExprColonExpr', 'nkIdentDefs', 'nkInfix',
NodeFlagToStr: array [TNodeFlag] of string = ( 'nkPrefix', 'nkPostfix', 'nkPar', 'nkCurly',
'nfNone', 'nfBase2', 'nfBase8', 'nfBase16', 'nkBracket', 'nkBracketExpr', 'nkPragmaExpr', 'nkRange',
'nfAllConst', 'nfTransf', 'nfSem'); 'nkDotExpr', 'nkCheckedFieldExpr', 'nkDerefExpr', 'nkIfExpr',
type 'nkElifExpr', 'nkElseExpr', 'nkLambda', 'nkAccQuoted',
TTypeFlag = ( 'nkHeaderQuoted', 'nkTableConstr', 'nkQualified', 'nkHiddenStdConv',
tfVarargs, tfFinal, tfAcyclic, tfEnumHasWholes); 'nkHiddenSubConv', 'nkHiddenCallConv', 'nkConv', 'nkCast',
TTypeFlags = set of TTypeFlag; 'nkAddr', 'nkHiddenAddr', 'nkHiddenDeref', 'nkObjDownConv',
const 'nkObjUpConv', 'nkChckRangeF', 'nkChckRange64', 'nkChckRange',
TypeFlagToStr: array [TTypeFlag] of string = ( 'nkStringToCString', 'nkCStringToString', 'nkPassAsOpenArray', 'nkAsgn',
'tfVarargs', 'tfFinal', 'tfAcyclic', 'tfEnumHasWholes'); 'nkDefaultTypeParam', 'nkGenericParams', 'nkFormalParams', 'nkOfInherit',
type 'nkModule', 'nkProcDef', 'nkConverterDef', 'nkMacroDef',
TSymKind = ( 'nkTemplateDef', 'nkIteratorDef', 'nkOfBranch', 'nkElifBranch',
skUnknownSym, skConditional, skDynLib, skParam, 'nkExceptBranch', 'nkElse', 'nkMacroStmt', 'nkAsmStmt',
skTypeParam, skTemp, skType, skConst, 'nkPragma', 'nkIfStmt', 'nkWhenStmt', 'nkForStmt',
skVar, skProc, skIterator, skConverter, 'nkWhileStmt', 'nkCaseStmt', 'nkVarSection', 'nkConstSection',
skMacro, skTemplate, skField, skEnumField, 'nkConstDef', 'nkTypeSection', 'nkTypeDef', 'nkYieldStmt',
skForVar, skModule, skLabel, skStub); 'nkTryStmt', 'nkFinally', 'nkRaiseStmt', 'nkReturnStmt',
TSymKinds = set of TSymKind; 'nkBreakStmt', 'nkContinueStmt', 'nkBlockStmt', 'nkDiscardStmt',
const 'nkStmtList', 'nkImportStmt', 'nkFromStmt', 'nkImportAs',
SymKindToStr: array [TSymKind] of string = ( 'nkIncludeStmt', 'nkAccessStmt', 'nkCommentStmt', 'nkStmtListExpr',
'skUnknownSym', 'skConditional', 'skDynLib', 'skParam', 'nkBlockExpr', 'nkStmtListType', 'nkBlockType', 'nkVm',
'skTypeParam', 'skTemp', 'skType', 'skConst', 'nkTypeOfExpr', 'nkObjectTy', 'nkTupleTy', 'nkRecList',
'skVar', 'skProc', 'skIterator', 'skConverter', 'nkRecCase', 'nkRecWhen', 'nkRefTy', 'nkPtrTy',
'skMacro', 'skTemplate', 'skField', 'skEnumField', 'nkVarTy', 'nkProcTy', 'nkEnumTy', 'nkEnumFieldDef',
'skForVar', 'skModule', 'skLabel', 'skStub'); 'nkReturnToken');
{[[[end]]]} {[[[end]]]}
type type
@ -219,43 +219,43 @@ type
// if (i+1) % 6 == 0: cog.outl("") // if (i+1) % 6 == 0: cog.outl("")
//cog.outl("m" + magics[-1]) //cog.outl("m" + magics[-1])
//]]] //]]]
mNone, mDefined, mLow, mHigh, mSizeOf, mIs, mNone, mDefined, mLow, mHigh, mSizeOf, mIs,
mSucc, mPred, mInc, mDec, mOrd, mNew, mSucc, mPred, mInc, mDec, mOrd, mNew,
mNewFinalize, mNewSeq, mRegisterFinalizer, mLengthOpenArray, mLengthStr, mLengthArray, mNewFinalize, mNewSeq, mRegisterFinalizer, mLengthOpenArray, mLengthStr, mLengthArray,
mLengthSeq, mIncl, mExcl, mCard, mChr, mGCref, mLengthSeq, mIncl, mExcl, mCard, mChr, mGCref,
mGCunref, mAddI, mSubI, mMulI, mDivI, mModI, mGCunref, mAddI, mSubI, mMulI, mDivI, mModI,
mAddI64, mSubI64, mMulI64, mDivI64, mModI64, mShrI, mAddI64, mSubI64, mMulI64, mDivI64, mModI64, mShrI,
mShlI, mBitandI, mBitorI, mBitxorI, mMinI, mMaxI, mShlI, mBitandI, mBitorI, mBitxorI, mMinI, mMaxI,
mShrI64, mShlI64, mBitandI64, mBitorI64, mBitxorI64, mMinI64, mShrI64, mShlI64, mBitandI64, mBitorI64, mBitxorI64, mMinI64,
mMaxI64, mAddF64, mSubF64, mMulF64, mDivF64, mMinF64, mMaxI64, mAddF64, mSubF64, mMulF64, mDivF64, mMinF64,
mMaxF64, mAddU, mSubU, mMulU, mDivU, mModU, mMaxF64, mAddU, mSubU, mMulU, mDivU, mModU,
mAddU64, mSubU64, mMulU64, mDivU64, mModU64, mEqI, mAddU64, mSubU64, mMulU64, mDivU64, mModU64, mEqI,
mLeI, mLtI, mEqI64, mLeI64, mLtI64, mEqF64, mLeI, mLtI, mEqI64, mLeI64, mLtI64, mEqF64,
mLeF64, mLtF64, mLeU, mLtU, mLeU64, mLtU64, mLeF64, mLtF64, mLeU, mLtU, mLeU64, mLtU64,
mEqEnum, mLeEnum, mLtEnum, mEqCh, mLeCh, mLtCh, mEqEnum, mLeEnum, mLtEnum, mEqCh, mLeCh, mLtCh,
mEqB, mLeB, mLtB, mEqRef, mEqProc, mEqUntracedRef, mEqB, mLeB, mLtB, mEqRef, mEqProc, mEqUntracedRef,
mLePtr, mLtPtr, mEqCString, mXor, mUnaryMinusI, mUnaryMinusI64, mLePtr, mLtPtr, mEqCString, mXor, mUnaryMinusI, mUnaryMinusI64,
mAbsI, mAbsI64, mNot, mUnaryPlusI, mBitnotI, mUnaryPlusI64, mAbsI, mAbsI64, mNot, mUnaryPlusI, mBitnotI, mUnaryPlusI64,
mBitnotI64, mUnaryPlusF64, mUnaryMinusF64, mAbsF64, mZe8ToI, mZe8ToI64, mBitnotI64, mUnaryPlusF64, mUnaryMinusF64, mAbsF64, mZe8ToI, mZe8ToI64,
mZe16ToI, mZe16ToI64, mZe32ToI64, mZeIToI64, mToU8, mToU16, mZe16ToI, mZe16ToI64, mZe32ToI64, mZeIToI64, mToU8, mToU16,
mToU32, mToFloat, mToBiggestFloat, mToInt, mToBiggestInt, mCharToStr, mToU32, mToFloat, mToBiggestFloat, mToInt, mToBiggestInt, mCharToStr,
mBoolToStr, mIntToStr, mInt64ToStr, mFloatToStr, mCStrToStr, mStrToStr, mBoolToStr, mIntToStr, mInt64ToStr, mFloatToStr, mCStrToStr, mStrToStr,
mAnd, mOr, mEqStr, mLeStr, mLtStr, mEqSet, mAnd, mOr, mEqStr, mLeStr, mLtStr, mEqSet,
mLeSet, mLtSet, mMulSet, mPlusSet, mMinusSet, mSymDiffSet, mLeSet, mLtSet, mMulSet, mPlusSet, mMinusSet, mSymDiffSet,
mConStrStr, mConArrArr, mConArrT, mConTArr, mConTT, mSlice, mConStrStr, mConArrArr, mConArrT, mConTArr, mConTT, mSlice,
mAppendStrCh, mAppendStrStr, mAppendSeqElem, mAppendSeqSeq, mInRange, mInSet, mAppendStrCh, mAppendStrStr, mAppendSeqElem, mAppendSeqSeq, mInRange, mInSet,
mAsgn, mRepr, mExit, mSetLengthStr, mSetLengthSeq, mAssert, mAsgn, mRepr, mExit, mSetLengthStr, mSetLengthSeq, mAssert,
mSwap, mIsNil, mArrToSeq, mArray, mOpenArray, mRange, mSwap, mIsNil, mArrToSeq, mArray, mOpenArray, mRange,
mSet, mSeq, mInt, mInt8, mInt16, mInt32, mSet, mSeq, mInt, mInt8, mInt16, mInt32,
mInt64, mFloat, mFloat32, mFloat64, mBool, mChar, mInt64, mFloat, mFloat32, mFloat64, mBool, mChar,
mString, mCstring, mPointer, mAnyEnum, mEmptySet, mIntSetBaseType, mString, mCstring, mPointer, mAnyEnum, mEmptySet, mIntSetBaseType,
mNil, mIsMainModule, mCompileDate, mCompileTime, mNimrodVersion, mNimrodMajor, mNil, mIsMainModule, mCompileDate, mCompileTime, mNimrodVersion, mNimrodMajor,
mNimrodMinor, mNimrodPatch, mCpuEndian, mNaN, mInf, mNegInf, mNimrodMinor, mNimrodPatch, mCpuEndian, mNaN, mInf, mNegInf,
mNLen, mNChild, mNSetChild, mNAdd, mNAddMultiple, mNDel, mNLen, mNChild, mNSetChild, mNAdd, mNAddMultiple, mNDel,
mNKind, mNIntVal, mNFloatVal, mNSymbol, mNIdent, mNGetType, mNKind, mNIntVal, mNFloatVal, mNSymbol, mNIdent, mNGetType,
mNStrVal, mNSetIntVal, mNSetFloatVal, mNSetSymbol, mNSetIdent, mNSetType, mNStrVal, mNSetIntVal, mNSetFloatVal, mNSetSymbol, mNSetIdent, mNSetType,
mNSetStrVal, mNNewNimNode, mNCopyNimNode, mNCopyNimTree, mStrToIdent, mIdentToStr, mNSetStrVal, mNNewNimNode, mNCopyNimNode, mNCopyNimTree, mStrToIdent, mIdentToStr,
mEqIdent, mNHint, mNWarning, mNError mEqIdent, mNHint, mNWarning, mNError
//[[[end]]] //[[[end]]]
); );
@ -321,7 +321,7 @@ type
locExpr, // "location" is really an expression locExpr, // "location" is really an expression
locProc, // location is a proc (an address of a procedure) locProc, // location is a proc (an address of a procedure)
locData, // location is a constant locData, // location is a constant
locCall, // location is a call expression locCall, // location is a call expression
locImmediate, // location is an immediate value locImmediate, // location is an immediate value
locOther // location is something other locOther // location is something other
); );
@ -477,43 +477,43 @@ const // "MagicToStr" array:
// if (i+1) % 6 == 0: cog.outl("") // if (i+1) % 6 == 0: cog.outl("")
//cog.outl("'%s'" % magics[-1]) //cog.outl("'%s'" % magics[-1])
//]]] //]]]
'None', 'Defined', 'Low', 'High', 'SizeOf', 'Is', 'None', 'Defined', 'Low', 'High', 'SizeOf', 'Is',
'Succ', 'Pred', 'Inc', 'Dec', 'Ord', 'New', 'Succ', 'Pred', 'Inc', 'Dec', 'Ord', 'New',
'NewFinalize', 'NewSeq', 'RegisterFinalizer', 'LengthOpenArray', 'LengthStr', 'LengthArray', 'NewFinalize', 'NewSeq', 'RegisterFinalizer', 'LengthOpenArray', 'LengthStr', 'LengthArray',
'LengthSeq', 'Incl', 'Excl', 'Card', 'Chr', 'GCref', 'LengthSeq', 'Incl', 'Excl', 'Card', 'Chr', 'GCref',
'GCunref', 'AddI', 'SubI', 'MulI', 'DivI', 'ModI', 'GCunref', 'AddI', 'SubI', 'MulI', 'DivI', 'ModI',
'AddI64', 'SubI64', 'MulI64', 'DivI64', 'ModI64', 'ShrI', 'AddI64', 'SubI64', 'MulI64', 'DivI64', 'ModI64', 'ShrI',
'ShlI', 'BitandI', 'BitorI', 'BitxorI', 'MinI', 'MaxI', 'ShlI', 'BitandI', 'BitorI', 'BitxorI', 'MinI', 'MaxI',
'ShrI64', 'ShlI64', 'BitandI64', 'BitorI64', 'BitxorI64', 'MinI64', 'ShrI64', 'ShlI64', 'BitandI64', 'BitorI64', 'BitxorI64', 'MinI64',
'MaxI64', 'AddF64', 'SubF64', 'MulF64', 'DivF64', 'MinF64', 'MaxI64', 'AddF64', 'SubF64', 'MulF64', 'DivF64', 'MinF64',
'MaxF64', 'AddU', 'SubU', 'MulU', 'DivU', 'ModU', 'MaxF64', 'AddU', 'SubU', 'MulU', 'DivU', 'ModU',
'AddU64', 'SubU64', 'MulU64', 'DivU64', 'ModU64', 'EqI', 'AddU64', 'SubU64', 'MulU64', 'DivU64', 'ModU64', 'EqI',
'LeI', 'LtI', 'EqI64', 'LeI64', 'LtI64', 'EqF64', 'LeI', 'LtI', 'EqI64', 'LeI64', 'LtI64', 'EqF64',
'LeF64', 'LtF64', 'LeU', 'LtU', 'LeU64', 'LtU64', 'LeF64', 'LtF64', 'LeU', 'LtU', 'LeU64', 'LtU64',
'EqEnum', 'LeEnum', 'LtEnum', 'EqCh', 'LeCh', 'LtCh', 'EqEnum', 'LeEnum', 'LtEnum', 'EqCh', 'LeCh', 'LtCh',
'EqB', 'LeB', 'LtB', 'EqRef', 'EqProc', 'EqUntracedRef', 'EqB', 'LeB', 'LtB', 'EqRef', 'EqProc', 'EqUntracedRef',
'LePtr', 'LtPtr', 'EqCString', 'Xor', 'UnaryMinusI', 'UnaryMinusI64', 'LePtr', 'LtPtr', 'EqCString', 'Xor', 'UnaryMinusI', 'UnaryMinusI64',
'AbsI', 'AbsI64', 'Not', 'UnaryPlusI', 'BitnotI', 'UnaryPlusI64', 'AbsI', 'AbsI64', 'Not', 'UnaryPlusI', 'BitnotI', 'UnaryPlusI64',
'BitnotI64', 'UnaryPlusF64', 'UnaryMinusF64', 'AbsF64', 'Ze8ToI', 'Ze8ToI64', 'BitnotI64', 'UnaryPlusF64', 'UnaryMinusF64', 'AbsF64', 'Ze8ToI', 'Ze8ToI64',
'Ze16ToI', 'Ze16ToI64', 'Ze32ToI64', 'ZeIToI64', 'ToU8', 'ToU16', 'Ze16ToI', 'Ze16ToI64', 'Ze32ToI64', 'ZeIToI64', 'ToU8', 'ToU16',
'ToU32', 'ToFloat', 'ToBiggestFloat', 'ToInt', 'ToBiggestInt', 'CharToStr', 'ToU32', 'ToFloat', 'ToBiggestFloat', 'ToInt', 'ToBiggestInt', 'CharToStr',
'BoolToStr', 'IntToStr', 'Int64ToStr', 'FloatToStr', 'CStrToStr', 'StrToStr', 'BoolToStr', 'IntToStr', 'Int64ToStr', 'FloatToStr', 'CStrToStr', 'StrToStr',
'And', 'Or', 'EqStr', 'LeStr', 'LtStr', 'EqSet', 'And', 'Or', 'EqStr', 'LeStr', 'LtStr', 'EqSet',
'LeSet', 'LtSet', 'MulSet', 'PlusSet', 'MinusSet', 'SymDiffSet', 'LeSet', 'LtSet', 'MulSet', 'PlusSet', 'MinusSet', 'SymDiffSet',
'ConStrStr', 'ConArrArr', 'ConArrT', 'ConTArr', 'ConTT', 'Slice', 'ConStrStr', 'ConArrArr', 'ConArrT', 'ConTArr', 'ConTT', 'Slice',
'AppendStrCh', 'AppendStrStr', 'AppendSeqElem', 'AppendSeqSeq', 'InRange', 'InSet', 'AppendStrCh', 'AppendStrStr', 'AppendSeqElem', 'AppendSeqSeq', 'InRange', 'InSet',
'Asgn', 'Repr', 'Exit', 'SetLengthStr', 'SetLengthSeq', 'Assert', 'Asgn', 'Repr', 'Exit', 'SetLengthStr', 'SetLengthSeq', 'Assert',
'Swap', 'IsNil', 'ArrToSeq', 'Array', 'OpenArray', 'Range', 'Swap', 'IsNil', 'ArrToSeq', 'Array', 'OpenArray', 'Range',
'Set', 'Seq', 'Int', 'Int8', 'Int16', 'Int32', 'Set', 'Seq', 'Int', 'Int8', 'Int16', 'Int32',
'Int64', 'Float', 'Float32', 'Float64', 'Bool', 'Char', 'Int64', 'Float', 'Float32', 'Float64', 'Bool', 'Char',
'String', 'Cstring', 'Pointer', 'AnyEnum', 'EmptySet', 'IntSetBaseType', 'String', 'Cstring', 'Pointer', 'AnyEnum', 'EmptySet', 'IntSetBaseType',
'Nil', 'IsMainModule', 'CompileDate', 'CompileTime', 'NimrodVersion', 'NimrodMajor', 'Nil', 'IsMainModule', 'CompileDate', 'CompileTime', 'NimrodVersion', 'NimrodMajor',
'NimrodMinor', 'NimrodPatch', 'CpuEndian', 'NaN', 'Inf', 'NegInf', 'NimrodMinor', 'NimrodPatch', 'CpuEndian', 'NaN', 'Inf', 'NegInf',
'NLen', 'NChild', 'NSetChild', 'NAdd', 'NAddMultiple', 'NDel', 'NLen', 'NChild', 'NSetChild', 'NAdd', 'NAddMultiple', 'NDel',
'NKind', 'NIntVal', 'NFloatVal', 'NSymbol', 'NIdent', 'NGetType', 'NKind', 'NIntVal', 'NFloatVal', 'NSymbol', 'NIdent', 'NGetType',
'NStrVal', 'NSetIntVal', 'NSetFloatVal', 'NSetSymbol', 'NSetIdent', 'NSetType', 'NStrVal', 'NSetIntVal', 'NSetFloatVal', 'NSetSymbol', 'NSetIdent', 'NSetType',
'NSetStrVal', 'NNewNimNode', 'NCopyNimNode', 'NCopyNimTree', 'StrToIdent', 'IdentToStr', 'NSetStrVal', 'NNewNimNode', 'NCopyNimNode', 'NCopyNimTree', 'StrToIdent', 'IdentToStr',
'EqIdent', 'NHint', 'NWarning', 'NError' 'EqIdent', 'NHint', 'NWarning', 'NError'
//[[[end]]] //[[[end]]]
); );

View file

@ -5,7 +5,11 @@
@if llvm_gcc or gcc: @if llvm_gcc or gcc:
# GCC, LLVM and Visual C++ have a problem to optimize some modules. # GCC, LLVM and Visual C++ have a problem to optimize some modules.
# This is really strange. # This is really strange.
cgen.speed = "-O1 -fno-strict-aliasing" @if windows:
cgen.speed = "-O0"
@else:
cgen.speed = "-O1 -fno-strict-aliasing"
@end
@elif vcc: @elif vcc:
cgen.speed = "" cgen.speed = ""
@end @end