** Checks whether value 'o' came from an upvalue. (That can only happen ** with instructions OP_GETTABUP/OP_SETTABUP, which operate directly on ** upvalues.) */
| 704 | ** upvalues.) |
| 705 | */ |
| 706 | static const char *getupvalname (CallInfo *ci, const TValue *o, |
| 707 | const char **name) { |
| 708 | LClosure *c = ci_func(ci); |
| 709 | int i; |
| 710 | for (i = 0; i < c->nupvalues; i++) { |
| 711 | if (c->upvals[i]->v.p == o) { |
| 712 | *name = upvalname(c->p, i); |
| 713 | return strupval; |
| 714 | } |
| 715 | } |
| 716 | return NULL; |
| 717 | } |
| 718 | |
| 719 | |
| 720 | static const char *formatvarinfo (lua_State *L, const char *kind, |