aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c77
1 files changed, 41 insertions, 36 deletions
diff --git a/lvm.c b/lvm.c
index 4a24c43a..5fa8e1c6 100644
--- a/lvm.c
+++ b/lvm.c
@@ -478,36 +478,6 @@ StkId luaV_execute (lua_State *L, const Closure *cl, const TProtoFunc *tf,
478 break; 478 break;
479 } 479 }
480 480
481 case NEQOP:
482 top--;
483 setbool(top-1, !luaO_equalObj(top-1, top));
484 break;
485
486 case EQOP:
487 top--;
488 setbool(top-1, luaO_equalObj(top-1, top));
489 break;
490
491 case LTOP:
492 top--;
493 setbool(top-1, luaV_lessthan(L, top-1, top, top+1));
494 break;
495
496 case LEOP: /* a <= b === !(b<a) */
497 top--;
498 setbool(top-1, !luaV_lessthan(L, top, top-1, top+1));
499 break;
500
501 case GTOP: /* a > b === (b<a) */
502 top--;
503 setbool(top-1, luaV_lessthan(L, top, top-1, top+1));
504 break;
505
506 case GEOP: /* a >= b === !(a<b) */
507 top--;
508 setbool(top-1, !luaV_lessthan(L, top-1, top, top+1));
509 break;
510
511 case ADDOP: 481 case ADDOP:
512 if (tonumber(top-1) || tonumber(top-2)) 482 if (tonumber(top-1) || tonumber(top-2))
513 call_arith(L, top, IM_ADD); 483 call_arith(L, top, IM_ADD);
@@ -579,6 +549,44 @@ StkId luaV_execute (lua_State *L, const Closure *cl, const TProtoFunc *tf,
579 nvalue(top-1) = 1; 549 nvalue(top-1) = 1;
580 break; 550 break;
581 551
552 case IFNEQJMP:
553 top -= 2;
554 if (!luaO_equalObj(top, top+1)) pc += GETARG_S(i);
555 break;
556
557 case IFEQJMP:
558 top -= 2;
559 if (luaO_equalObj(top, top+1)) pc += GETARG_S(i);
560 break;
561
562 case IFLTJMP:
563 top -= 2;
564 if (luaV_lessthan(L, top, top+1, top+2)) pc += GETARG_S(i);
565 break;
566
567 case IFLEJMP: /* a <= b === !(b<a) */
568 top -= 2;
569 if (!luaV_lessthan(L, top+1, top, top+2)) pc += GETARG_S(i);
570 break;
571
572 case IFGTJMP: /* a > b === (b<a) */
573 top -= 2;
574 if (luaV_lessthan(L, top+1, top, top+2)) pc += GETARG_S(i);
575 break;
576
577 case IFGEJMP: /* a >= b === !(a<b) */
578 top -= 2;
579 if (!luaV_lessthan(L, top, top+1, top+2)) pc += GETARG_S(i);
580 break;
581
582 case IFTJMP:
583 if (ttype(--top) != LUA_T_NIL) pc += GETARG_S(i);
584 break;
585
586 case IFFJMP:
587 if (ttype(--top) == LUA_T_NIL) pc += GETARG_S(i);
588 break;
589
582 case ONTJMP: 590 case ONTJMP:
583 if (ttype(top-1) != LUA_T_NIL) pc += GETARG_S(i); 591 if (ttype(top-1) != LUA_T_NIL) pc += GETARG_S(i);
584 else top--; 592 else top--;
@@ -593,12 +601,9 @@ StkId luaV_execute (lua_State *L, const Closure *cl, const TProtoFunc *tf,
593 pc += GETARG_S(i); 601 pc += GETARG_S(i);
594 break; 602 break;
595 603
596 case IFTJMP: 604 case PUSHNILJMP:
597 if (ttype(--top) != LUA_T_NIL) pc += GETARG_S(i); 605 ttype(top++) = LUA_T_NIL;
598 break; 606 pc++;
599
600 case IFFJMP:
601 if (ttype(--top) == LUA_T_NIL) pc += GETARG_S(i);
602 break; 607 break;
603 608
604 case CLOSURE: 609 case CLOSURE: