浏览代码

Details (comments)

Roberto Ierusalimschy 6 年之前
父节点
当前提交
9cbf17b0f1
共有 3 个文件被更改,包括 11 次插入4 次删除
  1. 5 1
      lapi.c
  2. 4 1
      llimits.h
  3. 2 2
      lparser.c

+ 5 - 1
lapi.c

@@ -38,7 +38,11 @@ const char lua_ident[] =
 
 
 
-/* test for a valid index */
+/*
+** Test for a valid index.
+** '!ttisnil(o)' implies 'o != &G(L)->nilvalue', so it is not needed.
+** However, it covers the most common cases in a faster way.
+*/
 #define isvalid(L, o)	(!ttisnil(o) || o != &G(L)->nilvalue)
 
 

+ 4 - 1
llimits.h

@@ -298,7 +298,10 @@ typedef unsigned long Instruction;
 ** so it is better to use 'fmod'. 'fmod' gives the result of
 ** 'a - trunc(a/b)*b', and therefore must be corrected when
 ** 'trunc(a/b) ~= floor(a/b)'. That happens when the division has a
-** non-integer negative result, which is equivalent to the tests below.
+** non-integer negative result: non-integer result is equivalent to
+** a non-zero remainder 'm'; negative result is equivalent to 'a' and
+** 'b' with different signs, or 'm' and 'b' with different signs
+** (as the result 'm' of 'fmod' has the same sign of 'a').
 */
 #if !defined(luai_nummod)
 #define luai_nummod(L,a,b,m)  \

+ 2 - 2
lparser.c

@@ -1171,9 +1171,9 @@ static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) {
     suffixedexp(ls, &nv.v);
     if (!vkisindexed(nv.v.k))
       check_conflict(ls, lh, &nv.v);
-    luaE_incCcalls(ls->L);  /* control recursion depth */
+    enterlevel(ls);  /* control recursion depth */
     assignment(ls, &nv, nvars+1);
-    ls->L->nCcalls--;
+    leavelevel(ls);
   }
   else {  /* assignment -> '=' explist */
     int nexps;