diff options
Diffstat (limited to 'compiler')
-rwxr-xr-x | compiler/ccgstmts.nim | 3 | ||||
-rwxr-xr-x | compiler/commands.nim | 4 | ||||
-rwxr-xr-x | compiler/options.nim | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index 473d10e7b..dd6d2bfaa 100755 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -16,7 +16,8 @@ const # above X strings a hash-switch for strings is generated proc registerGcRoot(p: BProc, v: PSym) = - if gSelectedGc == gcMarkAndSweep and containsGarbageCollectedRef(v.loc.t): + if gSelectedGc in {gcMarkAndSweep, gcGenerational} and + containsGarbageCollectedRef(v.loc.t): # we register a specialized marked proc here; this has the advantage # that it works out of the box for thread local storage then :-) let prc = genTraverseProcForGlobal(p.module, v) diff --git a/compiler/commands.nim b/compiler/commands.nim index a2154c907..1da632858 100755 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -143,6 +143,7 @@ proc testCompileOptionArg*(switch, arg: string, info: TLineInfo): bool = of "refc": result = gSelectedGC == gcRefc of "v2": result = gSelectedGC == gcV2 of "markandsweep": result = gSelectedGC == gcMarkAndSweep + of "generational": result = gSelectedGC == gcGenerational of "none": result = gSelectedGC == gcNone else: LocalError(info, errNoneBoehmRefcExpectedButXFound, arg) of "opt": @@ -280,6 +281,9 @@ proc processSwitch(switch, arg: string, pass: TCmdlinePass, info: TLineInfo) = of "markandsweep": gSelectedGC = gcMarkAndSweep defineSymbol("gcmarkandsweep") + of "generational": + gSelectedGC = gcGenerational + defineSymbol("gcgenerational") of "none": gSelectedGC = gcNone defineSymbol("nogc") diff --git a/compiler/options.nim b/compiler/options.nim index d74bc7304..9119012f6 100755 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -81,7 +81,7 @@ type # please make sure we have under 32 options cmdRun # run the project via TCC backend TStringSeq* = seq[string] TGCMode* = enum # the selected GC - gcNone, gcBoehm, gcMarkAndSweep, gcRefc, gcV2 + gcNone, gcBoehm, gcMarkAndSweep, gcRefc, gcV2, gcGenerational const ChecksOptions* = {optObjCheck, optFieldCheck, optRangeCheck, optNilCheck, @@ -101,7 +101,7 @@ var headerFile*: string = "" gVerbosity*: int # how verbose the compiler is gNumberOfProcessors*: int # number of processors - gWholeProject*: bool # for 'doc2': output any dependency + gWholeProject*: bool # for 'doc2': output any dependency gEvalExpr* = "" # expression for idetools --eval gLastCmdTime*: float # when caas is enabled, we measure each command gListFullPaths*: bool |