Updated Lua host compiler to 5.1.4
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 24 Aug 2008 16:06:34 +0000 (16:06 +0000)
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 24 Aug 2008 16:06:34 +0000 (16:06 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12384 3c298f89-4303-0410-b956-a3cf2f4a3e73

tools/lua/Makefile
tools/lua/patches/010-lua-5.1.3-lnum-full-260308.patch
tools/lua/patches/020-shared_liblua.patch
tools/lua/patches/030-archindependent-bytecode.patch
tools/lua/patches/300-opcode_performance.patch [new file with mode: 0644]

index 7b1f28f..1bebe09 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lua
-PKG_VERSION:=5.1.3
+PKG_VERSION:=5.1.4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.lua.org/ftp/ \
        http://ftp.gwdg.de/pub/languages/lua/ \
        http://mirrors.dotsrc.org/lua/ \
        http://www.tecgraf.puc-rio.br/lua/ftp/
-PKG_MD5SUM:=a70a8dfaa150e047866dc01a46272599
+PKG_MD5SUM:=d0870f2de55d59c1c8419f36e8fac150
 
 include $(INCLUDE_DIR)/host-build.mk
 
index a9cc95f..32c39f3 100644 (file)
@@ -1,6 +1,7 @@
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/Makefile lua-5.1.3-patched/src/Makefile
---- ../lua-5.1.3/src/Makefile  2008-01-19 21:37:58.000000000 +0200
-+++ lua-5.1.3-patched/src/Makefile     2008-03-26 13:05:24.000000000 +0200
+Index: lua-5.1.4/src/Makefile
+===================================================================
+--- lua-5.1.4.orig/src/Makefile        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/Makefile     2008-08-24 16:48:20.000000000 +0200
 @@ -25,7 +25,7 @@
  LUA_A=        liblua.a
  CORE_O=       lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
@@ -37,9 +38,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/Makefile lua-5.1.3
 +print.c: lnum.h
 +
  # (end of Makefile)
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-patched/src/lapi.c
---- ../lua-5.1.3/src/lapi.c    2008-01-03 17:20:39.000000000 +0200
-+++ lua-5.1.3-patched/src/lapi.c       2008-03-19 09:52:15.000000000 +0200
+Index: lua-5.1.4/src/lapi.c
+===================================================================
+--- lua-5.1.4.orig/src/lapi.c  2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lapi.c       2008-08-24 16:48:20.000000000 +0200
 @@ -28,7 +28,7 @@
  #include "ltm.h"
  #include "lundump.h"
@@ -49,7 +51,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
  
  
  const char lua_ident[] =
-@@ -242,12 +242,13 @@
+@@ -241,12 +241,13 @@
  
  LUA_API int lua_type (lua_State *L, int idx) {
    StkId o = index2adr(L, idx);
@@ -64,7 +66,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
    return (t == LUA_TNONE) ? "no value" : luaT_typenames[t];
  }
  
-@@ -265,6 +266,14 @@
+@@ -264,6 +265,14 @@
  }
  
  
@@ -79,7 +81,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
  LUA_API int lua_isstring (lua_State *L, int idx) {
    int t = lua_type(L, idx);
    return (t == LUA_TSTRING || t == LUA_TNUMBER);
-@@ -310,31 +319,66 @@
+@@ -309,31 +318,66 @@
  }
  
  
@@ -156,7 +158,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
  LUA_API int lua_toboolean (lua_State *L, int idx) {
    const TValue *o = index2adr(L, idx);
    return !l_isfalse(o);
-@@ -365,6 +409,7 @@
+@@ -364,6 +408,7 @@
      case LUA_TSTRING: return tsvalue(o)->len;
      case LUA_TUSERDATA: return uvalue(o)->len;
      case LUA_TTABLE: return luaH_getn(hvalue(o));
@@ -164,7 +166,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
      case LUA_TNUMBER: {
        size_t l;
        lua_lock(L);  /* `luaV_tostring' may create a new string */
-@@ -427,6 +472,8 @@
+@@ -426,6 +471,8 @@
  }
  
  
@@ -173,7 +175,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
  LUA_API void lua_pushnumber (lua_State *L, lua_Number n) {
    lua_lock(L);
    setnvalue(L->top, n);
-@@ -435,12 +482,22 @@
+@@ -434,12 +481,22 @@
  }
  
  
@@ -198,7 +200,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
  
  
  LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) {
-@@ -570,7 +627,7 @@
+@@ -569,7 +626,7 @@
    lua_lock(L);
    o = index2adr(L, idx);
    api_check(L, ttistable(o));
@@ -207,7 +209,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
    api_incr_top(L);
    lua_unlock(L);
  }
-@@ -598,6 +655,9 @@
+@@ -597,6 +654,9 @@
      case LUA_TUSERDATA:
        mt = uvalue(obj)->metatable;
        break;
@@ -217,7 +219,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
      default:
        mt = G(L)->mt[ttype(obj)];
        break;
-@@ -688,7 +748,7 @@
+@@ -687,7 +747,7 @@
    api_checknelems(L, 1);
    o = index2adr(L, idx);
    api_check(L, ttistable(o));
@@ -226,7 +228,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
    luaC_barriert(L, hvalue(o), L->top-1);
    L->top--;
    lua_unlock(L);
-@@ -722,7 +782,7 @@
+@@ -721,7 +781,7 @@
        break;
      }
      default: {
@@ -235,7 +237,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
        break;
      }
    }
-@@ -1083,3 +1143,32 @@
+@@ -1085,3 +1145,32 @@
    return name;
  }
  
@@ -268,9 +270,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.c lua-5.1.3-p
 +  else lua_pushnumber( L, nvalue_fast(o) );
 +  return 1;
 +}
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.h lua-5.1.3-patched/src/lapi.h
---- ../lua-5.1.3/src/lapi.h    2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lapi.h       2008-03-03 12:47:53.000000000 +0200
+Index: lua-5.1.4/src/lapi.h
+===================================================================
+--- lua-5.1.4.orig/src/lapi.h  2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lapi.h       2008-08-24 16:48:20.000000000 +0200
 @@ -13,4 +13,6 @@
  
  LUAI_FUNC void luaA_pushobject (lua_State *L, const TValue *o);
@@ -278,10 +281,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lapi.h lua-5.1.3-p
 +int lua_pushvalue_as_number (lua_State *L, int idx);
 +
  #endif
-Binary files ../lua-5.1.3/src/lapi.o and lua-5.1.3-patched/src/lapi.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lauxlib.c lua-5.1.3-patched/src/lauxlib.c
---- ../lua-5.1.3/src/lauxlib.c 2008-01-21 15:20:51.000000000 +0200
-+++ lua-5.1.3-patched/src/lauxlib.c    2008-03-19 09:51:27.000000000 +0200
+Index: lua-5.1.4/src/lauxlib.c
+===================================================================
+--- lua-5.1.4.orig/src/lauxlib.c       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lauxlib.c    2008-08-24 16:48:20.000000000 +0200
 @@ -23,7 +23,7 @@
  #include "lua.h"
  
