diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2004-06-29 15:49:02 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2004-06-29 15:49:02 -0300 |
commit | 02a2c01ccd4dda04636a30cb60b6dd52511fd790 (patch) | |
tree | e2d76d2647ca613715738f37ba1d532a149a187e /lcode.c | |
parent | 23e08a68f51b36506c5ee8571e9dca01d67b7454 (diff) | |
download | lua-02a2c01ccd4dda04636a30cb60b6dd52511fd790.tar.gz lua-02a2c01ccd4dda04636a30cb60b6dd52511fd790.tar.bz2 lua-02a2c01ccd4dda04636a30cb60b6dd52511fd790.zip |
new way to code RK values
Diffstat (limited to 'lcode.c')
-rw-r--r-- | lcode.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lcode.c,v 2.2 2004/04/30 20:13:38 roberto Exp roberto $ | 2 | ** $Id: lcode.c,v 2.3 2004/05/31 18:51:50 roberto Exp roberto $ |
3 | ** Code generator for Lua | 3 | ** Code generator for Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -418,16 +418,16 @@ int luaK_exp2RK (FuncState *fs, expdesc *e) { | |||
418 | luaK_exp2val(fs, e); | 418 | luaK_exp2val(fs, e); |
419 | switch (e->k) { | 419 | switch (e->k) { |
420 | case VNIL: { | 420 | case VNIL: { |
421 | if (fs->nk + MAXSTACK <= MAXARG_C) { /* constant fit in argC? */ | 421 | if (fs->nk <= MAXINDEXRK) { /* constant fit in RK operand? */ |
422 | e->info = nil_constant(fs); | 422 | e->info = nil_constant(fs); |
423 | e->k = VK; | 423 | e->k = VK; |
424 | return e->info + MAXSTACK; | 424 | return RKASK(e->info); |
425 | } | 425 | } |
426 | else break; | 426 | else break; |
427 | } | 427 | } |
428 | case VK: { | 428 | case VK: { |
429 | if (e->info + MAXSTACK <= MAXARG_C) /* constant fit in argC? */ | 429 | if (e->info <= MAXINDEXRK) /* constant fit in argC? */ |
430 | return e->info + MAXSTACK; | 430 | return RKASK(e->info); |
431 | else break; | 431 | else break; |
432 | } | 432 | } |
433 | default: break; | 433 | default: break; |