summary refs log tree commit diff stats
path: root/lib/system/gc_ms.nim
Commit message (Collapse)AuthorAgeFilesLines
* gc: removed dead codeAndreas Rumpf2019-03-141-3/+0
|
* code cleanup: there is no tyOptRefAndreas Rumpf2019-02-221-4/+4
|
* system refactorings (#10559)Andreas Rumpf2019-02-061-1/+2
| | | | | | | | * move IO subsystem into its own module; refs #10385 * make standalone test compile again * make C++ examples compile again * make more tests green * make sysAssert and gcAssert work again
* fixes #10271 [backport]Araq2019-01-131-1/+2
|
* Remove dead code (#9777)Jacek Sieka2018-11-261-22/+2
| | | | | | | | | * gc/gc2: remove unused ref counting stuff * also removes some false threading support - hasSharedHeap is always false in gc/gc2 * gc: remove some threading cruft * remove asgnRefNoCycle * compiler: remove TLoc.dup (unused)
* more progress on destructor based stringsAndreas Rumpf2018-07-131-47/+49
|
* M&S GC: collect earlier under memory pressureAndreas Rumpf2018-01-301-6/+7
|
* M&S GC: minor code cleanupAndreas Rumpf2018-01-211-6/+0
|
* Mark&Sweep GC: introduce nimTracing define for debuggingAndreas Rumpf2018-01-191-1/+38
|
* GC: enable precise global/thread local storage tracingAraq2018-01-151-10/+5
|
* GC improvements; distinguish between thread local and globals in the marking ↵Araq2018-01-141-17/+6
| | | | step
* Fixed mutex usage in SharedList and SharedTable. Closes #6988 (#6990)Yuriy Glukhov2017-12-311-1/+1
|
* more replacements for the deprecated '<'Andreas Rumpf2017-10-291-2/+2
|
* GCs: use add instead of &Andreas Rumpf2017-09-291-3/+3
|
* first steps of making 'opt' a first class type for NimAndreas Rumpf2017-09-251-4/+4
|
* added system.deallocHeap feature for Nim's native GCsAndreas Rumpf2017-07-221-12/+0
|
* make the GCs more robustAndreas Rumpf2017-07-201-7/+7
|
* added logic to the M&S GC to detect logical leaksAraq2017-06-161-0/+55
|
* Cleanup of gc codeRokas Kupstys2017-02-201-14/+16
| | | | Cleanups
* system.nim: don't use deprecated symbols/constructsAraq2017-02-081-1/+1
|
* M&S GC gets the heap dump featureAndreas Rumpf2017-01-151-14/+17
|
* Add `import sharedlist` when `hasThreadSupport`James Boyden2016-04-051-0/+3
| | | | | | | | | | Without this change, a user's Nim code won't compile if they're using both threads & the mark-and-sweep GC: lib/system/gc_ms.nim(75, 18) Error: undeclared identifier: 'SharedList' toDispose: SharedList[pointer] ^ This small code block addition was copied from "lib/system/gc.nim" (where it appears directly after a `when defined(memProfiler)` block also).
* GCs support ForeignCellsAndreas Rumpf2016-03-051-0/+7
|
* fixes #3245Araq2015-08-251-1/+2
|
* Coroutine support for i386/amd64 platforms unix/windows OSes ↵rku2015-07-311-153/+23
| | | | markAndSweep/refCounting GCs.
* Fixes compilation with --gc:markandsweep.Dominik Picheta2015-06-041-1/+1
|
* lib/system/g-w - Dropped 'T' from typespdw2015-06-041-47/+48
|
* Fix GC scanning of registers on x86_64 architectures.Reimer Behrends2015-05-071-0/+9
| | | | | | | It is possible for jmp_buf to not be word-aligned or addresses in the register dump to not be word-aligned. This can result in either addresses in registers being missed or even addresses on the stack past the register area not being scanned properly.
* Fix proc call in gc_msdef2015-03-261-1/+1
| | | | This fixes compilation with --gc:markandsweep -d:gcUseBitvectors
* fixed the tester; more tests greenAraq2015-03-101-18/+22
|
* Fix typosFederico Ceratto2015-02-151-1/+1
|
* fixes #2070Araq2015-02-101-4/+6
|
* Happy new year!Guillaume Gelin2015-01-061-1/+1
|
* added 'setupGcForForeignThread' for better C interopAraq2014-12-111-0/+14
|
* introduced 'benign' pragmaAraq2014-10-251-8/+8
|
* make tests greenAraq2014-08-311-26/+26
|
* the big renamefest: first stepsAraq2014-08-221-2/+2
|
* implemented builtin noncopying sliceAraq2014-05-021-0/+1
|
* bugfix: MS-GC GC_unrefAraq2014-04-301-1/+2
|
* bugfix: MS GC acknowledges GC_ref/unref properlyAraq2014-04-301-6/+45
|
* marked markAndSweep GC thread safeAraq2014-04-201-8/+8
|
* mark and sweep GC compiles with --cs:partialAraq2014-02-021-14/+14
|
* fixes #569; C++ codegen works againAraq2013-08-311-1/+1
|
* mark and sweep GC without bitvectors worksAraq2013-02-191-1/+3
|
* mark and sweep without bitvectorsAraq2013-02-191-22/+51
|
* code cleanup for mark&sweep GCAraq2013-02-071-51/+31
|
* first version of a simple mark&sweep GC; activate with --gc:markAndSweepAraq2013-02-071-0/+524
pan> c = nexttiled(c->next)) n++; /* window geoms */ mw = (n > nmaster) ? (waw * master) / 1000 : waw; mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1); tw = waw - mw; th = (n > nmaster) ? wah / (n - nmaster) : 0; for(i = 0, c = clients; c; c = c->next) if(isvisible(c)) { if(c->isfloat) { resize(c, True, TopLeft); continue; } c->ismax = False; c->x = wax; c->y = way; if(i < nmaster) { c->y += i * mh; c->w = mw - 2 * BORDERPX; c->h = mh - 2 * BORDERPX; } else { /* tile window */ c->x += mw; c->w = tw - 2 * BORDERPX; if(th > bh) { c->y += (i - nmaster) * th; c->h = th - 2 * BORDERPX; } else /* fallback if th < bh */ c->h = wah - 2 * BORDERPX; } resize(c, False, TopLeft); i++; } else ban(c); if(!sel || !isvisible(sel)) { for(c = stack; c && !isvisible(c); c = c->snext); focus(c); } restack(); } void focusnext(Arg *arg) { Client *c; if(!sel) return; if(!(c = getnext(sel->next))) c = getnext(clients); if(c) { focus(c); restack(); } } void focusprev(Arg *arg) { Client *c; if(!sel) return; if(!(c = getprev(sel->prev))) { for(c = clients; c && c->next; c = c->next); c = getprev(c); } if(c) { focus(c); restack(); } } void incnmaster(Arg *arg) { if((nmaster + arg->i < 1) || (wah / (nmaster + arg->i) < bh)) return; nmaster += arg->i; arrange(); } Bool isvisible(Client *c) { unsigned int i; for(i = 0; i < ntags; i++) if(c->tags[i] && seltag[i]) return True; return False; } void resizemaster(Arg *arg) { if(arg->i == 0) master = MASTER; else { if(master + arg->i > 950 || master + arg->i < 50) return; master += arg->i; } arrange(); } void restack(void) { Client *c; XEvent ev; if(!sel) { drawstatus(); return; } if(sel->isfloat || arrange == dofloat) { XRaiseWindow(dpy, sel->win); XRaiseWindow(dpy, sel->twin); } if(arrange != dofloat) { if(!sel->isfloat) { XLowerWindow(dpy, sel->twin); XLowerWindow(dpy, sel->win); } for(c = nexttiled(clients); c; c = nexttiled(c->next)) { if(c == sel) continue; XLowerWindow(dpy, c->twin); XLowerWindow(dpy, c->win); } } drawall(); XSync(dpy, False); while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); } void togglefloat(Arg *arg) { if (!sel || arrange == dofloat) return; sel->isfloat = !sel->isfloat; arrange(); } void togglemode(Arg *arg) { arrange = (arrange == dofloat) ? dotile : dofloat; if(sel) arrange(); else drawstatus(); } void toggleview(Arg *arg) { unsigned int i; seltag[arg->i] = !seltag[arg->i]; for(i = 0; i < ntags && !seltag[i]; i++); if(i == ntags) seltag[arg->i] = True; /* cannot toggle last view */ arrange(); } void view(Arg *arg) { unsigned int i; for(i = 0; i < ntags; i++) seltag[i] = (arg->i == -1) ? True : False; if(arg->i >= 0 && arg->i < ntags) seltag[arg->i] = True; arrange(); } void zoom(Arg *arg) { unsigned int n; Client *c; if(!sel) return; if(sel->isfloat || (arrange == dofloat)) { togglemax(sel); return; } for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; if((c = sel) == nexttiled(clients)) if(!(c = nexttiled(c->next))) return; detach(c); if(clients) clients->prev = c; c->next = clients; clients = c; focus(c); arrange(); }