@@ -328,9 +331,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lauxlib.c lua-5.1.
  LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event) {
    if (!lua_getmetatable(L, obj))  /* no metatable? */
      return 0;
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lauxlib.h lua-5.1.3-patched/src/lauxlib.h
---- ../lua-5.1.3/src/lauxlib.h 2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lauxlib.h    2008-03-12 23:15:22.000000000 +0200
+Index: lua-5.1.4/src/lauxlib.h
+===================================================================
+--- lua-5.1.4.orig/src/lauxlib.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lauxlib.h    2008-08-24 16:48:20.000000000 +0200
 @@ -57,6 +57,12 @@
  LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg);
  LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg,
@@ -344,10 +348,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lauxlib.h lua-5.1.
  
  LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
  LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t);
-Binary files ../lua-5.1.3/src/lauxlib.o and lua-5.1.3-patched/src/lauxlib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lbaselib.c lua-5.1.3-patched/src/lbaselib.c
---- ../lua-5.1.3/src/lbaselib.c        2008-01-20 15:53:22.000000000 +0200
-+++ lua-5.1.3-patched/src/lbaselib.c   2008-03-13 10:42:50.000000000 +0200
+Index: lua-5.1.4/src/lbaselib.c
+===================================================================
+--- lua-5.1.4.orig/src/lbaselib.c      2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lbaselib.c   2008-08-24 16:48:20.000000000 +0200
 @@ -18,7 +18,9 @@
  
  #include "lauxlib.h"
@@ -408,7 +412,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lbaselib.c lua-5.1
        return 1;
      }
    }
-@@ -629,6 +636,8 @@
+@@ -631,6 +638,8 @@
    luaL_register(L, "_G", base_funcs);
    lua_pushliteral(L, LUA_VERSION);
    lua_setglobal(L, "_VERSION");  /* set global _VERSION */
@@ -417,10 +421,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lbaselib.c lua-5.1
    /* `ipairs' and `pairs' need auxliliary functions as upvalues */
    auxopen(L, "ipairs", luaB_ipairs, ipairsaux);
    auxopen(L, "pairs", luaB_pairs, luaB_next);
-Binary files ../lua-5.1.3/src/lbaselib.o and lua-5.1.3-patched/src/lbaselib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lcode.c lua-5.1.3-patched/src/lcode.c
---- ../lua-5.1.3/src/lcode.c   2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/lcode.c      2008-03-19 10:02:51.000000000 +0200
+Index: lua-5.1.4/src/lcode.c
+===================================================================
+--- lua-5.1.4.orig/src/lcode.c 2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lcode.c      2008-08-24 16:48:20.000000000 +0200
 @@ -22,13 +22,18 @@
  #include "lopcodes.h"
  #include "lparser.h"
@@ -634,9 +638,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lcode.c lua-5.1.3-
    switch (op) {
      case OPR_MINUS: {
        if (!isnumeral(e))
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lcode.h lua-5.1.3-patched/src/lcode.h
---- ../lua-5.1.3/src/lcode.h   2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lcode.h      2008-03-03 12:47:53.000000000 +0200
+Index: lua-5.1.4/src/lcode.h
+===================================================================
+--- lua-5.1.4.orig/src/lcode.h 2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lcode.h      2008-08-24 16:48:20.000000000 +0200
 @@ -71,6 +71,6 @@
  LUAI_FUNC void luaK_infix (FuncState *fs, BinOpr op, expdesc *v);
  LUAI_FUNC void luaK_posfix (FuncState *fs, BinOpr op, expdesc *v1, expdesc *v2);
@@ -645,11 +650,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lcode.h lua-5.1.3-
 +LUAI_FUNC int luaK_integerK (FuncState *fs, lua_Integer r);
  
  #endif
-Binary files ../lua-5.1.3/src/lcode.o and lua-5.1.3-patched/src/lcode.o differ
-Binary files ../lua-5.1.3/src/ldblib.o and lua-5.1.3-patched/src/ldblib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldebug.c lua-5.1.3-patched/src/ldebug.c
---- ../lua-5.1.3/src/ldebug.c  2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/ldebug.c     2008-03-06 22:41:08.000000000 +0200
+Index: lua-5.1.4/src/ldebug.c
+===================================================================
+--- lua-5.1.4.orig/src/ldebug.c        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ldebug.c     2008-08-24 16:48:20.000000000 +0200
 @@ -183,7 +183,7 @@
      int *lineinfo = f->l.p->lineinfo;
      int i;
@@ -659,7 +663,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldebug.c lua-5.1.3
      sethvalue(L, L->top, t); 
    }
    incr_top(L);
-@@ -550,7 +550,7 @@
+@@ -566,7 +566,7 @@
  
  void luaG_typeerror (lua_State *L, const TValue *o, const char *op) {
    const char *name = NULL;
@@ -668,7 +672,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldebug.c lua-5.1.3
    const char *kind = (isinstack(L->ci, o)) ?
                           getobjname(L, L->ci, cast_int(o - L->base), &name) :
                           NULL;
-@@ -578,8 +578,8 @@
+@@ -594,8 +594,8 @@
  
  
  int luaG_ordererror (lua_State *L, const TValue *p1, const TValue *p2) {
@@ -679,10 +683,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldebug.c lua-5.1.3
    if (t1[2] == t2[2])
      luaG_runerror(L, "attempt to compare two %s values", t1);
    else
-Binary files ../lua-5.1.3/src/ldebug.o and lua-5.1.3-patched/src/ldebug.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldo.c lua-5.1.3-patched/src/ldo.c
---- ../lua-5.1.3/src/ldo.c     2008-01-19 00:31:22.000000000 +0200
-+++ lua-5.1.3-patched/src/ldo.c        2008-03-06 22:41:31.000000000 +0200
+Index: lua-5.1.4/src/ldo.c
+===================================================================
+--- lua-5.1.4.orig/src/ldo.c   2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ldo.c        2008-08-24 16:48:20.000000000 +0200
 @@ -219,9 +219,9 @@
      luaC_checkGC(L);
      htab = luaH_new(L, nvar, 1);  /* create `arg' table */
@@ -695,10 +699,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldo.c lua-5.1.3-pa
    }
  #endif
    /* move fixed parameters to final position */
-Binary files ../lua-5.1.3/src/ldo.o and lua-5.1.3-patched/src/ldo.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldump.c lua-5.1.3-patched/src/ldump.c
---- ../lua-5.1.3/src/ldump.c   2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/ldump.c      2008-03-03 12:47:53.000000000 +0200
+Index: lua-5.1.4/src/ldump.c
+===================================================================
+--- lua-5.1.4.orig/src/ldump.c 2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ldump.c      2008-08-24 16:48:20.000000000 +0200
 @@ -52,6 +52,11 @@
   DumpVar(x,D);
  }
@@ -724,14 +728,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ldump.c lua-5.1.3-
     case LUA_TSTRING:
        DumpString(rawtsvalue(o),D);
        break;
-Binary files ../lua-5.1.3/src/ldump.o and lua-5.1.3-patched/src/ldump.o differ
-Binary files ../lua-5.1.3/src/lfunc.o and lua-5.1.3-patched/src/lfunc.o differ
-Binary files ../lua-5.1.3/src/lgc.o and lua-5.1.3-patched/src/lgc.o differ
-Binary files ../lua-5.1.3/src/liblua.a and lua-5.1.3-patched/src/liblua.a differ
-Binary files ../lua-5.1.3/src/linit.o and lua-5.1.3-patched/src/linit.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/liolib.c lua-5.1.3-patched/src/liolib.c
---- ../lua-5.1.3/src/liolib.c  2008-01-18 19:47:43.000000000 +0200
-+++ lua-5.1.3-patched/src/liolib.c     2008-03-19 10:10:09.000000000 +0200
+Index: lua-5.1.4/src/liolib.c
+===================================================================
+--- lua-5.1.4.orig/src/liolib.c        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/liolib.c     2008-08-24 16:48:20.000000000 +0200
 @@ -9,6 +9,7 @@
  #include <stdio.h>
  #include <stdlib.h>
@@ -846,10 +846,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/liolib.c lua-5.1.3
    int res = setvbuf(f, NULL, mode[op], sz);
    return pushresult(L, res == 0, NULL);
  }
