diff options
Diffstat (limited to 'ltests.c')
| -rw-r--r-- | ltests.c | 25 |
1 files changed, 14 insertions, 11 deletions
| @@ -357,7 +357,8 @@ static void checkrefs (global_State *g, GCObject *o) { | |||
| 357 | checkudata(g, gco2u(o)); | 357 | checkudata(g, gco2u(o)); |
| 358 | break; | 358 | break; |
| 359 | } | 359 | } |
| 360 | case LUA_TUPVAL: { | 360 | case LUA_TUPVAL: |
| 361 | case LUA_TUPVALTBC: { | ||
| 361 | checkvalref(g, o, gco2upv(o)->v); | 362 | checkvalref(g, o, gco2upv(o)->v); |
| 362 | break; | 363 | break; |
| 363 | } | 364 | } |
| @@ -522,35 +523,37 @@ int lua_checkmemory (lua_State *L) { | |||
| 522 | 523 | ||
| 523 | 524 | ||
| 524 | static char *buildop (Proto *p, int pc, char *buff) { | 525 | static char *buildop (Proto *p, int pc, char *buff) { |
| 526 | char *obuff = buff; | ||
| 525 | Instruction i = p->code[pc]; | 527 | Instruction i = p->code[pc]; |
| 526 | OpCode o = GET_OPCODE(i); | 528 | OpCode o = GET_OPCODE(i); |
| 527 | const char *name = opnames[o]; | 529 | const char *name = opnames[o]; |
| 528 | int line = luaG_getfuncline(p, pc); | 530 | int line = luaG_getfuncline(p, pc); |
| 529 | int lineinfo = (p->lineinfo != NULL) ? p->lineinfo[pc] : 0; | 531 | int lineinfo = (p->lineinfo != NULL) ? p->lineinfo[pc] : 0; |
| 530 | sprintf(buff, "(%2d - %4d) %4d - ", lineinfo, line, pc); | 532 | if (lineinfo == ABSLINEINFO) |
| 533 | buff += sprintf(buff, "(__"); | ||
| 534 | else | ||
| 535 | buff += sprintf(buff, "(%2d", lineinfo); | ||
| 536 | buff += sprintf(buff, " - %4d) %4d - ", line, pc); | ||
| 531 | switch (getOpMode(o)) { | 537 | switch (getOpMode(o)) { |
| 532 | case iABC: | 538 | case iABC: |
| 533 | sprintf(buff+strlen(buff), "%-12s%4d %4d %4d%s", name, | 539 | sprintf(buff, "%-12s%4d %4d %4d%s", name, |
| 534 | GETARG_A(i), GETARG_B(i), GETARG_C(i), | 540 | GETARG_A(i), GETARG_B(i), GETARG_C(i), |
| 535 | GETARG_k(i) ? " (k)" : ""); | 541 | GETARG_k(i) ? " (k)" : ""); |
| 536 | break; | 542 | break; |
| 537 | case iABx: | 543 | case iABx: |
| 538 | sprintf(buff+strlen(buff), "%-12s%4d %4d", name, GETARG_A(i), | 544 | sprintf(buff, "%-12s%4d %4d", name, GETARG_A(i), GETARG_Bx(i)); |
| 539 | GETARG_Bx(i)); | ||
| 540 | break; | 545 | break; |
| 541 | case iAsBx: | 546 | case iAsBx: |
| 542 | sprintf(buff+strlen(buff), "%-12s%4d %4d", name, GETARG_A(i), | 547 | sprintf(buff, "%-12s%4d %4d", name, GETARG_A(i), GETARG_sBx(i)); |
| 543 | GETARG_sBx(i)); | ||
| 544 | break; | 548 | break; |
| 545 | case iAx: | 549 | case iAx: |
| 546 | sprintf(buff+strlen(buff), "%-12s%4d", name, GETARG_Ax(i)); | 550 | sprintf(buff, "%-12s%4d", name, GETARG_Ax(i)); |
| 547 | break; | 551 | break; |
| 548 | case isJ: | 552 | case isJ: |
| 549 | sprintf(buff+strlen(buff), "%-12s%4d (%1d)", name, GETARG_sJ(i), | 553 | sprintf(buff, "%-12s%4d (%1d)", name, GETARG_sJ(i), !!GETARG_m(i)); |
| 550 | !!GETARG_m(i)); | ||
| 551 | break; | 554 | break; |
| 552 | } | 555 | } |
| 553 | return buff; | 556 | return obuff; |
| 554 | } | 557 | } |
| 555 | 558 | ||
| 556 | 559 | ||
