aboutsummaryrefslogtreecommitdiff
path: root/src/lj_gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_gc.c')
-rw-r--r--src/lj_gc.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/lj_gc.c b/src/lj_gc.c
index bcef576b..d8221740 100644
--- a/src/lj_gc.c
+++ b/src/lj_gc.c
@@ -254,8 +254,8 @@ static void gc_traverse_proto(global_State *g, GCproto *pt)
254 gc_mark_str(proto_chunkname(pt)); 254 gc_mark_str(proto_chunkname(pt));
255 for (i = -(ptrdiff_t)pt->sizekgc; i < 0; i++) /* Mark collectable consts. */ 255 for (i = -(ptrdiff_t)pt->sizekgc; i < 0; i++) /* Mark collectable consts. */
256 gc_markobj(g, proto_kgc(pt, i)); 256 gc_markobj(g, proto_kgc(pt, i));
257 for (i = 0; i < (ptrdiff_t)pt->sizeuvname; i++) /* Mark upvalue names. */ 257 for (i = 0; i < (ptrdiff_t)pt->sizeuv; i++) /* Mark upvalue names. */
258 gc_mark_str(gco2str(proto_uvname(pt, i))); 258 gc_mark_str(proto_uvname(pt, i));
259 for (i = 0; i < (ptrdiff_t)pt->sizevarinfo; i++) /* Mark names of locals. */ 259 for (i = 0; i < (ptrdiff_t)pt->sizevarinfo; i++) /* Mark names of locals. */
260 gc_mark_str(gco2str(gcref(proto_varinfo(pt)[i].name))); 260 gc_mark_str(gco2str(gcref(proto_varinfo(pt)[i].name)));
261} 261}
@@ -323,13 +323,7 @@ static size_t propagatemark(global_State *g)
323 } else if (LJ_LIKELY(o->gch.gct == ~LJ_TPROTO)) { 323 } else if (LJ_LIKELY(o->gch.gct == ~LJ_TPROTO)) {
324 GCproto *pt = gco2pt(o); 324 GCproto *pt = gco2pt(o);
325 gc_traverse_proto(g, pt); 325 gc_traverse_proto(g, pt);
326 return sizeof(GCproto) + sizeof(BCIns) * pt->sizebc + 326 return pt->sizept;
327 sizeof(GCRef) * pt->sizekgc +
328 sizeof(lua_Number) * pt->sizekn +
329 sizeof(uint16_t) * pt->sizeuv +
330 sizeof(BCLine) * pt->sizelineinfo +
331 sizeof(VarInfo) * pt->sizevarinfo +
332 sizeof(GCRef) * pt->sizeuvname;
333 } else { 327 } else {
334 lua_State *th = gco2th(o); 328 lua_State *th = gco2th(o);
335 setgcrefr(th->gclist, g->gc.grayagain); 329 setgcrefr(th->gclist, g->gc.grayagain);