** Checks whether value 'o' came from an upvalue. (That can only happen ** with instructions OP_GETTABUP/OP_SETTABUP, which operate directly on ** upvalues.) */
| 556 | ** upvalues.) |
| 557 | */ |
| 558 | static const char *getupvalname (CallInfo *ci, const TValue *o, |
| 559 | const char **name) { |
| 560 | LClosure *c = ci_func(ci); |
| 561 | int i; |
| 562 | for (i = 0; i < c->nupvalues; i++) { |
| 563 | if (c->upvals[i]->v == o) { |
| 564 | *name = upvalname(c->p, i); |
| 565 | return "upvalue"; |
| 566 | } |
| 567 | } |
| 568 | return NULL; |
| 569 | } |
| 570 | |
| 571 | |
| 572 | static const char *varinfo (lua_State *L, const TValue *o) { |