Fallback to metamethod resolving for tostring in print().

This commit is contained in:
Mike Pall 2010-06-16 19:43:07 +02:00
parent fa673eb179
commit cdc37a33b3

View File

@ -402,8 +402,15 @@ LJLIB_CF(print)
{
ptrdiff_t i, nargs = L->top - L->base;
cTValue *tv = lj_tab_getstr(tabref(L->env), strV(lj_lib_upvalue(L, 1)));
int shortcut = (tv && tvisfunc(tv) && funcV(tv)->c.ffid == FF_tostring);
copyTV(L, L->top++, tv ? tv : niltv(L));
int shortcut;
if (tv && !tvisnil(tv)) {
copyTV(L, L->top++, tv);
} else {
setstrV(L, L->top++, strV(lj_lib_upvalue(L, 1)));
lua_gettable(L, LUA_GLOBALSINDEX);
tv = L->top-1;
}
shortcut = (tvisfunc(tv) && funcV(tv)->c.ffid == FF_tostring);
for (i = 0; i < nargs; i++) {
const char *str;
size_t size;