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 | ||