** Checks whether value 'o' came from an upvalue. (That can only happen ** with instructions OP_GETTABUP/OP_SETTABUP, which operate directly on ** upvalues.) */
| 666 | ** upvalues.) |
| 667 | */ |
| 668 | static const char *getupvalname (CallInfo *ci, const TValue *o, |
| 669 | const char **name) { |
| 670 | LClosure *c = ci_func(ci); |
| 671 | int i; |
| 672 | for (i = 0; i < c->nupvalues; i++) { |
| 673 | if (c->upvals[i]->v == o) { |
| 674 | *name = upvalname(c->p, i); |
| 675 | return "upvalue"; |
| 676 | } |
| 677 | } |
| 678 | return NULL; |
| 679 | } |
| 680 | |
| 681 | |
| 682 | static const char *varinfo (lua_State *L, const TValue *o) { |