-Binary files ../lua-5.1.3/src/liolib.o and lua-5.1.3-patched/src/liolib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llex.c lua-5.1.3-patched/src/llex.c
---- ../lua-5.1.3/src/llex.c    2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/llex.c       2008-03-04 11:10:30.000000000 +0200
+Index: lua-5.1.4/src/llex.c
+===================================================================
+--- lua-5.1.4.orig/src/llex.c  2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/llex.c       2008-08-24 16:48:20.000000000 +0200
 @@ -22,6 +22,7 @@
  #include "lstring.h"
  #include "ltable.h"
@@ -962,9 +962,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llex.c lua-5.1.3-p
          }
          else if (isalpha(ls->current) || ls->current == '_') {
            /* identifier or reserved word */
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llex.h lua-5.1.3-patched/src/llex.h
---- ../lua-5.1.3/src/llex.h    2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/llex.h       2008-03-04 11:12:08.000000000 +0200
+Index: lua-5.1.4/src/llex.h
+===================================================================
+--- lua-5.1.4.orig/src/llex.h  2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/llex.h       2008-08-24 16:48:20.000000000 +0200
 @@ -29,19 +29,22 @@
    TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE,
    /* other terminal symbols */
@@ -993,10 +994,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llex.h lua-5.1.3-p
    TString *ts;
  } SemInfo;  /* semantics information */
  
-Binary files ../lua-5.1.3/src/llex.o and lua-5.1.3-patched/src/llex.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llimits.h lua-5.1.3-patched/src/llimits.h
---- ../lua-5.1.3/src/llimits.h 2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/llimits.h    2008-03-04 11:16:43.000000000 +0200
+Index: lua-5.1.4/src/llimits.h
+===================================================================
+--- lua-5.1.4.orig/src/llimits.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/llimits.h    2008-08-24 16:48:20.000000000 +0200
 @@ -49,6 +49,7 @@
  
  /* result of a `usual argument conversion' over lua_Number */
@@ -1013,9 +1014,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/llimits.h lua-5.1.
  /*
  ** type for virtual-machine instructions
  ** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h)
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lmathlib.c lua-5.1.3-patched/src/lmathlib.c
---- ../lua-5.1.3/src/lmathlib.c        2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lmathlib.c   2008-03-26 11:32:25.000000000 +0200
+Index: lua-5.1.4/src/lmathlib.c
+===================================================================
+--- lua-5.1.4.orig/src/lmathlib.c      2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lmathlib.c   2008-08-24 16:48:20.000000000 +0200
 @@ -4,7 +4,6 @@
  ** See Copyright Notice in lua.h
  */
@@ -1429,11 +1431,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lmathlib.c lua-5.1
  #if defined(LUA_COMPAT_MOD)
    lua_getfield(L, -1, "fmod");
    lua_setfield(L, -2, "mod");
-Binary files ../lua-5.1.3/src/lmathlib.o and lua-5.1.3-patched/src/lmathlib.o differ
-Binary files ../lua-5.1.3/src/lmem.o and lua-5.1.3-patched/src/lmem.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum.c lua-5.1.3-patched/src/lnum.c
---- ../lua-5.1.3/src/lnum.c    1970-01-01 02:00:00.000000000 +0200
-+++ lua-5.1.3-patched/src/lnum.c       2008-03-26 11:32:25.000000000 +0200
+Index: lua-5.1.4/src/lnum.c
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ lua-5.1.4/src/lnum.c       2008-08-24 16:48:20.000000000 +0200
 @@ -0,0 +1,312 @@
 +/*
 +** $Id: lnum.c,v ... $
@@ -1747,9 +1748,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum.c lua-5.1.3-p
 +  return 0;
 +}
 +
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum.h lua-5.1.3-patched/src/lnum.h
---- ../lua-5.1.3/src/lnum.h    1970-01-01 02:00:00.000000000 +0200
-+++ lua-5.1.3-patched/src/lnum.h       2008-03-19 11:35:51.000000000 +0200
+Index: lua-5.1.4/src/lnum.h
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ lua-5.1.4/src/lnum.h       2008-08-24 16:48:20.000000000 +0200
 @@ -0,0 +1,116 @@
 +/*
 +** $Id: lnum.h,v ... $
@@ -1867,10 +1869,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum.h lua-5.1.3-p
 +{ lua_Integer _i; if (tt_integer_valued(o,&_i)) setivalue(o,_i); }
 +
 +#endif
-Binary files ../lua-5.1.3/src/lnum.o and lua-5.1.3-patched/src/lnum.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum_config.h lua-5.1.3-patched/src/lnum_config.h
---- ../lua-5.1.3/src/lnum_config.h     1970-01-01 02:00:00.000000000 +0200
-+++ lua-5.1.3-patched/src/lnum_config.h        2008-03-26 11:32:25.000000000 +0200
+Index: lua-5.1.4/src/lnum_config.h
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ lua-5.1.4/src/lnum_config.h        2008-08-24 16:48:20.000000000 +0200
 @@ -0,0 +1,221 @@
 +/*
 +** $Id: lnum_config.h,v ... $
@@ -2093,10 +2095,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lnum_config.h lua-
 +
 +#endif
 +
-Binary files ../lua-5.1.3/src/loadlib.o and lua-5.1.3-patched/src/loadlib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lobject.c lua-5.1.3-patched/src/lobject.c
---- ../lua-5.1.3/src/lobject.c 2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lobject.c    2008-03-14 11:08:49.000000000 +0200
+Index: lua-5.1.4/src/lobject.c
+===================================================================
+--- lua-5.1.4.orig/src/lobject.c       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lobject.c    2008-08-24 16:48:20.000000000 +0200
 @@ -21,7 +21,8 @@
  #include "lstate.h"
  #include "lstring.h"
@@ -2181,9 +2183,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lobject.c lua-5.1.
    }
  }
 +
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lobject.h lua-5.1.3-patched/src/lobject.h
---- ../lua-5.1.3/src/lobject.h 2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lobject.h    2008-03-19 11:40:13.000000000 +0200
+Index: lua-5.1.4/src/lobject.h
+===================================================================
+--- lua-5.1.4.orig/src/lobject.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lobject.h    2008-08-24 16:48:20.000000000 +0200
 @@ -17,7 +17,11 @@
  
  
@@ -2317,11 +2320,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lobject.h lua-5.1.
 -
  #endif
  
-Binary files ../lua-5.1.3/src/lobject.o and lua-5.1.3-patched/src/lobject.o differ
-Binary files ../lua-5.1.3/src/lopcodes.o and lua-5.1.3-patched/src/lopcodes.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/loslib.c lua-5.1.3-patched/src/loslib.c
---- ../lua-5.1.3/src/loslib.c  2008-01-18 18:38:18.000000000 +0200
-+++ lua-5.1.3-patched/src/loslib.c     2008-03-19 11:02:22.000000000 +0200
+Index: lua-5.1.4/src/loslib.c
+===================================================================
+--- lua-5.1.4.orig/src/loslib.c        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/loslib.c     2008-08-24 16:48:20.000000000 +0200
 @@ -186,15 +186,30 @@
    }
    if (t == (time_t)(-1))
@@ -2355,10 +2357,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/loslib.c lua-5.1.3
    return 1;
  }
  
-Binary files ../lua-5.1.3/src/loslib.o and lua-5.1.3-patched/src/loslib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lparser.c lua-5.1.3-patched/src/lparser.c
---- ../lua-5.1.3/src/lparser.c 2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/lparser.c    2008-03-06 21:58:41.000000000 +0200
+Index: lua-5.1.4/src/lparser.c
+===================================================================
+--- lua-5.1.4.orig/src/lparser.c       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lparser.c    2008-08-24 16:48:20.000000000 +0200
 @@ -33,7 +33,6 @@
  
  #define luaY_checklimit(fs,v,l,m)     if ((v)>(l)) errorlimit(fs,l,m)
@@ -2404,9 +2406,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lparser.c lua-5.1.
      luaK_reserveregs(fs, 1);
    }
    forbody(ls, base, line, 1, 1);
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lparser.h lua-5.1.3-patched/src/lparser.h
---- ../lua-5.1.3/src/lparser.h 2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lparser.h    2008-03-06 22:01:11.000000000 +0200
+Index: lua-5.1.4/src/lparser.h
+===================================================================
+--- lua-5.1.4.orig/src/lparser.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lparser.h    2008-08-24 16:48:20.000000000 +0200
 @@ -31,7 +31,11 @@
    VRELOCABLE, /* info = instruction pc */
    VNONRELOC,  /* info = result register */
