aboutsummaryrefslogtreecommitdiff
path: root/lcode.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2001-06-08 09:29:27 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2001-06-08 09:29:27 -0300
commit0267168675cb21f19e685749e1737dfd2884bdf2 (patch)
treef547cfbf519153e4ec37b08fe104eb874f78132f /lcode.c
parentba11831d357889ee090ce92ff508957c6c023c42 (diff)
downloadlua-0267168675cb21f19e685749e1737dfd2884bdf2.tar.gz
lua-0267168675cb21f19e685749e1737dfd2884bdf2.tar.bz2
lua-0267168675cb21f19e685749e1737dfd2884bdf2.zip
details.
Diffstat (limited to 'lcode.c')
-rw-r--r--lcode.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lcode.c b/lcode.c
index 29a6bc89..e869dac3 100644
--- a/lcode.c
+++ b/lcode.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lcode.c,v 1.70 2001/06/06 18:00:19 roberto Exp roberto $ 2** $Id: lcode.c,v 1.71 2001/06/07 15:01:21 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*/
@@ -144,6 +144,12 @@ static int need_value (FuncState *fs, int list, OpCode op) {
144} 144}
145 145
146 146
147static void patchtestreg (Instruction *i, int reg) {
148 if (reg == NO_REG) reg = GETARG_B(*i);
149 SETARG_A(*i, reg);
150}
151
152
147static void luaK_patchlistaux (FuncState *fs, int list, 153static void luaK_patchlistaux (FuncState *fs, int list,
148 int ttarget, int treg, int ftarget, int freg, int dtarget) { 154 int ttarget, int treg, int ftarget, int freg, int dtarget) {
149 while (list != NO_JUMP) { 155 while (list != NO_JUMP) {
@@ -151,12 +157,12 @@ static void luaK_patchlistaux (FuncState *fs, int list,
151 Instruction *i = getjumpcontrol(fs, list); 157 Instruction *i = getjumpcontrol(fs, list);
152 switch (GET_OPCODE(*i)) { 158 switch (GET_OPCODE(*i)) {
153 case OP_TESTT: { 159 case OP_TESTT: {
154 SETARG_A(*i, treg); 160 patchtestreg(i, treg);
155 luaK_fixjump(fs, list, ttarget); 161 luaK_fixjump(fs, list, ttarget);
156 break; 162 break;
157 } 163 }
158 case OP_TESTF: { 164 case OP_TESTF: {
159 SETARG_A(*i, freg); 165 patchtestreg(i, freg);
160 luaK_fixjump(fs, list, ftarget); 166 luaK_fixjump(fs, list, ftarget);
161 break; 167 break;
162 } 168 }