diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-01 17:05:34 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-01 17:05:34 -0300 |
commit | 28d47a0aaa646f8762085cc7fcf8953b62df0927 (patch) | |
tree | be44656bb1a639f82c24a013f0f9d44de22f77e0 /lvm.c | |
parent | eb617df2d87f8476e722ade7319998d7912a6edf (diff) | |
download | lua-28d47a0aaa646f8762085cc7fcf8953b62df0927.tar.gz lua-28d47a0aaa646f8762085cc7fcf8953b62df0927.tar.bz2 lua-28d47a0aaa646f8762085cc7fcf8953b62df0927.zip |
all jumps have byte variants; WHILE optimization
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 64 |
1 files changed, 33 insertions, 31 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lvm.c,v 1.5 1997/09/24 19:43:11 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.6 1997/09/26 15:02:26 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 | */ |
@@ -452,8 +452,13 @@ StkId luaV_execute (Closure *cl, StkId base) | |||
452 | break; | 452 | break; |
453 | 453 | ||
454 | case CREATEARRAY: | 454 | case CREATEARRAY: |
455 | aux = next_word(pc); goto createarray; | ||
456 | |||
457 | case CREATEARRAYB: | ||
458 | aux = *pc++; | ||
459 | createarray: | ||
455 | luaC_checkGC(); | 460 | luaC_checkGC(); |
456 | avalue(luaD_stack.top) = luaH_new(next_word(pc)); | 461 | avalue(luaD_stack.top) = luaH_new(aux); |
457 | ttype(luaD_stack.top) = LUA_T_ARRAY; | 462 | ttype(luaD_stack.top) = LUA_T_ARRAY; |
458 | luaD_stack.top++; | 463 | luaD_stack.top++; |
459 | break; | 464 | break; |
@@ -565,54 +570,51 @@ StkId luaV_execute (Closure *cl, StkId base) | |||
565 | break; | 570 | break; |
566 | 571 | ||
567 | case ONTJMP: | 572 | case ONTJMP: |
568 | if (ttype(luaD_stack.top-1) != LUA_T_NIL) | 573 | if (ttype(luaD_stack.top-1) != LUA_T_NIL) pc += *pc; |
569 | pc += *pc; | 574 | else { pc++; luaD_stack.top--; } |
570 | else { | ||
571 | pc++; | ||
572 | luaD_stack.top--; | ||
573 | } | ||
574 | break; | 575 | break; |
575 | 576 | ||
576 | case ONFJMP: | 577 | case ONFJMP: |
577 | if (ttype(luaD_stack.top-1) == LUA_T_NIL) | 578 | if (ttype(luaD_stack.top-1) == LUA_T_NIL) pc += *pc; |
578 | pc += *pc; | 579 | else { pc++; luaD_stack.top--; } |
579 | else { | 580 | break; |
580 | pc++; | 581 | |
581 | luaD_stack.top--; | 582 | case JMPB: |
582 | } | 583 | pc += *pc; |
583 | break; | 584 | break; |
584 | 585 | ||
585 | case JMP: | 586 | case JMP: |
586 | pc += get_word(pc); | 587 | pc += get_word(pc); |
587 | break; | 588 | break; |
588 | 589 | ||
589 | case UPJMPB: | 590 | case IFFJMPB: |
590 | pc -= *pc; | 591 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc += *pc; |
592 | else pc++; | ||
591 | break; | 593 | break; |
592 | 594 | ||
593 | case UPJMP: | 595 | case IFFJMP: |
594 | pc -= get_word(pc); | 596 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc += get_word(pc); |
597 | else skip_word(pc); | ||
595 | break; | 598 | break; |
596 | 599 | ||
597 | case IFFJMP: | 600 | case IFTUPJMPB: |
598 | if (ttype(--luaD_stack.top) == LUA_T_NIL) | 601 | if (ttype(--luaD_stack.top) != LUA_T_NIL) pc -= *pc; |
599 | pc += get_word(pc); | 602 | else pc++; |
600 | else | 603 | break; |
601 | skip_word(pc); | 604 | |
605 | case IFTUPJMP: | ||
606 | if (ttype(--luaD_stack.top) != LUA_T_NIL) pc -= get_word(pc); | ||
607 | else skip_word(pc); | ||
602 | break; | 608 | break; |
603 | 609 | ||
604 | case IFFUPJMPB: | 610 | case IFFUPJMPB: |
605 | if (ttype(--luaD_stack.top) == LUA_T_NIL) | 611 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc -= *pc; |
606 | pc -= *pc; | 612 | else pc++; |
607 | else | ||
608 | pc++; | ||
609 | break; | 613 | break; |
610 | 614 | ||
611 | case IFFUPJMP: | 615 | case IFFUPJMP: |
612 | if (ttype(--luaD_stack.top) == LUA_T_NIL) | 616 | if (ttype(--luaD_stack.top) == LUA_T_NIL) pc -= get_word(pc); |
613 | pc -= get_word(pc); | 617 | else skip_word(pc); |
614 | else | ||
615 | skip_word(pc); | ||
616 | break; | 618 | break; |
617 | 619 | ||
618 | case CLOSURE: | 620 | case CLOSURE: |