comments about gray lists

This commit is contained in:
Roberto Ierusalimschy
2017-02-15 16:52:13 -02:00
parent d266d40dea
commit e6c1e6005a

View File

@@ -1,5 +1,5 @@
/*
** $Id: lstate.h,v 2.132 2016/10/19 12:31:42 roberto Exp roberto $
** $Id: lstate.h,v 2.133 2016/12/22 13:08:50 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
@@ -26,6 +26,24 @@
** 'tobefnz': all objects ready to be finalized;
** 'fixedgc': all objects that are not to be collected (currently
** only small strings, such as reserved words).
**
** Moreover, there is another set of lists that control gray objects.
** These lists are linked by fields 'gclist'. (All objects that
** can become gray have such a field. The field is not the same
** in all objects, but it always has this name.) Any gray object
** must belong to one of these lists, and all objects in these lists
** must be gray:
**
** 'gray': regular gray objects, still waiting to be visited.
** 'grayagain': objects that must be revisited at the atomic phase.
** That includes
** - black objects got in a write barrier;
** - all kinds of weak tables during propagation phase;
** - all threads.
** 'weak': tables with weak values to be cleared;
** 'ephemeron': ephemeron tables with white->white entries;
** 'allweak': tables with weak keys and/or weak values to be cleared.
** The last three lists are used only during the atomic phase.
*/