@@ -2428,13 +2431,11 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lparser.h lua-5.1.
    } u;
    int t;  /* patch list of `exit when true' */
    int f;  /* patch list of `exit when false' */
-Binary files ../lua-5.1.3/src/lparser.o and lua-5.1.3-patched/src/lparser.o differ
-Binary files ../lua-5.1.3/src/lstate.o and lua-5.1.3-patched/src/lstate.o differ
-Binary files ../lua-5.1.3/src/lstring.o and lua-5.1.3-patched/src/lstring.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.3-patched/src/lstrlib.c
---- ../lua-5.1.3/src/lstrlib.c 2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/lstrlib.c    2008-03-12 23:15:22.000000000 +0200
-@@ -42,8 +42,8 @@
+Index: lua-5.1.4/src/lstrlib.c
+===================================================================
+--- lua-5.1.4.orig/src/lstrlib.c       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lstrlib.c    2008-08-24 16:48:20.000000000 +0200
+@@ -43,8 +43,8 @@
  static int str_sub (lua_State *L) {
    size_t l;
    const char *s = luaL_checklstring(L, 1, &l);
@@ -2445,7 +2446,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
    if (start < 1) start = 1;
    if (end > (ptrdiff_t)l) end = (ptrdiff_t)l;
    if (start <= end)
-@@ -105,8 +105,8 @@
+@@ -106,8 +106,8 @@
  static int str_byte (lua_State *L) {
    size_t l;
    const char *s = luaL_checklstring(L, 1, &l);
@@ -2456,7 +2457,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
    int n, i;
    if (posi <= 0) posi = 1;
    if ((size_t)pose > l) pose = l;
-@@ -495,7 +495,7 @@
+@@ -496,7 +496,7 @@
    size_t l1, l2;
    const char *s = luaL_checklstring(L, 1, &l1);
    const char *p = luaL_checklstring(L, 2, &l2);
@@ -2465,7 +2466,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
    if (init < 0) init = 0;
    else if ((size_t)(init) > l1) init = (ptrdiff_t)l1;
    if (find && (lua_toboolean(L, 4) ||  /* explicit request? */
-@@ -689,7 +689,7 @@
+@@ -690,7 +690,7 @@
  ** maximum size of each format specification (such as '%-099.99d')
  ** (+10 accounts for %99.99x plus margin of error)
  */
@@ -2474,7 +2475,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
  
  
  static void addquoted (lua_State *L, luaL_Buffer *b, int arg) {
-@@ -746,9 +746,9 @@
+@@ -747,9 +747,9 @@
  static void addintlen (char *form) {
    size_t l = strlen(form);
    char spec = form[l - 1];
@@ -2487,7 +2488,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
  }
  
  
-@@ -776,12 +776,12 @@
+@@ -777,12 +777,12 @@
          }
          case 'd':  case 'i': {
            addintlen(form);
@@ -2502,10 +2503,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lstrlib.c lua-5.1.
            break;
          }
          case 'e':  case 'E': case 'f':
-Binary files ../lua-5.1.3/src/lstrlib.o and lua-5.1.3-patched/src/lstrlib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltable.c lua-5.1.3-patched/src/ltable.c
---- ../lua-5.1.3/src/ltable.c  2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/ltable.c     2008-03-26 13:04:20.000000000 +0200
+Index: lua-5.1.4/src/ltable.c
+===================================================================
+--- lua-5.1.4.orig/src/ltable.c        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ltable.c     2008-08-24 16:48:20.000000000 +0200
 @@ -33,6 +33,7 @@
  #include "lobject.h"
  #include "lstate.h"
@@ -2779,9 +2780,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltable.c lua-5.1.3
      else i = m;
    }
    return i;
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltable.h lua-5.1.3-patched/src/ltable.h
---- ../lua-5.1.3/src/ltable.h  2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/ltable.h     2008-03-16 20:49:18.000000000 +0200
+Index: lua-5.1.4/src/ltable.h
+===================================================================
+--- lua-5.1.4.orig/src/ltable.h        2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ltable.h     2008-08-24 16:48:20.000000000 +0200
 @@ -18,8 +18,8 @@
  #define key2tval(n)   (&(n)->i_key.tvk)
  
@@ -2793,11 +2795,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltable.h lua-5.1.3
  LUAI_FUNC const TValue *luaH_getstr (Table *t, TString *key);
  LUAI_FUNC TValue *luaH_setstr (lua_State *L, Table *t, TString *key);
  LUAI_FUNC const TValue *luaH_get (Table *t, const TValue *key);
-Binary files ../lua-5.1.3/src/ltable.o and lua-5.1.3-patched/src/ltable.o differ
-Binary files ../lua-5.1.3/src/ltablib.o and lua-5.1.3-patched/src/ltablib.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltm.c lua-5.1.3-patched/src/ltm.c
---- ../lua-5.1.3/src/ltm.c     2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/ltm.c        2008-03-06 22:47:33.000000000 +0200
+Index: lua-5.1.4/src/ltm.c
+===================================================================
+--- lua-5.1.4.orig/src/ltm.c   2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/ltm.c        2008-08-24 16:48:20.000000000 +0200
 @@ -19,7 +19,6 @@
  #include "ltm.h"
  
@@ -2816,10 +2817,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/ltm.c lua-5.1.3-pa
      default:
        mt = G(L)->mt[ttype(o)];
    }
-Binary files ../lua-5.1.3/src/ltm.o and lua-5.1.3-patched/src/ltm.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lua.c lua-5.1.3-patched/src/lua.c
---- ../lua-5.1.3/src/lua.c     2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/lua.c        2008-03-26 11:32:25.000000000 +0200
+Index: lua-5.1.4/src/lua.c
+===================================================================
+--- lua-5.1.4.orig/src/lua.c   2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/lua.c        2008-08-24 16:48:20.000000000 +0200
 @@ -16,7 +16,7 @@
  
  #include "lauxlib.h"
@@ -2845,12 +2846,13 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lua.c lua-5.1.3-pa
    s.argc = argc;
    s.argv = argv;
    status = lua_cpcall(L, &pmain, &s);
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lua.h lua-5.1.3-patched/src/lua.h
---- ../lua-5.1.3/src/lua.h     2008-01-03 17:41:15.000000000 +0200
-+++ lua-5.1.3-patched/src/lua.h        2008-03-19 11:19:34.000000000 +0200
+Index: lua-5.1.4/src/lua.h
+===================================================================
+--- lua-5.1.4.orig/src/lua.h   2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/lua.h        2008-08-24 16:48:20.000000000 +0200
 @@ -19,7 +19,7 @@
  #define LUA_VERSION   "Lua 5.1"
- #define LUA_RELEASE   "Lua 5.1.3"
+ #define LUA_RELEASE   "Lua 5.1.4"
  #define LUA_VERSION_NUM       501
 -#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio"
 +#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio" " (" LUA_LNUM ")"
@@ -2922,12 +2924,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lua.h lua-5.1.3-pa
  
  #endif
 +
-Binary files ../lua-5.1.3/src/lua.o and lua-5.1.3-patched/src/lua.o differ
-Binary files ../lua-5.1.3/src/luac and lua-5.1.3-patched/src/luac differ
-Binary files ../lua-5.1.3/src/luac.o and lua-5.1.3-patched/src/luac.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/luaconf.h lua-5.1.3-patched/src/luaconf.h
---- ../lua-5.1.3/src/luaconf.h 2008-01-18 19:07:48.000000000 +0200
-+++ lua-5.1.3-patched/src/luaconf.h    2008-03-24 20:28:57.000000000 +0200
+Index: lua-5.1.4/src/luaconf.h
+===================================================================
+--- lua-5.1.4.orig/src/luaconf.h       2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/luaconf.h    2008-08-24 16:48:20.000000000 +0200
 @@ -10,7 +10,9 @@
  
  #include <limits.h>
@@ -3152,10 +3152,11 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/luaconf.h lua-5.1.
  /* =================================================================== */
  
  /*
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lundump.c lua-5.1.3-patched/src/lundump.c
---- ../lua-5.1.3/src/lundump.c 2008-01-18 18:39:11.000000000 +0200
-+++ lua-5.1.3-patched/src/lundump.c    2008-03-26 04:33:51.000000000 +0200
-@@ -74,6 +74,13 @@
+Index: lua-5.1.4/src/lundump.c
+===================================================================
+--- lua-5.1.4.orig/src/lundump.c       2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/lundump.c    2008-08-24 16:48:20.000000000 +0200
+@@ -73,6 +73,13 @@
   return x;
  }
  
@@ -3169,7 +3170,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lundump.c lua-5.1.
  static TString* LoadString(LoadState* S)
  {
   size_t size;
-@@ -120,6 +127,9 @@
+@@ -119,6 +126,9 @@
     case LUA_TNUMBER:
        setnvalue(o,LoadNumber(S));
        break;
@@ -3179,7 +3180,7 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lundump.c lua-5.1.
     case LUA_TSTRING:
        setsvalue2n(S->L,o,LoadString(S));
        break;
-@@ -221,5 +231,22 @@
+@@ -223,5 +233,22 @@
   *h++=(char)sizeof(size_t);
   *h++=(char)sizeof(Instruction);
   *h++=(char)sizeof(lua_Number);
@@ -3203,10 +3204,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lundump.c lua-5.1.
 +#endif
 +    );
  }
-Binary files ../lua-5.1.3/src/lundump.o and lua-5.1.3-patched/src/lundump.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lvm.c lua-5.1.3-patched/src/lvm.c
---- ../lua-5.1.3/src/lvm.c     2007-12-28 17:32:23.000000000 +0200
-+++ lua-5.1.3-patched/src/lvm.c        2008-03-14 11:13:17.000000000 +0200
+Index: lua-5.1.4/src/lvm.c
+===================================================================
+--- lua-5.1.4.orig/src/lvm.c   2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/lvm.c        2008-08-24 16:48:20.000000000 +0200
 @@ -25,22 +25,35 @@
  #include "ltable.h"
  #include "ltm.h"
@@ -3755,9 +3756,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lvm.c lua-5.1.3-pa
            luaC_barriert(L, h, val);
          }
          continue;
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lvm.h lua-5.1.3-patched/src/lvm.h
---- ../lua-5.1.3/src/lvm.h     2007-12-27 15:02:25.000000000 +0200
-+++ lua-5.1.3-patched/src/lvm.h        2008-03-19 10:49:34.000000000 +0200
+Index: lua-5.1.4/src/lvm.h
+===================================================================
+--- lua-5.1.4.orig/src/lvm.h   2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/lvm.h        2008-08-24 16:48:20.000000000 +0200
 @@ -15,11 +15,9 @@
  
  #define tostring(L,o) ((ttype(o) == LUA_TSTRING) || (luaV_tostring(L, o)))
@@ -3772,11 +3774,10 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/lvm.h lua-5.1.3-pa
  
  
  LUAI_FUNC int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r);
-Binary files ../lua-5.1.3/src/lvm.o and lua-5.1.3-patched/src/lvm.o differ
-Binary files ../lua-5.1.3/src/lzio.o and lua-5.1.3-patched/src/lzio.o differ
-diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/print.c lua-5.1.3-patched/src/print.c
---- ../lua-5.1.3/src/print.c   2007-03-26 03:17:38.000000000 +0300
-+++ lua-5.1.3-patched/src/print.c      2008-03-19 11:04:51.000000000 +0200
+Index: lua-5.1.4/src/print.c
+===================================================================
+--- lua-5.1.4.orig/src/print.c 2008-08-24 16:46:38.000000000 +0200
++++ lua-5.1.4/src/print.c      2008-08-24 16:48:20.000000000 +0200
 @@ -14,6 +14,7 @@
  #include "lobject.h"
  #include "lopcodes.h"
@@ -3803,4 +3804,3 @@ diff -urN --exclude=.svn --exclude=.DS_Store ../lua-5.1.3/src/print.c lua-5.1.3-
        break;
    case LUA_TSTRING:
        PrintString(rawtsvalue(o));
-Binary files ../lua-5.1.3/src/print.o and lua-5.1.3-patched/src/print.o differ
index 402b8a5..d948841 100644 (file)
@@ -1,8 +1,8 @@
-Index: lua-5.1.3/Makefile
+Index: lua-5.1.4/Makefile
 ===================================================================
---- lua-5.1.3.orig/Makefile    2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/Makefile 2008-05-23 09:05:51.000000000 +0200
-@@ -37,8 +37,8 @@
+--- lua-5.1.4.orig/Makefile    2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/Makefile 2008-08-24 16:48:42.000000000 +0200
+@@ -42,8 +42,8 @@
  
  # What to install.
  TO_BIN= lua luac
@@ -13,18 +13,18 @@ Index: lua-5.1.3/Makefile
  TO_MAN= lua.1 luac.1
  
  # Lua version and release.
-@@ -58,6 +58,7 @@
+@@ -63,6 +63,7 @@
        cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
        cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
        cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
 +      ln -s liblua.so.$R $(INSTALL_LIB)/liblua.so
        cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
  
local:
-Index: lua-5.1.3/src/ldo.h
ranlib:
+Index: lua-5.1.4/src/ldo.h
 ===================================================================
---- lua-5.1.3.orig/src/ldo.h   2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/src/ldo.h        2008-05-23 09:03:32.000000000 +0200
+--- lua-5.1.4.orig/src/ldo.h   2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/ldo.h        2008-08-24 16:48:42.000000000 +0200
 @@ -46,7 +46,7 @@
  LUAI_FUNC int luaD_poscall (lua_State *L, StkId firstResult);
  LUAI_FUNC void luaD_reallocCI (lua_State *L, int newsize);
@@ -34,10 +34,10 @@ Index: lua-5.1.3/src/ldo.h
  
  LUAI_FUNC void luaD_throw (lua_State *L, int errcode);
  LUAI_FUNC int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud);
-Index: lua-5.1.3/src/lfunc.h
+Index: lua-5.1.4/src/lfunc.h
 ===================================================================
---- lua-5.1.3.orig/src/lfunc.h 2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/src/lfunc.h      2008-05-23 09:03:32.000000000 +0200
+--- lua-5.1.4.orig/src/lfunc.h 2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lfunc.h      2008-08-24 16:48:42.000000000 +0200
 @@ -18,7 +18,7 @@
                           cast(int, sizeof(TValue *)*((n)-1)))
  
@@ -47,10 +47,10 @@ Index: lua-5.1.3/src/lfunc.h
  LUAI_FUNC Closure *luaF_newCclosure (lua_State *L, int nelems, Table *e);
  LUAI_FUNC Closure *luaF_newLclosure (lua_State *L, int nelems, Table *e);
  LUAI_FUNC UpVal *luaF_newupval (lua_State *L);
-Index: lua-5.1.3/src/lmem.h
+Index: lua-5.1.4/src/lmem.h
 ===================================================================
---- lua-5.1.3.orig/src/lmem.h  2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/src/lmem.h       2008-05-23 09:03:32.000000000 +0200
+--- lua-5.1.4.orig/src/lmem.h  2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lmem.h       2008-08-24 16:48:42.000000000 +0200
 @@ -38,9 +38,9 @@
     ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t))))
  
@@ -63,10 +63,10 @@ Index: lua-5.1.3/src/lmem.h
  LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size,
                                 size_t size_elem, int limit,
                                 const char *errormsg);
-Index: lua-5.1.3/src/lstring.h
+Index: lua-5.1.4/src/lstring.h
 ===================================================================
---- lua-5.1.3.orig/src/lstring.h       2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/src/lstring.h    2008-05-23 09:03:32.000000000 +0200
+--- lua-5.1.4.orig/src/lstring.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lstring.h    2008-08-24 16:48:42.000000000 +0200
 @@ -25,7 +25,7 @@
  
  LUAI_FUNC void luaS_resize (lua_State *L, int newsize);
@@ -76,10 +76,10 @@ Index: lua-5.1.3/src/lstring.h
  
  
  #endif
-Index: lua-5.1.3/src/lundump.h
+Index: lua-5.1.4/src/lundump.h
 ===================================================================
---- lua-5.1.3.orig/src/lundump.h       2008-05-23 09:03:23.000000000 +0200
-+++ lua-5.1.3/src/lundump.h    2008-05-23 09:03:32.000000000 +0200
+--- lua-5.1.4.orig/src/lundump.h       2008-08-24 16:46:37.000000000 +0200
++++ lua-5.1.4/src/lundump.h    2008-08-24 16:48:42.000000000 +0200
 @@ -17,7 +17,7 @@
  LUAI_FUNC void luaU_header (char* h);
  
@@ -89,10 +89,10 @@ Index: lua-5.1.3/src/lundump.h
  
  #ifdef luac_c
  /* print one chunk; from print.c */
-Index: lua-5.1.3/src/Makefile
+Index: lua-5.1.4/src/Makefile
 ===================================================================
---- lua-5.1.3.orig/src/Makefile        2008-05-23 09:03:32.000000000 +0200
-+++ lua-5.1.3/src/Makefile     2008-05-23 09:03:36.000000000 +0200
+--- lua-5.1.4.orig/src/Makefile        2008-08-24 16:48:20.000000000 +0200
++++ lua-5.1.4/src/Makefile     2008-08-24 16:48:42.000000000 +0200
 @@ -23,6 +23,7 @@
  PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
  
index 4ba58eb..b27592f 100644 (file)
@@ -1,6 +1,7 @@
-diff -ur lua-5.1.3-pt2/src/ldump.c lua-5.1.3-pt3/src/ldump.c
---- lua-5.1.3-pt2/src/ldump.c  2008-04-05 14:25:13.000000000 +0200
-+++ lua-5.1.3-pt3/src/ldump.c  2008-04-05 14:28:27.000000000 +0200
+Index: lua-5.1.4/src/ldump.c
+===================================================================
+--- lua-5.1.4.orig/src/ldump.c 2008-08-24 16:48:20.000000000 +0200
++++ lua-5.1.4/src/ldump.c      2008-08-24 16:48:52.000000000 +0200
 @@ -67,12 +67,12 @@
  {
   if (s==NULL || getstr(s)==NULL)
@@ -16,9 +17,10 @@ diff -ur lua-5.1.3-pt2/src/ldump.c lua-5.1.3-pt3/src/ldump.c
    DumpVar(size,D);
    DumpBlock(getstr(s),size,D);
   }
-diff -ur lua-5.1.3-pt2/src/lundump.c lua-5.1.3-pt3/src/lundump.c
---- lua-5.1.3-pt2/src/lundump.c        2008-04-05 14:25:13.000000000 +0200
-+++ lua-5.1.3-pt3/src/lundump.c        2008-04-05 14:28:27.000000000 +0200
+Index: lua-5.1.4/src/lundump.c
+===================================================================
+--- lua-5.1.4.orig/src/lundump.c       2008-08-24 16:48:20.000000000 +0200
++++ lua-5.1.4/src/lundump.c    2008-08-24 16:48:52.000000000 +0200
 @@ -25,6 +25,7 @@
   ZIO* Z;
   Mbuffer* b;
@@ -35,7 +37,7 @@ diff -ur lua-5.1.3-pt2/src/lundump.c lua-5.1.3-pt3/src/lundump.c
  #define       LoadByte(S)             (lu_byte)LoadChar(S)
  #define LoadVar(S,x)          LoadMem(S,&x,1,sizeof(x))
  #define LoadVector(S,b,n,size)        LoadMem(S,b,n,size)
-@@ -52,6 +52,49 @@
+@@ -51,6 +51,49 @@
   IF (r!=0, "unexpected end");
  }
  
@@ -85,7 +87,7 @@ diff -ur lua-5.1.3-pt2/src/lundump.c lua-5.1.3-pt3/src/lundump.c
  static int LoadChar(LoadState* S)
  {
   char x;
-@@ -83,7 +126,7 @@
+@@ -82,7 +125,7 @@
  
  static TString* LoadString(LoadState* S)
  {
@@ -94,7 +96,7 @@ diff -ur lua-5.1.3-pt2/src/lundump.c lua-5.1.3-pt3/src/lundump.c
   LoadVar(S,size);
   if (size==0)
    return NULL;
-@@ -194,6 +237,7 @@
+@@ -196,6 +239,7 @@
   char s[LUAC_HEADERSIZE];
   luaU_header(h);
   LoadBlock(S,s,LUAC_HEADERSIZE);
@@ -102,7 +104,7 @@ diff -ur lua-5.1.3-pt2/src/lundump.c lua-5.1.3-pt3/src/lundump.c
   IF (memcmp(h,s,LUAC_HEADERSIZE)!=0, "bad header");
  }
  
-@@ -228,7 +272,7 @@
+@@ -230,7 +274,7 @@
   *h++=(char)LUAC_FORMAT;
   *h++=(char)*(char*)&x;                               /* endianness */
   *h++=(char)sizeof(int);
diff --git a/tools/lua/patches/300-opcode_performance.patch b/tools/lua/patches/300-opcode_performance.patch
new file mode 100644 (file)
index 0000000..f6204ae
--- /dev/null
@@ -0,0 +1,363 @@
+--- a/src/lvm.c
++++ b/src/lvm.c
+@@ -31,6 +31,9 @@
+ /* limit for table tag-method chains (to avoid loops) */
+ #define MAXTAGLOOP    100
++#ifdef __GNUC__
++#define COMPUTED_GOTO 1
++#endif
+ /*
+  * If 'obj' is a string, it is tried to be interpreted as a number.
+@@ -562,12 +565,63 @@
+     ARITH_OP1_END
+ #endif
++#ifdef COMPUTED_GOTO
++#define OPCODE_TARGET(op) DO_OP_##op:
++#define CALL_OPCODE(op) goto *opcodes[op];
++#define OPCODE_PTR(op) [OP_##op] = &&DO_OP_##op
++#else
++#define OPCODE_TARGET(op) case OP_##op:
++#define CALL_OPCODE(op) switch (op)
++#endif
++
+ void luaV_execute (lua_State *L, int nexeccalls) {
+   LClosure *cl;
+   StkId base;
+   TValue *k;
+   const Instruction *pc;
++#ifdef COMPUTED_GOTO
++  static const void *opcodes[] = {
++   OPCODE_PTR(MOVE),
++   OPCODE_PTR(LOADK),
++   OPCODE_PTR(LOADBOOL),
++   OPCODE_PTR(LOADNIL),
++   OPCODE_PTR(GETUPVAL),
++   OPCODE_PTR(GETGLOBAL),
++   OPCODE_PTR(GETTABLE),
++   OPCODE_PTR(SETGLOBAL),
++   OPCODE_PTR(SETUPVAL),
++   OPCODE_PTR(SETTABLE),
++   OPCODE_PTR(NEWTABLE),
++   OPCODE_PTR(SELF),
++   OPCODE_PTR(ADD),
++   OPCODE_PTR(SUB),
++   OPCODE_PTR(MUL),
++   OPCODE_PTR(DIV),
++   OPCODE_PTR(MOD),
++   OPCODE_PTR(POW),
++   OPCODE_PTR(UNM),
++   OPCODE_PTR(NOT),
++   OPCODE_PTR(LEN),
++   OPCODE_PTR(CONCAT),
++   OPCODE_PTR(JMP),
++   OPCODE_PTR(EQ),
++   OPCODE_PTR(LT),
++   OPCODE_PTR(LE),
++   OPCODE_PTR(TEST),
++   OPCODE_PTR(TESTSET),
++   OPCODE_PTR(CALL),
++   OPCODE_PTR(TAILCALL),
++   OPCODE_PTR(RETURN),
++   OPCODE_PTR(FORLOOP),
++   OPCODE_PTR(FORPREP),
++   OPCODE_PTR(TFORLOOP),
++   OPCODE_PTR(SETLIST),
++   OPCODE_PTR(CLOSE),
++   OPCODE_PTR(CLOSURE),
++   OPCODE_PTR(VARARG)
++  };
++#endif
+  reentry:  /* entry point */
+   lua_assert(isLua(L->ci));
+   pc = L->savedpc;
+@@ -592,33 +646,33 @@
+     lua_assert(base == L->base && L->base == L->ci->base);
+     lua_assert(base <= L->top && L->top <= L->stack + L->stacksize);
+     lua_assert(L->top == L->ci->top || luaG_checkopenop(i));
+-    switch (GET_OPCODE(i)) {
+-      case OP_MOVE: {
++    CALL_OPCODE(GET_OPCODE(i)) {
++      OPCODE_TARGET(MOVE) {
+         setobjs2s(L, ra, RB(i));
+         continue;
+       }
+-      case OP_LOADK: {
++      OPCODE_TARGET(LOADK) {
+         setobj2s(L, ra, KBx(i));
+         continue;
+       }
+-      case OP_LOADBOOL: {
++      OPCODE_TARGET(LOADBOOL) {
+         setbvalue(ra, GETARG_B(i));
+         if (GETARG_C(i)) pc++;  /* skip next instruction (if C) */
+         continue;
+       }
+-      case OP_LOADNIL: {
++      OPCODE_TARGET(LOADNIL) {
+         TValue *rb = RB(i);
+         do {
+           setnilvalue(rb--);
+         } while (rb >= ra);
+         continue;
+       }
+-      case OP_GETUPVAL: {
++      OPCODE_TARGET(GETUPVAL) {
+         int b = GETARG_B(i);
+         setobj2s(L, ra, cl->upvals[b]->v);
+         continue;
+       }
+-      case OP_GETGLOBAL: {
++      OPCODE_TARGET(GETGLOBAL) {
+         TValue g;
+         TValue *rb = KBx(i);
+         sethvalue(L, &g, cl->env);
+@@ -626,88 +680,88 @@
+         Protect(luaV_gettable(L, &g, rb, ra));
+         continue;
+       }
+-      case OP_GETTABLE: {
++      OPCODE_TARGET(GETTABLE) {
+         Protect(luaV_gettable(L, RB(i), RKC(i), ra));
+         continue;
+       }
+-      case OP_SETGLOBAL: {
++      OPCODE_TARGET(SETGLOBAL) {
+         TValue g;
+         sethvalue(L, &g, cl->env);
+         lua_assert(ttisstring(KBx(i)));
+         Protect(luaV_settable(L, &g, KBx(i), ra));
+         continue;
+       }
+-      case OP_SETUPVAL: {
++      OPCODE_TARGET(SETUPVAL) {
+         UpVal *uv = cl->upvals[GETARG_B(i)];
+         setobj(L, uv->v, ra);
+         luaC_barrier(L, uv, ra);
+         continue;
+       }
+-      case OP_SETTABLE: {
++      OPCODE_TARGET(SETTABLE) {
+         Protect(luaV_settable(L, ra, RKB(i), RKC(i)));
+         continue;
+       }
+-      case OP_NEWTABLE: {
++      OPCODE_TARGET(NEWTABLE) {
+         int b = GETARG_B(i);
+         int c = GETARG_C(i);
+         sethvalue(L, ra, luaH_new(L, luaO_fb2int(b), luaO_fb2int(c)));
+         Protect(luaC_checkGC(L));
+         continue;
+       }
+-      case OP_SELF: {
++      OPCODE_TARGET(SELF) {
+         StkId rb = RB(i);
+         setobjs2s(L, ra+1, rb);
+         Protect(luaV_gettable(L, rb, RKC(i), ra));
+         continue;
+       }
+-      case OP_ADD: {
++      OPCODE_TARGET(ADD) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue( luai_numadd, try_addint, luai_vectadd );
+         Protect(Arith(L, ra, rb, rc, TM_ADD)); \
+         continue;
+       }
+-      case OP_SUB: {
++      OPCODE_TARGET(SUB) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue( luai_numsub, try_subint, luai_vectsub );
+         Protect(Arith(L, ra, rb, rc, TM_SUB));
+         continue;
+       }
+-      case OP_MUL: {
++      OPCODE_TARGET(MUL) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue(luai_nummul, try_mulint, luai_vectmul);
+         Protect(Arith(L, ra, rb, rc, TM_MUL));
+         continue;
+       }
+-      case OP_DIV: {
++      OPCODE_TARGET(DIV) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue(luai_numdiv, try_divint, luai_vectdiv);
+         Protect(Arith(L, ra, rb, rc, TM_DIV));
+         continue;
+       }
+-      case OP_MOD: {
++      OPCODE_TARGET(MOD) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue_scalar(luai_nummod, try_modint);  /* scalars only */
+         Protect(Arith(L, ra, rb, rc, TM_MOD));
+         continue;
+       }
+-      case OP_POW: {
++      OPCODE_TARGET(POW) {
+         TValue *rb = RKB(i), *rc= RKC(i);
+         arith_op_continue(luai_numpow, try_powint, luai_vectpow);
+         Protect(Arith(L, ra, rb, rc, TM_POW));
+         continue;
+       }
+-      case OP_UNM: {
++      OPCODE_TARGET(UNM) {
+         TValue *rb = RB(i);
+         arith_op1_continue(luai_numunm, try_unmint, luai_vectunm);
+         Protect(Arith(L, ra, rb, rb, TM_UNM));
+         continue;
+       }
+-      case OP_NOT: {
++      OPCODE_TARGET(NOT) {
+         int res = l_isfalse(RB(i));  /* next assignment may change this value */
+         setbvalue(ra, res);
+         continue;
+       }
+-      case OP_LEN: {
++      OPCODE_TARGET(LEN) {
+         const TValue *rb = RB(i);
+         switch (ttype(rb)) {
+           case LUA_TTABLE: {
+@@ -727,18 +781,18 @@
+         }
+         continue;
+       }
+-      case OP_CONCAT: {
++      OPCODE_TARGET(CONCAT) {
+         int b = GETARG_B(i);
+         int c = GETARG_C(i);
+         Protect(luaV_concat(L, c-b+1, c); luaC_checkGC(L));
+         setobjs2s(L, RA(i), base+b);
+         continue;
+       }
+-      case OP_JMP: {
++      OPCODE_TARGET(JMP) {
+         dojump(L, pc, GETARG_sBx(i));
+         continue;
+       }
+-      case OP_EQ: {
++      OPCODE_TARGET(EQ) {
+         TValue *rb = RKB(i);
+         TValue *rc = RKC(i);
+         Protect(
+@@ -748,7 +802,7 @@
+         pc++;
+         continue;
+       }
+-      case OP_LT: {
++      OPCODE_TARGET(LT) {
+         Protect(
+           if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i))
+             dojump(L, pc, GETARG_sBx(*pc));
+@@ -756,7 +810,7 @@
+         pc++;
+         continue;
+       }
+-      case OP_LE: {
++      OPCODE_TARGET(LE) {
+         Protect(
+           if (lessequal(L, RKB(i), RKC(i)) == GETARG_A(i))
+             dojump(L, pc, GETARG_sBx(*pc));
+@@ -764,13 +818,13 @@
+         pc++;
+         continue;
+       }
+-      case OP_TEST: {
++      OPCODE_TARGET(TEST) {
+         if (l_isfalse(ra) != GETARG_C(i))
+           dojump(L, pc, GETARG_sBx(*pc));
+         pc++;
+         continue;
+       }
+-      case OP_TESTSET: {
++      OPCODE_TARGET(TESTSET) {
+         TValue *rb = RB(i);
+         if (l_isfalse(rb) != GETARG_C(i)) {
+           setobjs2s(L, ra, rb);
+@@ -779,7 +833,7 @@
+         pc++;
+         continue;
+       }
+-      case OP_CALL: {
++      OPCODE_TARGET(CALL) {
+         int b = GETARG_B(i);
+         int nresults = GETARG_C(i) - 1;
+         if (b != 0) L->top = ra+b;  /* else previous instruction set top */
+@@ -800,7 +854,7 @@
+           }
+         }
+       }
+-      case OP_TAILCALL: {
++      OPCODE_TARGET(TAILCALL) {
+         int b = GETARG_B(i);
+         if (b != 0) L->top = ra+b;  /* else previous instruction set top */
+         L->savedpc = pc;
+@@ -832,7 +886,7 @@
+           }
+         }
+       }
+-      case OP_RETURN: {
++      OPCODE_TARGET(RETURN) {
+         int b = GETARG_B(i);
+         if (b != 0) L->top = ra+b-1;
+         if (L->openupval) luaF_close(L, base);
+@@ -847,7 +901,7 @@
+           goto reentry;
+         }
+       }
+-      case OP_FORLOOP: {
++      OPCODE_TARGET(FORLOOP) {
+         /* If start,step and limit are all integers, we don't need to check
+          * against overflow in the looping.
+          */
+@@ -875,7 +929,7 @@
+         }
+         continue;
+       }
+-      case OP_FORPREP: {
++      OPCODE_TARGET(FORPREP) {
+         const TValue *init = ra;
+         const TValue *plimit = ra+1;
+         const TValue *pstep = ra+2;
+@@ -898,7 +952,7 @@
+         dojump(L, pc, GETARG_sBx(i));
+         continue;
+       }
+-      case OP_TFORLOOP: {
++      OPCODE_TARGET(TFORLOOP) {
+         StkId cb = ra + 3;  /* call base */
+         setobjs2s(L, cb+2, ra+2);
+         setobjs2s(L, cb+1, ra+1);
+@@ -914,7 +968,7 @@
+         pc++;
+         continue;
+       }
+-      case OP_SETLIST: {
++      OPCODE_TARGET(SETLIST) {
+         int n = GETARG_B(i);
+         int c = GETARG_C(i);
+         int last;
+@@ -936,11 +990,11 @@
+         }
+         continue;
+       }
+-      case OP_CLOSE: {
++      OPCODE_TARGET(CLOSE) {
+         luaF_close(L, ra);
+         continue;
+       }
+-      case OP_CLOSURE: {
++      OPCODE_TARGET(CLOSURE) {
+         Proto *p;
+         Closure *ncl;
+         int nup, j;
+@@ -960,7 +1014,7 @@
+         Protect(luaC_checkGC(L));
+         continue;
+       }
+-      case OP_VARARG: {
++      OPCODE_TARGET(VARARG) {
+         int b = GETARG_B(i) - 1;
+         int j;
+         CallInfo *ci = L->ci;
This page took 0.060983 seconds and 4 git commands to generate.