diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2020-02-27 12:59:22 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2020-02-27 12:59:22 -0300 |
commit | 6eb53b752617fae9e1329bfe2cfecdcbb593c398 (patch) | |
tree | c392ef632bbcfbf7b3716f5c6c17b06617bca8da /lcode.c | |
parent | 9b7987a9d1471ba94764286b28e0998f73deb46a (diff) | |
download | lua-6eb53b752617fae9e1329bfe2cfecdcbb593c398.tar.gz lua-6eb53b752617fae9e1329bfe2cfecdcbb593c398.tar.bz2 lua-6eb53b752617fae9e1329bfe2cfecdcbb593c398.zip |
Details
Several details in code (e.g., moving a variable to the most inner
scope that encloses its uses), comments, parameter names, extra tests.
Diffstat (limited to 'lcode.c')
-rw-r--r-- | lcode.c | 15 |
1 files changed, 5 insertions, 10 deletions
@@ -1730,17 +1730,12 @@ void luaK_fixline (FuncState *fs, int line) { | |||
1730 | } | 1730 | } |
1731 | 1731 | ||
1732 | 1732 | ||
1733 | void luaK_settablesize (FuncState *fs, int pc, int ra, int rc, int rb) { | 1733 | void luaK_settablesize (FuncState *fs, int pc, int ra, int asize, int hsize) { |
1734 | Instruction *inst = &fs->f->code[pc]; | 1734 | Instruction *inst = &fs->f->code[pc]; |
1735 | int extra = 0; | 1735 | int rb = (hsize != 0) ? luaO_ceillog2(hsize) + 1 : 0; /* hash size */ |
1736 | int k = 0; | 1736 | int extra = asize / (MAXARG_C + 1); /* higher bits of array size */ |
1737 | if (rb != 0) | 1737 | int rc = asize % (MAXARG_C + 1); /* lower bits of array size */ |
1738 | rb = luaO_ceillog2(rb) + 1; /* hash size */ | 1738 | int k = (extra > 0); /* true iff needs extra argument */ |
1739 | if (rc > MAXARG_C) { /* does it need the extra argument? */ | ||
1740 | extra = rc / (MAXARG_C + 1); | ||
1741 | rc %= (MAXARG_C + 1); | ||
1742 | k = 1; | ||
1743 | } | ||
1744 | *inst = CREATE_ABCk(OP_NEWTABLE, ra, rb, rc, k); | 1739 | *inst = CREATE_ABCk(OP_NEWTABLE, ra, rb, rc, k); |
1745 | *(inst + 1) = CREATE_Ax(OP_EXTRAARG, extra); | 1740 | *(inst + 1) = CREATE_Ax(OP_EXTRAARG, extra); |
1746 | } | 1741 | } |