|
@@ -1423,6 +1423,7 @@ static lu_mem atomic (lua_State *L) {
|
|
|
/* registry and global metatables may be changed by API */
|
|
|
markvalue(g, &g->l_registry);
|
|
|
markmt(g); /* mark global metatables */
|
|
|
+ work += propagateall(g); /* empties 'gray' list */
|
|
|
/* remark occasional upvalues of (maybe) dead threads */
|
|
|
work += remarkupvals(g);
|
|
|
work += propagateall(g); /* propagate changes */
|
|
@@ -1486,8 +1487,7 @@ static lu_mem singlestep (lua_State *L) {
|
|
|
return propagatemark(g); /* traverse one gray object */
|
|
|
}
|
|
|
case GCSenteratomic: {
|
|
|
- lu_mem work = propagateall(g); /* make sure gray list is empty */
|
|
|
- work += atomic(L); /* work is what was traversed by 'atomic' */
|
|
|
+ lu_mem work = atomic(L); /* work is what was traversed by 'atomic' */
|
|
|
entersweep(L);
|
|
|
g->GCestimate = gettotalbytes(g); /* first estimate */;
|
|
|
return work;
|