diff options
-rw-r--r-- | lgc.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1423,6 +1423,7 @@ static lu_mem atomic (lua_State *L) { | |||
1423 | /* registry and global metatables may be changed by API */ | 1423 | /* registry and global metatables may be changed by API */ |
1424 | markvalue(g, &g->l_registry); | 1424 | markvalue(g, &g->l_registry); |
1425 | markmt(g); /* mark global metatables */ | 1425 | markmt(g); /* mark global metatables */ |
1426 | work += propagateall(g); /* empties 'gray' list */ | ||
1426 | /* remark occasional upvalues of (maybe) dead threads */ | 1427 | /* remark occasional upvalues of (maybe) dead threads */ |
1427 | work += remarkupvals(g); | 1428 | work += remarkupvals(g); |
1428 | work += propagateall(g); /* propagate changes */ | 1429 | work += propagateall(g); /* propagate changes */ |
@@ -1486,8 +1487,7 @@ static lu_mem singlestep (lua_State *L) { | |||
1486 | return propagatemark(g); /* traverse one gray object */ | 1487 | return propagatemark(g); /* traverse one gray object */ |
1487 | } | 1488 | } |
1488 | case GCSenteratomic: { | 1489 | case GCSenteratomic: { |
1489 | lu_mem work = propagateall(g); /* make sure gray list is empty */ | 1490 | lu_mem work = atomic(L); /* work is what was traversed by 'atomic' */ |
1490 | work += atomic(L); /* work is what was traversed by 'atomic' */ | ||
1491 | entersweep(L); | 1491 | entersweep(L); |
1492 | g->GCestimate = gettotalbytes(g); /* first estimate */; | 1492 | g->GCestimate = gettotalbytes(g); /* first estimate */; |
1493 | return work; | 1493 | return work; |