diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-10-26 10:38:50 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-10-26 10:38:50 -0300 |
commit | 6e9b719694bffb8de711f182d405ec37d32ae0b1 (patch) | |
tree | 943fcd9aacd2f7845acfd955e1bb0a9607576fa4 /lvm.c | |
parent | 34840301b529686ce8168828b140a478a5d44b53 (diff) | |
download | lua-6e9b719694bffb8de711f182d405ec37d32ae0b1.tar.gz lua-6e9b719694bffb8de711f182d405ec37d32ae0b1.tar.bz2 lua-6e9b719694bffb8de711f182d405ec37d32ae0b1.zip |
More uniformity in code generation for 'for' loops
Added new instruction 'OP_TFORPREP' to prepare a generic for loop.
Currently it is equivalent to a jump (but with a format 'iABx',
similar to other for-loop preparing instructions), but soon it will
be the place to create upvalues for closing loop states.
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -1744,6 +1744,10 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
1744 | pc += GETARG_Bx(i); | 1744 | pc += GETARG_Bx(i); |
1745 | vmbreak; | 1745 | vmbreak; |
1746 | } | 1746 | } |
1747 | vmcase(OP_TFORPREP) { | ||
1748 | pc += GETARG_Bx(i); | ||
1749 | vmbreak; | ||
1750 | } | ||
1747 | vmcase(OP_TFORCALL) { | 1751 | vmcase(OP_TFORCALL) { |
1748 | StkId cb = ra + 3; /* call base */ | 1752 | StkId cb = ra + 3; /* call base */ |
1749 | setobjs2s(L, cb+2, ra+2); | 1753 | setobjs2s(L, cb+2, ra+2); |