aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-10-06 12:51:11 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-10-06 12:51:11 -0200
commitf6a9cc9a673298dc7ee7a416fec08848e464b227 (patch)
tree4e060d0a52f8a3eecf2fe4850e7124340e21daf7 /lvm.c
parent28d47a0aaa646f8762085cc7fcf8953b62df0927 (diff)
downloadlua-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.c56
1 files changed, 28 insertions, 28 deletions
diff --git a/lvm.c b/lvm.c
index 5f9db8f9..bc0c9dd8 100644
--- a/lvm.c
+++ b/lvm.c
@@ -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: