small fixes for windows
This commit is contained in:
parent
af65f91e23
commit
1c8ddca7e0
4 changed files with 276 additions and 272 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,24 @@
|
||||||
# cog.out(toEnum(key, val))
|
# cog.out(toEnum(key, val))
|
||||||
#]]]
|
#]]]
|
||||||
type
|
type
|
||||||
|
TNimrodTypeKind* = enum
|
||||||
|
ntyNone, ntyBool, ntyChar, ntyEmpty,
|
||||||
|
ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst,
|
||||||
|
ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray,
|
||||||
|
ntyObject, ntyTuple, ntySet, ntyRange,
|
||||||
|
ntyPtr, ntyRef, ntyVar, ntySequence,
|
||||||
|
ntyProc, ntyPointer, ntyOpenArray, ntyString,
|
||||||
|
ntyCString, ntyForward, ntyInt, ntyInt8,
|
||||||
|
ntyInt16, ntyInt32, ntyInt64, ntyFloat,
|
||||||
|
ntyFloat32, ntyFloat64, ntyFloat128
|
||||||
|
TNimTypeKinds* = set[TNimrodTypeKind]
|
||||||
|
TNimrodSymKind* = enum
|
||||||
|
nskUnknownSym, nskConditional, nskDynLib, nskParam,
|
||||||
|
nskTypeParam, nskTemp, nskType, nskConst,
|
||||||
|
nskVar, nskProc, nskIterator, nskConverter,
|
||||||
|
nskMacro, nskTemplate, nskField, nskEnumField,
|
||||||
|
nskForVar, nskModule, nskLabel, nskStub
|
||||||
|
TNimSymKinds* = set[TNimrodSymKind]
|
||||||
TNimrodNodeKind* = enum
|
TNimrodNodeKind* = enum
|
||||||
nnkNone, nnkEmpty, nnkIdent, nnkSym,
|
nnkNone, nnkEmpty, nnkIdent, nnkSym,
|
||||||
nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit,
|
nnkType, nnkCharLit, nnkIntLit, nnkInt8Lit,
|
||||||
|
|
@ -65,24 +83,6 @@ type
|
||||||
nnkVarTy, nnkProcTy, nnkEnumTy, nnkEnumFieldDef,
|
nnkVarTy, nnkProcTy, nnkEnumTy, nnkEnumFieldDef,
|
||||||
nnkReturnToken
|
nnkReturnToken
|
||||||
TNimNodeKinds* = set[TNimrodNodeKind]
|
TNimNodeKinds* = set[TNimrodNodeKind]
|
||||||
TNimrodTypeKind* = enum
|
|
||||||
ntyNone, ntyBool, ntyChar, ntyEmpty,
|
|
||||||
ntyArrayConstr, ntyNil, ntyGeneric, ntyGenericInst,
|
|
||||||
ntyGenericParam, ntyEnum, ntyAnyEnum, ntyArray,
|
|
||||||
ntyObject, ntyTuple, ntySet, ntyRange,
|
|
||||||
ntyPtr, ntyRef, ntyVar, ntySequence,
|
|
||||||
ntyProc, ntyPointer, ntyOpenArray, ntyString,
|
|
||||||
ntyCString, ntyForward, ntyInt, ntyInt8,
|
|
||||||
ntyInt16, ntyInt32, ntyInt64, ntyFloat,
|
|
||||||
ntyFloat32, ntyFloat64, ntyFloat128
|
|
||||||
TNimTypeKinds* = set[TNimrodTypeKind]
|
|
||||||
TNimrodSymKind* = enum
|
|
||||||
nskUnknownSym, nskConditional, nskDynLib, nskParam,
|
|
||||||
nskTypeParam, nskTemp, nskType, nskConst,
|
|
||||||
nskVar, nskProc, nskIterator, nskConverter,
|
|
||||||
nskMacro, nskTemplate, nskField, nskEnumField,
|
|
||||||
nskForVar, nskModule, nskLabel, nskStub
|
|
||||||
TNimSymKinds* = set[TNimrodSymKind]
|
|
||||||
#[[[end]]]
|
#[[[end]]]
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
|
||||||
146
nim/ast.pas
146
nim/ast.pas
|
|
@ -65,6 +65,79 @@ for key, val in enums.items():
|
||||||
cog.out(a)
|
cog.out(a)
|
||||||
cog.out(b)
|
cog.out(b)
|
||||||
]]]*)
|
]]]*)
|
||||||
|
type
|
||||||
|
TTypeFlag = (
|
||||||
|
tfVarargs, tfFinal, tfAcyclic, tfEnumHasWholes);
|
||||||
|
TTypeFlags = set of TTypeFlag;
|
||||||
|
const
|
||||||
|
TypeFlagToStr: array [TTypeFlag] of string = (
|
||||||
|
'tfVarargs', 'tfFinal', 'tfAcyclic', 'tfEnumHasWholes');
|
||||||
|
type
|
||||||
|
TTypeKind = (
|
||||||
|
tyNone, tyBool, tyChar, tyEmpty,
|
||||||
|
tyArrayConstr, tyNil, tyGeneric, tyGenericInst,
|
||||||
|
tyGenericParam, tyEnum, tyAnyEnum, tyArray,
|
||||||
|
tyObject, tyTuple, tySet, tyRange,
|
||||||
|
tyPtr, tyRef, tyVar, tySequence,
|
||||||
|
tyProc, tyPointer, tyOpenArray, tyString,
|
||||||
|
tyCString, tyForward, tyInt, tyInt8,
|
||||||
|
tyInt16, tyInt32, tyInt64, tyFloat,
|
||||||
|
tyFloat32, tyFloat64, tyFloat128);
|
||||||
|
TTypeKinds = set of TTypeKind;
|
||||||
|
const
|
||||||
|
TypeKindToStr: array [TTypeKind] of string = (
|
||||||
|
'tyNone', 'tyBool', 'tyChar', 'tyEmpty',
|
||||||
|
'tyArrayConstr', 'tyNil', 'tyGeneric', 'tyGenericInst',
|
||||||
|
'tyGenericParam', 'tyEnum', 'tyAnyEnum', 'tyArray',
|
||||||
|
'tyObject', 'tyTuple', 'tySet', 'tyRange',
|
||||||
|
'tyPtr', 'tyRef', 'tyVar', 'tySequence',
|
||||||
|
'tyProc', 'tyPointer', 'tyOpenArray', 'tyString',
|
||||||
|
'tyCString', 'tyForward', 'tyInt', 'tyInt8',
|
||||||
|
'tyInt16', 'tyInt32', 'tyInt64', 'tyFloat',
|
||||||
|
'tyFloat32', 'tyFloat64', 'tyFloat128');
|
||||||
|
type
|
||||||
|
TSymFlag = (
|
||||||
|
sfUsed, sfStar, sfMinus, sfInInterface,
|
||||||
|
sfFromGeneric, sfGlobal, sfForward, sfImportc,
|
||||||
|
sfExportc, sfVolatile, sfRegister, sfPure,
|
||||||
|
sfResult, sfNoSideEffect, sfMainModule, sfSystemModule,
|
||||||
|
sfNoReturn, sfAddrTaken, sfCompilerProc, sfCppMethod,
|
||||||
|
sfDiscriminant, sfDeprecated, sfInClosure, sfTypeCheck,
|
||||||
|
sfCompileTime, sfThreadVar, sfMerge);
|
||||||
|
TSymFlags = set of TSymFlag;
|
||||||
|
const
|
||||||
|
SymFlagToStr: array [TSymFlag] of string = (
|
||||||
|
'sfUsed', 'sfStar', 'sfMinus', 'sfInInterface',
|
||||||
|
'sfFromGeneric', 'sfGlobal', 'sfForward', 'sfImportc',
|
||||||
|
'sfExportc', 'sfVolatile', 'sfRegister', 'sfPure',
|
||||||
|
'sfResult', 'sfNoSideEffect', 'sfMainModule', 'sfSystemModule',
|
||||||
|
'sfNoReturn', 'sfAddrTaken', 'sfCompilerProc', 'sfCppMethod',
|
||||||
|
'sfDiscriminant', 'sfDeprecated', 'sfInClosure', 'sfTypeCheck',
|
||||||
|
'sfCompileTime', 'sfThreadVar', 'sfMerge');
|
||||||
|
type
|
||||||
|
TNodeFlag = (
|
||||||
|
nfNone, nfBase2, nfBase8, nfBase16,
|
||||||
|
nfAllConst, nfTransf, nfSem);
|
||||||
|
TNodeFlags = set of TNodeFlag;
|
||||||
|
const
|
||||||
|
NodeFlagToStr: array [TNodeFlag] of string = (
|
||||||
|
'nfNone', 'nfBase2', 'nfBase8', 'nfBase16',
|
||||||
|
'nfAllConst', 'nfTransf', 'nfSem');
|
||||||
|
type
|
||||||
|
TSymKind = (
|
||||||
|
skUnknownSym, skConditional, skDynLib, skParam,
|
||||||
|
skTypeParam, skTemp, skType, skConst,
|
||||||
|
skVar, skProc, skIterator, skConverter,
|
||||||
|
skMacro, skTemplate, skField, skEnumField,
|
||||||
|
skForVar, skModule, skLabel, skStub);
|
||||||
|
TSymKinds = set of TSymKind;
|
||||||
|
const
|
||||||
|
SymKindToStr: array [TSymKind] of string = (
|
||||||
|
'skUnknownSym', 'skConditional', 'skDynLib', 'skParam',
|
||||||
|
'skTypeParam', 'skTemp', 'skType', 'skConst',
|
||||||
|
'skVar', 'skProc', 'skIterator', 'skConverter',
|
||||||
|
'skMacro', 'skTemplate', 'skField', 'skEnumField',
|
||||||
|
'skForVar', 'skModule', 'skLabel', 'skStub');
|
||||||
type
|
type
|
||||||
TNodeKind = (
|
TNodeKind = (
|
||||||
nkNone, nkEmpty, nkIdent, nkSym,
|
nkNone, nkEmpty, nkIdent, nkSym,
|
||||||
|
|
@ -134,79 +207,6 @@ const
|
||||||
'nkRecCase', 'nkRecWhen', 'nkRefTy', 'nkPtrTy',
|
'nkRecCase', 'nkRecWhen', 'nkRefTy', 'nkPtrTy',
|
||||||
'nkVarTy', 'nkProcTy', 'nkEnumTy', 'nkEnumFieldDef',
|
'nkVarTy', 'nkProcTy', 'nkEnumTy', 'nkEnumFieldDef',
|
||||||
'nkReturnToken');
|
'nkReturnToken');
|
||||||
type
|
|
||||||
TSymFlag = (
|
|
||||||
sfUsed, sfStar, sfMinus, sfInInterface,
|
|
||||||
sfFromGeneric, sfGlobal, sfForward, sfImportc,
|
|
||||||
sfExportc, sfVolatile, sfRegister, sfPure,
|
|
||||||
sfResult, sfNoSideEffect, sfMainModule, sfSystemModule,
|
|
||||||
sfNoReturn, sfAddrTaken, sfCompilerProc, sfCppMethod,
|
|
||||||
sfDiscriminant, sfDeprecated, sfInClosure, sfTypeCheck,
|
|
||||||
sfCompileTime, sfThreadVar, sfMerge);
|
|
||||||
TSymFlags = set of TSymFlag;
|
|
||||||
const
|
|
||||||
SymFlagToStr: array [TSymFlag] of string = (
|
|
||||||
'sfUsed', 'sfStar', 'sfMinus', 'sfInInterface',
|
|
||||||
'sfFromGeneric', 'sfGlobal', 'sfForward', 'sfImportc',
|
|
||||||
'sfExportc', 'sfVolatile', 'sfRegister', 'sfPure',
|
|
||||||
'sfResult', 'sfNoSideEffect', 'sfMainModule', 'sfSystemModule',
|
|
||||||
'sfNoReturn', 'sfAddrTaken', 'sfCompilerProc', 'sfCppMethod',
|
|
||||||
'sfDiscriminant', 'sfDeprecated', 'sfInClosure', 'sfTypeCheck',
|
|
||||||
'sfCompileTime', 'sfThreadVar', 'sfMerge');
|
|
||||||
type
|
|
||||||
TTypeKind = (
|
|
||||||
tyNone, tyBool, tyChar, tyEmpty,
|
|
||||||
tyArrayConstr, tyNil, tyGeneric, tyGenericInst,
|
|
||||||
tyGenericParam, tyEnum, tyAnyEnum, tyArray,
|
|
||||||
tyObject, tyTuple, tySet, tyRange,
|
|
||||||
tyPtr, tyRef, tyVar, tySequence,
|
|
||||||
tyProc, tyPointer, tyOpenArray, tyString,
|
|
||||||
tyCString, tyForward, tyInt, tyInt8,
|
|
||||||
tyInt16, tyInt32, tyInt64, tyFloat,
|
|
||||||
tyFloat32, tyFloat64, tyFloat128);
|
|
||||||
TTypeKinds = set of TTypeKind;
|
|
||||||
const
|
|
||||||
TypeKindToStr: array [TTypeKind] of string = (
|
|
||||||
'tyNone', 'tyBool', 'tyChar', 'tyEmpty',
|
|
||||||
'tyArrayConstr', 'tyNil', 'tyGeneric', 'tyGenericInst',
|
|
||||||
'tyGenericParam', 'tyEnum', 'tyAnyEnum', 'tyArray',
|
|
||||||
'tyObject', 'tyTuple', 'tySet', 'tyRange',
|
|
||||||
'tyPtr', 'tyRef', 'tyVar', 'tySequence',
|
|
||||||
'tyProc', 'tyPointer', 'tyOpenArray', 'tyString',
|
|
||||||
'tyCString', 'tyForward', 'tyInt', 'tyInt8',
|
|
||||||
'tyInt16', 'tyInt32', 'tyInt64', 'tyFloat',
|
|
||||||
'tyFloat32', 'tyFloat64', 'tyFloat128');
|
|
||||||
type
|
|
||||||
TNodeFlag = (
|
|
||||||
nfNone, nfBase2, nfBase8, nfBase16,
|
|
||||||
nfAllConst, nfTransf, nfSem);
|
|
||||||
TNodeFlags = set of TNodeFlag;
|
|
||||||
const
|
|
||||||
NodeFlagToStr: array [TNodeFlag] of string = (
|
|
||||||
'nfNone', 'nfBase2', 'nfBase8', 'nfBase16',
|
|
||||||
'nfAllConst', 'nfTransf', 'nfSem');
|
|
||||||
type
|
|
||||||
TTypeFlag = (
|
|
||||||
tfVarargs, tfFinal, tfAcyclic, tfEnumHasWholes);
|
|
||||||
TTypeFlags = set of TTypeFlag;
|
|
||||||
const
|
|
||||||
TypeFlagToStr: array [TTypeFlag] of string = (
|
|
||||||
'tfVarargs', 'tfFinal', 'tfAcyclic', 'tfEnumHasWholes');
|
|
||||||
type
|
|
||||||
TSymKind = (
|
|
||||||
skUnknownSym, skConditional, skDynLib, skParam,
|
|
||||||
skTypeParam, skTemp, skType, skConst,
|
|
||||||
skVar, skProc, skIterator, skConverter,
|
|
||||||
skMacro, skTemplate, skField, skEnumField,
|
|
||||||
skForVar, skModule, skLabel, skStub);
|
|
||||||
TSymKinds = set of TSymKind;
|
|
||||||
const
|
|
||||||
SymKindToStr: array [TSymKind] of string = (
|
|
||||||
'skUnknownSym', 'skConditional', 'skDynLib', 'skParam',
|
|
||||||
'skTypeParam', 'skTemp', 'skType', 'skConst',
|
|
||||||
'skVar', 'skProc', 'skIterator', 'skConverter',
|
|
||||||
'skMacro', 'skTemplate', 'skField', 'skEnumField',
|
|
||||||
'skForVar', 'skModule', 'skLabel', 'skStub');
|
|
||||||
{[[[end]]]}
|
{[[[end]]]}
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue