diff options
| -rw-r--r-- | lstate.h | 20 |
1 files changed, 19 insertions, 1 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstate.h,v 2.132 2016/10/19 12:31:42 roberto Exp roberto $ | 2 | ** $Id: lstate.h,v 2.133 2016/12/22 13:08:50 roberto Exp roberto $ |
| 3 | ** Global State | 3 | ** Global State |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -26,6 +26,24 @@ | |||
| 26 | ** 'tobefnz': all objects ready to be finalized; | 26 | ** 'tobefnz': all objects ready to be finalized; |
| 27 | ** 'fixedgc': all objects that are not to be collected (currently | 27 | ** 'fixedgc': all objects that are not to be collected (currently |
| 28 | ** only small strings, such as reserved words). | 28 | ** only small strings, such as reserved words). |
| 29 | ** | ||
| 30 | ** Moreover, there is another set of lists that control gray objects. | ||
| 31 | ** These lists are linked by fields 'gclist'. (All objects that | ||
| 32 | ** can become gray have such a field. The field is not the same | ||
| 33 | ** in all objects, but it always has this name.) Any gray object | ||
| 34 | ** must belong to one of these lists, and all objects in these lists | ||
| 35 | ** must be gray: | ||
| 36 | ** | ||
| 37 | ** 'gray': regular gray objects, still waiting to be visited. | ||
| 38 | ** 'grayagain': objects that must be revisited at the atomic phase. | ||
| 39 | ** That includes | ||
| 40 | ** - black objects got in a write barrier; | ||
| 41 | ** - all kinds of weak tables during propagation phase; | ||
| 42 | ** - all threads. | ||
| 43 | ** 'weak': tables with weak values to be cleared; | ||
| 44 | ** 'ephemeron': ephemeron tables with white->white entries; | ||
| 45 | ** 'allweak': tables with weak keys and/or weak values to be cleared. | ||
| 46 | ** The last three lists are used only during the atomic phase. | ||
| 29 | 47 | ||
| 30 | */ | 48 | */ |
| 31 | 49 | ||
