diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-02-22 11:31:43 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-02-22 11:31:43 -0200 |
| commit | 3bc925138ebcb534f863b3fb32b21eb8d52aa915 (patch) | |
| tree | 6fcbc3bf92357a5e2e1651bc38c79b9bbea42a51 /lvm.c | |
| parent | 39e1f079bdf045d64ad6f1b5da1eb48cc79c6c38 (diff) | |
| download | lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.tar.gz lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.tar.bz2 lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.zip | |
first version of code optimizer
Diffstat (limited to 'lvm.c')
| -rw-r--r-- | lvm.c | 20 |
1 files changed, 18 insertions, 2 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 1.86 2000/02/11 16:52:54 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.87 2000/02/14 16:51:08 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 | */ |
| @@ -376,12 +376,18 @@ StkId luaV_execute (lua_State *L, const Closure *cl, const TProtoFunc *tf, | |||
| 376 | top++; | 376 | top++; |
| 377 | break; | 377 | break; |
| 378 | 378 | ||
| 379 | case PUSHNUMBER: | 379 | case PUSHNUM: |
| 380 | ttype(top) = LUA_T_NUMBER; | 380 | ttype(top) = LUA_T_NUMBER; |
| 381 | nvalue(top) = tf->knum[GETARG_U(i)]; | 381 | nvalue(top) = tf->knum[GETARG_U(i)]; |
| 382 | top++; | 382 | top++; |
| 383 | break; | 383 | break; |
| 384 | 384 | ||
| 385 | case PUSHNEGNUM: | ||
| 386 | ttype(top) = LUA_T_NUMBER; | ||
| 387 | nvalue(top) = -tf->knum[GETARG_U(i)]; | ||
| 388 | top++; | ||
| 389 | break; | ||
| 390 | |||
| 385 | case PUSHUPVALUE: | 391 | case PUSHUPVALUE: |
| 386 | *top++ = cl->consts[GETARG_U(i)+1]; | 392 | *top++ = cl->consts[GETARG_U(i)+1]; |
| 387 | break; | 393 | break; |
| @@ -524,6 +530,16 @@ StkId luaV_execute (lua_State *L, const Closure *cl, const TProtoFunc *tf, | |||
| 524 | top--; | 530 | top--; |
| 525 | break; | 531 | break; |
| 526 | 532 | ||
| 533 | case ADDI: | ||
| 534 | if (tonumber(top-1)) { | ||
| 535 | ttype(top) = LUA_T_NUMBER; | ||
| 536 | nvalue(top) = (real)GETARG_S(i); | ||
| 537 | call_arith(L, top+1, IM_ADD); | ||
| 538 | } | ||
| 539 | else | ||
| 540 | nvalue(top-1) += (real)GETARG_S(i); | ||
| 541 | break; | ||
| 542 | |||
| 527 | case SUBOP: | 543 | case SUBOP: |
| 528 | if (tonumber(top-1) || tonumber(top-2)) | 544 | if (tonumber(top-1) || tonumber(top-2)) |
| 529 | call_arith(L, top, IM_SUB); | 545 | call_arith(L, top, IM_SUB); |
