aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-10-26 10:38:50 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-10-26 10:38:50 -0300
commit6e9b719694bffb8de711f182d405ec37d32ae0b1 (patch)
tree943fcd9aacd2f7845acfd955e1bb0a9607576fa4 /lvm.c
parent34840301b529686ce8168828b140a478a5d44b53 (diff)
downloadlua-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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lvm.c b/lvm.c
index 2a1ee175..35a58089 100644
--- a/lvm.c
+++ b/lvm.c
@@ -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);