diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-03-10 11:09:45 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-03-10 11:09:45 -0300 |
| commit | 26794616374fee54532d0030ae006abb77dfb7ba (patch) | |
| tree | ebc4595695eb616e66b4f63779404e8ea6644b48 /lvm.c | |
| parent | 0870a2d1d8a1434eecae1923886ba219c4e699c7 (diff) | |
| download | lua-26794616374fee54532d0030ae006abb77dfb7ba.tar.gz lua-26794616374fee54532d0030ae006abb77dfb7ba.tar.bz2 lua-26794616374fee54532d0030ae006abb77dfb7ba.zip | |
no more assignment expressions (they don't fit in Lua...)
Diffstat (limited to 'lvm.c')
| -rw-r--r-- | lvm.c | 32 |
1 files changed, 1 insertions, 31 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lvm.c,v 1.52 1999/03/04 21:15:50 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 1.53 1999/03/05 21:16:07 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 | */ |
| @@ -356,11 +356,6 @@ StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base) { | |||
| 356 | S->top -= aux; | 356 | S->top -= aux; |
| 357 | break; | 357 | break; |
| 358 | 358 | ||
| 359 | case POPDUP: aux = *pc++; | ||
| 360 | *(S->top-aux-1) = *(S->top-1); | ||
| 361 | S->top -= aux; | ||
| 362 | break; | ||
| 363 | |||
| 364 | case PUSHNUMBERW: aux += highbyte(*pc++); | 359 | case PUSHNUMBERW: aux += highbyte(*pc++); |
| 365 | case PUSHNUMBER: aux += *pc++; | 360 | case PUSHNUMBER: aux += *pc++; |
| 366 | ttype(S->top) = LUA_T_NUMBER; | 361 | ttype(S->top) = LUA_T_NUMBER; |
| @@ -424,45 +419,20 @@ StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base) { | |||
| 424 | *((S->stack+base) + aux) = *(--S->top); | 419 | *((S->stack+base) + aux) = *(--S->top); |
| 425 | break; | 420 | break; |
| 426 | 421 | ||
| 427 | case SETLOCALDUP: aux = *pc++; | ||
| 428 | *((S->stack+base) + aux) = *(S->top-1); | ||
| 429 | break; | ||
| 430 | |||
| 431 | case SETGLOBALW: aux += highbyte(*pc++); | 422 | case SETGLOBALW: aux += highbyte(*pc++); |
| 432 | case SETGLOBAL: aux += *pc++; | 423 | case SETGLOBAL: aux += *pc++; |
| 433 | luaV_setglobal(tsvalue(&consts[aux])); | 424 | luaV_setglobal(tsvalue(&consts[aux])); |
| 434 | break; | 425 | break; |
| 435 | 426 | ||
| 436 | case SETGLOBALDUPW: aux += highbyte(*pc++); | ||
| 437 | case SETGLOBALDUP: aux += *pc++; | ||
| 438 | *S->top = *(S->top-1); | ||
| 439 | S->top++; | ||
| 440 | luaV_setglobal(tsvalue(&consts[aux])); | ||
| 441 | break; | ||
| 442 | |||
| 443 | case SETTABLEPOP: | 427 | case SETTABLEPOP: |
| 444 | luaV_settable(S->top-3); | 428 | luaV_settable(S->top-3); |
| 445 | S->top -= 2; /* pop table and index */ | 429 | S->top -= 2; /* pop table and index */ |
| 446 | break; | 430 | break; |
| 447 | 431 | ||
| 448 | case SETTABLEPOPDUP: { | ||
| 449 | TObject temp = *(S->top-1); | ||
| 450 | luaV_settable(S->top-3); | ||
| 451 | S->top--; /* pop index (temp goes into "table" position) */ | ||
| 452 | *(S->top-1) = temp; | ||
| 453 | break; | ||
| 454 | } | ||
| 455 | |||
| 456 | case SETTABLE: | 432 | case SETTABLE: |
| 457 | luaV_settable(S->top-3-(*pc++)); | 433 | luaV_settable(S->top-3-(*pc++)); |
| 458 | break; | 434 | break; |
| 459 | 435 | ||
| 460 | case SETTABLEDUP: | ||
| 461 | *S->top = *(S->top-1); | ||
| 462 | S->top++; | ||
| 463 | luaV_settable(S->top-(3+1)-(*pc++)); | ||
| 464 | break; | ||
| 465 | |||
| 466 | case SETLISTW: aux += highbyte(*pc++); | 436 | case SETLISTW: aux += highbyte(*pc++); |
| 467 | case SETLIST: aux += *pc++; { | 437 | case SETLIST: aux += *pc++; { |
| 468 | int n = *(pc++); | 438 | int n = *(pc++); |
