diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-06 12:51:11 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-06 12:51:11 -0200 |
commit | f6a9cc9a673298dc7ee7a416fec08848e464b227 (patch) | |
tree | 4e060d0a52f8a3eecf2fe4850e7124340e21daf7 /lvm.c | |
parent | 28d47a0aaa646f8762085cc7fcf8953b62df0927 (diff) | |
download | lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.tar.gz lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.tar.bz2 lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.zip |
jumps are relative to next instruction
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 56 |
1 files changed, 28 insertions, 28 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lvm.c,v 1.6 1997/09/26 15:02:26 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.7 1997/10/01 20:05:34 roberto Exp roberto $ |
3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -570,51 +570,51 @@ StkId luaV_execute (Closure *cl, StkId base) | |||
570 | break; | 570 | break; |
571 | 571 | ||
572 | case ONTJMP: | 572 | case ONTJMP: |
573 | if (ttype(luaD_stack.top-1) != LUA_T_NIL) pc += *pc; | 573 | aux = *pc++; |
574 | else { pc++; luaD_stack.top--; } | 574 | if (ttype(luaD_stack.top-1) != LUA_T_NIL) pc += aux; |
575 | else luaD_stack.top--; | ||
575 | break; | 576 | break; |
576 | 577 | ||
577 | case ONFJMP: | 578 | case ONFJMP: |
578 | if (ttype(luaD_stack.top-1) == LUA_T_NIL) pc += *pc; | 579 | aux = *pc++; |
579 | else { pc++; luaD_stack.top--; } | 580 | if (ttype(luaD_stack.top-1) == LUA_T_NIL) pc += aux; |
580 | break; | 581 | else luaD_stack.top--; |
581 | |||
582 | case JMPB: | ||
583 | pc += *pc; | ||
584 | break; | 582 | break; |
585 | 583 | ||
586 | case JMP: | 584 | case JMP: |
587 | pc += get_word(pc); | 585 | aux = next_word(pc); goto jmp; |
588 | break; | ||
589 | 586 | ||
590 | case IFFJMPB: | 587 | case JMPB: |
591 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc += *pc; | 588 | aux = *pc++; |
592 | else pc++; | 589 | jmp: |
590 | pc += aux; | ||
593 | break; | 591 | break; |
594 | 592 | ||
595 | case IFFJMP: | 593 | case IFFJMP: |
596 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc += get_word(pc); | 594 | aux = next_word(pc); goto iffjmp; |
597 | else skip_word(pc); | ||
598 | break; | ||
599 | 595 | ||
600 | case IFTUPJMPB: | 596 | case IFFJMPB: |
601 | if (ttype(--luaD_stack.top) != LUA_T_NIL) pc -= *pc; | 597 | aux = *pc++; |
602 | else pc++; | 598 | iffjmp: |
599 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc += aux; | ||
603 | break; | 600 | break; |
604 | 601 | ||
605 | case IFTUPJMP: | 602 | case IFTUPJMP: |
606 | if (ttype(--luaD_stack.top) != LUA_T_NIL) pc -= get_word(pc); | 603 | aux = next_word(pc); goto iftupjmp; |
607 | else skip_word(pc); | ||
608 | break; | ||
609 | 604 | ||
610 | case IFFUPJMPB: | 605 | case IFTUPJMPB: |
611 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc -= *pc; | 606 | aux = *pc++; |
612 | else pc++; | 607 | iftupjmp: |
608 | if (ttype(--luaD_stack.top) != LUA_T_NIL) pc -= aux; | ||
613 | break; | 609 | break; |
614 | 610 | ||
615 | case IFFUPJMP: | 611 | case IFFUPJMP: |
616 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc -= get_word(pc); | 612 | aux = next_word(pc); goto iffupjmp; |
617 | else skip_word(pc); | 613 | |
614 | case IFFUPJMPB: | ||
615 | aux = *pc++; | ||
616 | iffupjmp: | ||
617 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc -= aux; | ||
618 | break; | 618 | break; |
619 | 619 | ||
620 | case CLOSURE: | 620 | case CLOSURE: |