diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2016-01-05 14:22:37 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2016-01-05 14:22:37 -0200 |
commit | 1f259be52a6ac8f7cfdee3787ffbf7dd0966748e (patch) | |
tree | bf26e713d78c5d95c7c18b438f582accd9b0ac44 | |
parent | 1a44e822009752513ce895b9eabc51a4ee4a195a (diff) | |
download | lua-1f259be52a6ac8f7cfdee3787ffbf7dd0966748e.tar.gz lua-1f259be52a6ac8f7cfdee3787ffbf7dd0966748e.tar.bz2 lua-1f259be52a6ac8f7cfdee3787ffbf7dd0966748e.zip |
'getcode' -> 'getinstruction'
-rw-r--r-- | lcode.c | 27 | ||||
-rw-r--r-- | lcode.h | 5 | ||||
-rw-r--r-- | lparser.c | 8 |
3 files changed, 22 insertions, 18 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lcode.c,v 2.106 2015/12/18 13:53:36 roberto Exp roberto $ | 2 | ** $Id: lcode.c,v 2.107 2016/01/04 13:40:57 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 | */ |
@@ -514,11 +514,12 @@ static int nilK (FuncState *fs) { | |||
514 | */ | 514 | */ |
515 | void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) { | 515 | void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) { |
516 | if (e->k == VCALL) { /* expression is an open function call? */ | 516 | if (e->k == VCALL) { /* expression is an open function call? */ |
517 | SETARG_C(getcode(fs, e), nresults+1); | 517 | SETARG_C(getinstruction(fs, e), nresults + 1); |
518 | } | 518 | } |
519 | else if (e->k == VVARARG) { | 519 | else if (e->k == VVARARG) { |
520 | SETARG_B(getcode(fs, e), nresults+1); | 520 | Instruction *pc = &getinstruction(fs, e); |
521 | SETARG_A(getcode(fs, e), fs->freereg); | 521 | SETARG_B(*pc, nresults + 1); |
522 | SETARG_A(*pc, fs->freereg); | ||
522 | luaK_reserveregs(fs, 1); | 523 | luaK_reserveregs(fs, 1); |
523 | } | 524 | } |
524 | else lua_assert(nresults == LUA_MULTRET); | 525 | else lua_assert(nresults == LUA_MULTRET); |
@@ -537,12 +538,13 @@ void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) { | |||
537 | */ | 538 | */ |
538 | void luaK_setoneret (FuncState *fs, expdesc *e) { | 539 | void luaK_setoneret (FuncState *fs, expdesc *e) { |
539 | if (e->k == VCALL) { /* expression is an open function call? */ | 540 | if (e->k == VCALL) { /* expression is an open function call? */ |
540 | lua_assert(GETARG_C(getcode(fs, e)) == 2); /* already returns 1 value */ | 541 | /* already returns 1 value */ |
542 | lua_assert(GETARG_C(getinstruction(fs, e)) == 2); | ||
541 | e->k = VNONRELOC; /* result has fixed position */ | 543 | e->k = VNONRELOC; /* result has fixed position */ |
542 | e->u.info = GETARG_A(getcode(fs, e)); | 544 | e->u.info = GETARG_A(getinstruction(fs, e)); |
543 | } | 545 | } |
544 | else if (e->k == VVARARG) { | 546 | else if (e->k == VVARARG) { |
545 | SETARG_B(getcode(fs, e), 2); | 547 | SETARG_B(getinstruction(fs, e), 2); |
546 | e->k = VRELOCABLE; /* can relocate its simple result */ | 548 | e->k = VRELOCABLE; /* can relocate its simple result */ |
547 | } | 549 | } |
548 | } | 550 | } |
@@ -614,7 +616,7 @@ static void discharge2reg (FuncState *fs, expdesc *e, int reg) { | |||
614 | break; | 616 | break; |
615 | } | 617 | } |
616 | case VRELOCABLE: { | 618 | case VRELOCABLE: { |
617 | Instruction *pc = &getcode(fs, e); | 619 | Instruction *pc = &getinstruction(fs, e); |
618 | SETARG_A(*pc, reg); /* instruction will put result in 'reg' */ | 620 | SETARG_A(*pc, reg); /* instruction will put result in 'reg' */ |
619 | break; | 621 | break; |
620 | } | 622 | } |
@@ -836,7 +838,7 @@ static void negatecondition (FuncState *fs, expdesc *e) { | |||
836 | */ | 838 | */ |
837 | static int jumponcond (FuncState *fs, expdesc *e, int cond) { | 839 | static int jumponcond (FuncState *fs, expdesc *e, int cond) { |
838 | if (e->k == VRELOCABLE) { | 840 | if (e->k == VRELOCABLE) { |
839 | Instruction ie = getcode(fs, e); | 841 | Instruction ie = getinstruction(fs, e); |
840 | if (GET_OPCODE(ie) == OP_NOT) { | 842 | if (GET_OPCODE(ie) == OP_NOT) { |
841 | fs->pc--; /* remove previous OP_NOT */ | 843 | fs->pc--; /* remove previous OP_NOT */ |
842 | return condjump(fs, OP_TEST, GETARG_B(ie), 0, !cond); | 844 | return condjump(fs, OP_TEST, GETARG_B(ie), 0, !cond); |
@@ -1134,10 +1136,11 @@ void luaK_posfix (FuncState *fs, BinOpr op, | |||
1134 | } | 1136 | } |
1135 | case OPR_CONCAT: { | 1137 | case OPR_CONCAT: { |
1136 | luaK_exp2val(fs, e2); | 1138 | luaK_exp2val(fs, e2); |
1137 | if (e2->k == VRELOCABLE && GET_OPCODE(getcode(fs, e2)) == OP_CONCAT) { | 1139 | if (e2->k == VRELOCABLE && |
1138 | lua_assert(e1->u.info == GETARG_B(getcode(fs, e2))-1); | 1140 | GET_OPCODE(getinstruction(fs, e2)) == OP_CONCAT) { |
1141 | lua_assert(e1->u.info == GETARG_B(getinstruction(fs, e2))-1); | ||
1139 | freeexp(fs, e1); | 1142 | freeexp(fs, e1); |
1140 | SETARG_B(getcode(fs, e2), e1->u.info); | 1143 | SETARG_B(getinstruction(fs, e2), e1->u.info); |
1141 | e1->k = VRELOCABLE; e1->u.info = e2->u.info; | 1144 | e1->k = VRELOCABLE; e1->u.info = e2->u.info; |
1142 | } | 1145 | } |
1143 | else { | 1146 | else { |
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lcode.h,v 1.62 2013/12/18 14:12:03 roberto Exp roberto $ | 2 | ** $Id: lcode.h,v 1.63 2013/12/30 20:47:58 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 | */ |
@@ -40,7 +40,8 @@ typedef enum BinOpr { | |||
40 | typedef enum UnOpr { OPR_MINUS, OPR_BNOT, OPR_NOT, OPR_LEN, OPR_NOUNOPR } UnOpr; | 40 | typedef enum UnOpr { OPR_MINUS, OPR_BNOT, OPR_NOT, OPR_LEN, OPR_NOUNOPR } UnOpr; |
41 | 41 | ||
42 | 42 | ||
43 | #define getcode(fs,e) ((fs)->f->code[(e)->u.info]) | 43 | /* get (pointer to) instruction of given 'expdesc' */ |
44 | #define getinstruction(fs,e) ((fs)->f->code[(e)->u.info]) | ||
44 | 45 | ||
45 | #define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx) | 46 | #define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx) |
46 | 47 | ||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lparser.c,v 2.149 2015/11/02 16:09:30 roberto Exp roberto $ | 2 | ** $Id: lparser.c,v 2.150 2015/12/09 15:21:28 roberto Exp roberto $ |
3 | ** Lua Parser | 3 | ** Lua Parser |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -1498,7 +1498,7 @@ static void exprstat (LexState *ls) { | |||
1498 | } | 1498 | } |
1499 | else { /* stat -> func */ | 1499 | else { /* stat -> func */ |
1500 | check_condition(ls, v.v.k == VCALL, "syntax error"); | 1500 | check_condition(ls, v.v.k == VCALL, "syntax error"); |
1501 | SETARG_C(getcode(fs, &v.v), 1); /* call statement uses no results */ | 1501 | SETARG_C(getinstruction(fs, &v.v), 1); /* call statement uses no results */ |
1502 | } | 1502 | } |
1503 | } | 1503 | } |
1504 | 1504 | ||
@@ -1515,8 +1515,8 @@ static void retstat (LexState *ls) { | |||
1515 | if (hasmultret(e.k)) { | 1515 | if (hasmultret(e.k)) { |
1516 | luaK_setmultret(fs, &e); | 1516 | luaK_setmultret(fs, &e); |
1517 | if (e.k == VCALL && nret == 1) { /* tail call? */ | 1517 | if (e.k == VCALL && nret == 1) { /* tail call? */ |
1518 | SET_OPCODE(getcode(fs,&e), OP_TAILCALL); | 1518 | SET_OPCODE(getinstruction(fs,&e), OP_TAILCALL); |
1519 | lua_assert(GETARG_A(getcode(fs,&e)) == fs->nactvar); | 1519 | lua_assert(GETARG_A(getinstruction(fs,&e)) == fs->nactvar); |
1520 | } | 1520 | } |
1521 | first = fs->nactvar; | 1521 | first = fs->nactvar; |
1522 | nret = LUA_MULTRET; /* return all values */ | 1522 | nret = LUA_MULTRET; /* return all values */ |