@@ -415,7 +415,7 @@ int luaK_codeABx (FuncState *fs, OpCode o, int a, unsigned int bc) {
415415/*
416416** Format and emit an 'iAsBx' instruction.
417417*/
418- int luaK_codeAsBx (FuncState * fs , OpCode o , int a , int bc ) {
418+ static int codeAsBx (FuncState * fs , OpCode o , int a , int bc ) {
419419 unsigned int b = bc + OFFSET_sBx ;
420420 lua_assert (getOpMode (o ) == iAsBx );
421421 lua_assert (a <= MAXARG_A && b <= MAXARG_Bx );
@@ -671,7 +671,7 @@ static int fitsBx (lua_Integer i) {
671671
672672void luaK_int (FuncState * fs , int reg , lua_Integer i ) {
673673 if (fitsBx (i ))
674- luaK_codeAsBx (fs , OP_LOADI , reg , cast_int (i ));
674+ codeAsBx (fs , OP_LOADI , reg , cast_int (i ));
675675 else
676676 luaK_codek (fs , reg , luaK_intK (fs , i ));
677677}
@@ -680,7 +680,7 @@ void luaK_int (FuncState *fs, int reg, lua_Integer i) {
680680static void luaK_float (FuncState * fs , int reg , lua_Number f ) {
681681 lua_Integer fi ;
682682 if (luaV_flttointeger (f , & fi , F2Ieq ) && fitsBx (fi ))
683- luaK_codeAsBx (fs , OP_LOADF , reg , cast_int (fi ));
683+ codeAsBx (fs , OP_LOADF , reg , cast_int (fi ));
684684 else
685685 luaK_codek (fs , reg , luaK_numberK (fs , f ));
686686}
@@ -776,7 +776,8 @@ void luaK_dischargevars (FuncState *fs, expdesc *e) {
776776 break ;
777777 }
778778 case VLOCAL : { /* already in a register */
779- e -> u .info = e -> u .var .ridx ;
779+ int temp = e -> u .var .ridx ;
780+ e -> u .info = temp ; /* (can't do a direct assignment; values overlap) */
780781 e -> k = VNONRELOC ; /* becomes a non-relocatable value */
781782 break ;
782783 }
@@ -1025,7 +1026,7 @@ static int luaK_exp2K (FuncState *fs, expdesc *e) {
10251026** in the range of R/K indices).
10261027** Returns 1 iff expression is K.
10271028*/
1028- int luaK_exp2RK (FuncState * fs , expdesc * e ) {
1029+ static int exp2RK (FuncState * fs , expdesc * e ) {
10291030 if (luaK_exp2K (fs , e ))
10301031 return 1 ;
10311032 else { /* not a constant in the right range: put it in a register */
@@ -1037,7 +1038,7 @@ int luaK_exp2RK (FuncState *fs, expdesc *e) {
10371038
10381039static void codeABRK (FuncState * fs , OpCode o , int a , int b ,
10391040 expdesc * ec ) {
1040- int k = luaK_exp2RK (fs , ec );
1041+ int k = exp2RK (fs , ec );
10411042 luaK_codeABCk (fs , o , a , b , ec -> u .info , k );
10421043}
10431044
@@ -1215,7 +1216,7 @@ static void codenot (FuncState *fs, expdesc *e) {
12151216
12161217
12171218/*
1218- ** Check whether expression 'e' is a small literal string
1219+ ** Check whether expression 'e' is a short literal string
12191220*/
12201221static int isKstr (FuncState * fs , expdesc * e ) {
12211222 return (e -> k == VK && !hasjumps (e ) && e -> u .info <= MAXARG_B &&
@@ -1225,7 +1226,7 @@ static int isKstr (FuncState *fs, expdesc *e) {
12251226/*
12261227** Check whether expression 'e' is a literal integer.
12271228*/
1228- int luaK_isKint (expdesc * e ) {
1229+ static int isKint (expdesc * e ) {
12291230 return (e -> k == VKINT && !hasjumps (e ));
12301231}
12311232
@@ -1235,7 +1236,7 @@ int luaK_isKint (expdesc *e) {
12351236** proper range to fit in register C
12361237*/
12371238static int isCint (expdesc * e ) {
1238- return luaK_isKint (e ) && (l_castS2U (e -> u .ival ) <= l_castS2U (MAXARG_C ));
1239+ return isKint (e ) && (l_castS2U (e -> u .ival ) <= l_castS2U (MAXARG_C ));
12391240}
12401241
12411242
@@ -1244,7 +1245,7 @@ static int isCint (expdesc *e) {
12441245** proper range to fit in register sC
12451246*/
12461247static int isSCint (expdesc * e ) {
1247- return luaK_isKint (e ) && fitsC (e -> u .ival );
1248+ return isKint (e ) && fitsC (e -> u .ival );
12481249}
12491250
12501251
@@ -1283,15 +1284,17 @@ void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k) {
12831284 if (t -> k == VUPVAL && !isKstr (fs , k )) /* upvalue indexed by non 'Kstr'? */
12841285 luaK_exp2anyreg (fs , t ); /* put it in a register */
12851286 if (t -> k == VUPVAL ) {
1286- t -> u .ind .t = t -> u .info ; /* upvalue index */
1287- t -> u .ind .idx = k -> u .info ; /* literal string */
1287+ int temp = t -> u .info ; /* upvalue index */
1288+ lua_assert (isKstr (fs , k ));
1289+ t -> u .ind .t = temp ; /* (can't do a direct assignment; values overlap) */
1290+ t -> u .ind .idx = k -> u .info ; /* literal short string */
12881291 t -> k = VINDEXUP ;
12891292 }
12901293 else {
12911294 /* register index of the table */
12921295 t -> u .ind .t = (t -> k == VLOCAL ) ? t -> u .var .ridx : t -> u .info ;
12931296 if (isKstr (fs , k )) {
1294- t -> u .ind .idx = k -> u .info ; /* literal string */
1297+ t -> u .ind .idx = k -> u .info ; /* literal short string */
12951298 t -> k = VINDEXSTR ;
12961299 }
12971300 else if (isCint (k )) {
@@ -1459,7 +1462,7 @@ static void codebinK (FuncState *fs, BinOpr opr,
14591462*/
14601463static int finishbinexpneg (FuncState * fs , expdesc * e1 , expdesc * e2 ,
14611464 OpCode op , int line , TMS event ) {
1462- if (!luaK_isKint (e2 ))
1465+ if (!isKint (e2 ))
14631466 return 0 ; /* not an integer constant */
14641467 else {
14651468 lua_Integer i2 = e2 -> u .ival ;
@@ -1592,7 +1595,7 @@ static void codeeq (FuncState *fs, BinOpr opr, expdesc *e1, expdesc *e2) {
15921595 op = OP_EQI ;
15931596 r2 = im ; /* immediate operand */
15941597 }
1595- else if (luaK_exp2RK (fs , e2 )) { /* 2nd expression is constant? */
1598+ else if (exp2RK (fs , e2 )) { /* 2nd expression is constant? */
15961599 op = OP_EQK ;
15971600 r2 = e2 -> u .info ; /* constant index */
15981601 }
@@ -1658,7 +1661,7 @@ void luaK_infix (FuncState *fs, BinOpr op, expdesc *v) {
16581661 }
16591662 case OPR_EQ : case OPR_NE : {
16601663 if (!tonumeral (v , NULL ))
1661- luaK_exp2RK (fs , v );
1664+ exp2RK (fs , v );
16621665 /* else keep numeral, which may be an immediate operand */
16631666 break ;
16641667 }
0 commit comments