Roberto Ierusalimschy
72d82a296c
revamping the incremental collector
Some simplifications (not counting bytes, couting only slots visited;
no more 'gcfinnum'); more GC parameters; using vararg in 'lua_gc' to
set parameters in different GC modes
8 years ago
Roberto Ierusalimschy
2376eb6347
barrier for prototype's cache (with new gray list 'protogray' to keep
prototypes to have their caches visited again) + constant 'MAXMISS'
8 years ago
Roberto Ierusalimschy
a3d36fe283
Upvalues collected like everything else (with mark-sweep) instead
of reference count (simpler and better for generational mode)
8 years ago
Roberto Ierusalimschy
9569ad6b0d
Comments for generational collector
8 years ago
Roberto Ierusalimschy
2331e1beec
small changes in 'luaC_upvalbarrier'
8 years ago
Roberto Ierusalimschy
e4287da3a6
generational collector (still not complete)
8 years ago
Roberto Ierusalimschy
f5f3df3bd1
generational collection: new attempt (still incomplete)
8 years ago
Roberto Ierusalimschy
c0836dda74
avoid empty macro arguments (invalid in C89)
9 years ago
Roberto Ierusalimschy
3ad55386c4
'condchangemem' also may need to run 'pre'/'pos'
9 years ago
Roberto Ierusalimschy
caf8278710
added comments
9 years ago
Roberto Ierusalimschy
f7670781cf
cleaner definition for 'luaC_condGC', using 'pre'/'pos' parameters
9 years ago
Roberto Ierusalimschy
20b9e59441
barrier macros rewritten as expressions
9 years ago
Roberto Ierusalimschy
bdf566a8a3
`name' in comments changed to 'name'
10 years ago
Roberto Ierusalimschy
3c6d0aaa7d
'iswhite' and related macros now can work directly on any object
(no need to convert to 'GCObject')
10 years ago
Roberto Ierusalimschy
e43612aaf6
put the restriction that 'luaC_barrierback' works only on tables
in its prototype
10 years ago
Roberto Ierusalimschy
9aec500a26
no need for field 'gch' anymore
10 years ago
Roberto Ierusalimschy
ed795d5ff4
detail (removed unused prototype)
11 years ago
Roberto Ierusalimschy
3f78de256e
no need to keep threads in a different GC list, now that there is the
'twups' list
11 years ago
Roberto Ierusalimschy
1cce3e6842
change in the way 'collectgarbage("step", size)' interprets 'size'
(mimicking the way the GC itself behaves when Lua allocates 'size'
Kbytes)
11 years ago
Roberto Ierusalimschy
de3b1c9b53
better control for number of finalizers called at each GC cycle
(increases progressively)
11 years ago
Roberto Ierusalimschy
733c58595b
no more local collection
11 years ago
Roberto Ierusalimschy
ba3586cc90
keep a single list of objects to be finalized (with local and non-local
objects), to ensure finalization order
11 years ago
Roberto Ierusalimschy
06156e7575
detail (setmetatable do not need to use a back GC barrier)
11 years ago
Roberto Ierusalimschy
4eeb1831be
new names and better order for GC states (sweep first lists that
can have dead objects)
11 years ago
Roberto Ierusalimschy
dd373a8f66
threads are kept in a separated GC list, linked after the main thread
11 years ago
Roberto Ierusalimschy
d8aa8dd97e
objects in list 'tobefnz' have a GC life-cycle like all others
(specifically they are cleaned during sweep phase)
11 years ago
Roberto Ierusalimschy
1150873447
'luaC_newobj' does not handle special cases; only special case
now is threads, which do not use 'luaC_newobj' anymore.
11 years ago
Roberto Ierusalimschy
aeff4f79fa
local collection now calls finalizers
11 years ago
Roberto Ierusalimschy
1bf4faec64
new GC state to sweep 'localgc' list + small changes in sweep control
11 years ago
Roberto Ierusalimschy
26629d0af1
details (a few casts moved from macro invocation to macro definition)
11 years ago
Roberto Ierusalimschy
90972ff136
LOCALBLACK changed to LOCALMARK and used also to control whether object
is in 'localgc' list + luaC_newobj by default puts object in 'localgc'
list
11 years ago
Roberto Ierusalimschy
af35c7f398
upvalues collected by reference count
11 years ago
Roberto Ierusalimschy
50955e27f5
C functions and strings now go to the local list; first version
of the local collector
11 years ago
Roberto Ierusalimschy
0df6635711
"fixed" objects kept in a separated list (instead of being kept in
'allgc' list with a bit marking them)
11 years ago
Roberto Ierusalimschy
ae800656c9
change in string table: string table is now independent of GC lists; all
strings live in 'normal' GC lists
11 years ago
Roberto Ierusalimschy
8f6b80aa1d
GC bits SEPARATED and FINALIZEDBIT mixed in FINALIZEDBIT (with simpler
control)
11 years ago
Roberto Ierusalimschy
9eff921f8f
"barrier" for link prototype->cache changed to be consistent with
GC behavior (link is cleared to preserve invariant)
11 years ago
Roberto Ierusalimschy
439d74e29f
added 'local' bit (true => object is only refered by local variables)
11 years ago
Roberto Ierusalimschy
3679d33b02
barrier conditions rewritten to test first 'isblack' and then 'iswhite'
(during a pause all objects are white, so 'isblack' fails much more
often than 'iswhite')
11 years ago
Roberto Ierusalimschy
677d90165f
no more generational collection !!!
11 years ago
Roberto Ierusalimschy
ae1d318822
small bug: generational mode is always in 'propagate' mode only
outside the collector: during collection of course it must go to
other modes.
12 years ago
Roberto Ierusalimschy
e4f609d0ee
collector in generational mode must be in 'propagate' state when
not running a collection
13 years ago
Roberto Ierusalimschy
e29f3a5751
definition of 'GCSTEPSIZE' moved to header file + small changes
13 years ago
Roberto Ierusalimschy
398811a313
simpler macro 'luaC_condGC' + better 'step' in 'lua_gc' +
micro bug in 'luaC_checkfinalizer' (current sweep object could be
removed from 'allgc' list)
13 years ago
Roberto Ierusalimschy
31829ad177
test for whether collector is running moved from function to
macro 'luaC_condGC'.
13 years ago
Roberto Ierusalimschy
0010ec68b1
documentation comment (small correction about strings being
gray)
13 years ago
Roberto Ierusalimschy
788a0ecd27
'luaC_separateudata' renamed to 'separatetobefnz' and called only
from 'lgc.c'
13 years ago
Roberto Ierusalimschy
f3b0eb3ecf
lint (unused macros)
13 years ago
Roberto Ierusalimschy
c4ea0c3b29
detail (cleaning trailing spaces)
14 years ago
Roberto Ierusalimschy
868ff40339
full collection does not restart collector + avoid changing GC
state if an error happens in a step
14 years ago