As i understand, if set new key/value into one black table object, luaC_barrierback will mark table as gray again. so that at atomic phase system will re-mark table again. finally previous new key/value will be also marked.
How about luaC_barrierback's behavior at sweep phase before GC change table from black to current white? table will be marked as gray from black. yes. no more call luaC_barrierback, but GC still need sweep it and change it to current while.
i think luaC_barrierback should change table from black to current white directly at sweep phase. please correct me if my statement is wrong.