+@@ -856,7 +859,8 @@ void luaV_execute (lua_State *L, int nex
+ }
+ OPCODE_TARGET(TAILCALL) {
+ int b = GETARG_B(i);
+- if (b != 0) L->top = ra+b; /* else previous instruction set top */
++ if (b != 0)
++ L->top = ra+b; /* else previous instruction set top */
+ L->savedpc = pc;
+ lua_assert(GETARG_C(i) - 1 == LUA_MULTRET);
+ switch (luaD_precall(L, ra, LUA_MULTRET)) {
+@@ -870,7 +874,8 @@ void luaV_execute (lua_State *L, int nex
+ L->base = ci->base = ci->func + ((ci+1)->base - pfunc);
+ for (aux = 0; pfunc+aux < L->top; aux++) /* move frame down */
+ setobjs2s(L, func+aux, pfunc+aux);
+- ci->top = L->top = func+aux; /* correct top */
++ ci->top = func+aux; /* correct top */
++ L->top = ci->top;
+ lua_assert(L->top == L->base + clvalue(func)->l.p->maxstacksize);
+ ci->savedpc = L->savedpc;
+ ci->tailcalls++; /* one more call lost */
+@@ -895,7 +900,7 @@ void luaV_execute (lua_State *L, int nex
+ if (--nexeccalls == 0) /* was previous function running `here'? */
+ return; /* no: return */
+ else { /* yes: continue its execution */
+- if (b) L->top = L->ci->top;
++ if (b) setlvmtop(L, L->ci->top);
+ lua_assert(isLua(L->ci));
+ lua_assert(GET_OPCODE(*((L->ci)->savedpc - 1)) == OP_CALL);
+ goto reentry;
+@@ -986,6 +991,7 @@ void luaV_execute (lua_State *L, int nex
+ for (; n > 0; n--) {
+ TValue *val = ra+n;
+ setobj2t(L, luaH_setint(L, h, last--), val);
++ setnilvalue(L, val);
+ luaC_barriert(L, h, val);
+ }
+ continue;
+@@ -1030,7 +1036,7 @@ void luaV_execute (lua_State *L, int nex