aboutsummaryrefslogtreecommitdiff
path: root/lfunc.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lfunc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lfunc.c b/lfunc.c
index d650c000..2b041281 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -264,6 +264,21 @@ Proto *luaF_newproto (lua_State *L) {
264} 264}
265 265
266 266
267size_t luaF_protosize (Proto *p) {
268 size_t sz = sizeof(Proto)
269 + cast_uint(p->sizep) * sizeof(Proto*)
270 + cast_uint(p->sizek) * sizeof(TValue)
271 + cast_uint(p->sizelocvars) * sizeof(LocVar)
272 + cast_uint(p->sizeupvalues) * sizeof(Upvaldesc);
273 if (!(p->flag & PF_FIXED)) {
274 sz += cast_uint(p->sizecode) * sizeof(Instruction)
275 + cast_uint(p->sizelineinfo) * sizeof(lu_byte)
276 + cast_uint(p->sizeabslineinfo) * sizeof(AbsLineInfo);
277 }
278 return sz;
279}
280
281
267void luaF_freeproto (lua_State *L, Proto *f) { 282void luaF_freeproto (lua_State *L, Proto *f) {
268 if (!(f->flag & PF_FIXED)) { 283 if (!(f->flag & PF_FIXED)) {
269 luaM_freearray(L, f->code, cast_sizet(f->sizecode)); 284 luaM_freearray(L, f->code, cast_sizet(f->sizecode));