diff options
Diffstat (limited to 'Build/source/libs/luajit/LuaJIT-PATCHES')
5 files changed, 116 insertions, 144 deletions
diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog b/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog index 0306037354a..b74ee1d6be4 100644 --- a/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog +++ b/Build/source/libs/luajit/LuaJIT-PATCHES/ChangeLog @@ -1,3 +1,10 @@ +2016-03-07 Luigi Scarso <luigi.scarso@gmail.com> + Luajit-2.1.0-beta2 + +2016-03-04 Luigi Scarso <luigi.scarso@gmail.com> + + * added RESERVED_load_aux_JIT needed to Luajittex loadfile + 2015-09-27 Peter Breitenlohner <peb@mppmu.mpg.de> * patch-07-x86_64-cygwin (new): Backport from upstream git. diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX index 4853f00cc52..2e8220e0c36 100644 --- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX +++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-01-LuaJITTeX @@ -1,6 +1,6 @@ -diff -ur LuaJIT-2.1.0-beta1.orig/src/lauxlib.h LuaJIT-2.1.0-beta1/src/lauxlib.h ---- LuaJIT-2.1.0-beta1.orig/src/lauxlib.h 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lauxlib.h 2015-09-04 08:42:39.000000000 +0200 +diff -bur LuaJIT-src-orig/src/lauxlib.h LuaJIT-src/src/lauxlib.h +--- LuaJIT-src-orig/src/lauxlib.h 2016-03-07 09:43:42.708069718 +0100 ++++ LuaJIT-src/src/lauxlib.h 2016-03-04 16:52:23.000000000 +0100 @@ -86,6 +86,32 @@ int level); @@ -34,9 +34,18 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lauxlib.h LuaJIT-2.1.0-beta1/src/lauxlib.h /* ** =============================================================== ** some useful macros -diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_init.c LuaJIT-2.1.0-beta1/src/lib_init.c ---- LuaJIT-2.1.0-beta1.orig/src/lib_init.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lib_init.c 2015-09-04 08:42:39.000000000 +0200 +@@ -144,6 +170,8 @@ + LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); + LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); + ++/* Luajittex needs this one because it overloads loadfile */ ++LUALIB_API int (RESERVED_load_aux_JIT) (lua_State *L, int status, int envarg); + + /* }====================================================== */ + +diff -bur LuaJIT-src-orig/src/lib_init.c LuaJIT-src/src/lib_init.c +--- LuaJIT-src-orig/src/lib_init.c 2016-03-07 09:43:42.720069718 +0100 ++++ LuaJIT-src/src/lib_init.c 2016-03-07 11:47:15.847946480 +0100 @@ -26,6 +26,7 @@ { LUA_DBLIBNAME, luaopen_debug }, { LUA_BITLIBNAME, luaopen_bit }, @@ -45,9 +54,9 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_init.c LuaJIT-2.1.0-beta1/src/lib_init. { NULL, NULL } }; -diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_package.c LuaJIT-2.1.0-beta1/src/lib_package.c ---- LuaJIT-2.1.0-beta1.orig/src/lib_package.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lib_package.c 2015-09-04 08:42:39.000000000 +0200 +diff -bur LuaJIT-src-orig/src/lib_package.c LuaJIT-src/src/lib_package.c +--- LuaJIT-src-orig/src/lib_package.c 2016-03-07 09:43:42.712069718 +0100 ++++ LuaJIT-src/src/lib_package.c 2016-03-07 11:49:15.655944489 +0100 @@ -362,6 +362,29 @@ return 1; /* library loaded successfully */ } @@ -100,10 +109,45 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lib_package.c LuaJIT-2.1.0-beta1/src/lib_pa static int lj_cf_package_loader_preload(lua_State *L) { const char *name = luaL_checkstring(L, 1); -diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h ---- LuaJIT-2.1.0-beta1.orig/src/lua.h 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lua.h 2015-09-04 08:42:39.000000000 +0200 -@@ -348,6 +348,16 @@ + +diff -bur LuaJIT-src-orig/src/lj_load.c LuaJIT-src/src/lj_load.c +--- LuaJIT-src-orig/src/lj_load.c 2016-03-07 09:43:42.716069718 +0100 ++++ LuaJIT-src/src/lj_load.c 2016-03-07 12:09:10.771924621 +0100 +@@ -166,3 +166,19 @@ + return 1; + } + ++/* -- Luajittex needs this one because it overloads loadfile -- */ ++LUALIB_API int RESERVED_load_aux_JIT(lua_State *L, int status, int envarg) ++{ ++ if (status == 0) { ++ if (tvistab(L->base+envarg-1)) { ++ GCfunc *fn = funcV(L->top-1); ++ GCtab *t = tabV(L->base+envarg-1); ++ setgcref(fn->c.env, obj2gco(t)); ++ lj_gc_objbarrier(L, fn, t); ++ } ++ return 1; ++ } else { ++ setnilV(L->top-2); ++ return 2; ++ } ++} + +diff -bur LuaJIT-src-orig/src/lua.h LuaJIT-src/src/lua.h +--- LuaJIT-src-orig/src/lua.h 2016-03-07 09:43:42.716069718 +0100 ++++ LuaJIT-src/src/lua.h 2016-03-07 11:56:24.855937353 +0100 +@@ -103,6 +103,9 @@ + typedef LUA_INTEGER lua_Integer; + + ++/* communication with LuaJiTTeX */ ++LUA_API int luajittex_choose_hash_function; ++ + + /* + ** state manipulation +@@ -349,6 +352,16 @@ const char *chunkname, const char *mode); @@ -120,9 +164,10 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h struct lua_Debug { int event; const char *name; /* (n) */ -diff -ur LuaJIT-2.1.0-beta1.orig/src/lualib.h LuaJIT-2.1.0-beta1/src/lualib.h ---- LuaJIT-2.1.0-beta1.orig/src/lualib.h 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lualib.h 2015-09-04 08:42:39.000000000 +0200 + +diff -bur LuaJIT-src-orig/src/lualib.h LuaJIT-src/src/lualib.h +--- LuaJIT-src-orig/src/lualib.h 2016-03-07 09:43:42.724069718 +0100 ++++ LuaJIT-src/src/lualib.h 2016-03-07 11:58:19.151935453 +0100 @@ -22,6 +22,8 @@ #define LUA_JITLIBNAME "jit" #define LUA_FFILIBNAME "ffi" @@ -141,10 +186,11 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lualib.h LuaJIT-2.1.0-beta1/src/lualib.h LUALIB_API void luaL_openlibs(lua_State *L); #ifndef lua_assert -diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile ---- LuaJIT-2.1.0-beta1.orig/src/Makefile 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/Makefile 2015-09-04 08:42:39.000000000 +0200 -@@ -97,7 +97,7 @@ + +diff -bur LuaJIT-src-orig/src/Makefile LuaJIT-src/src/Makefile +--- LuaJIT-src-orig/src/Makefile 2016-03-07 09:43:42.716069718 +0100 ++++ LuaJIT-src/src/Makefile 2016-03-07 12:02:42.319931078 +0100 +@@ -99,7 +99,7 @@ # enabled by default. Some other features that *might* break some existing # code (e.g. __pairs or os.execute() return values) can be enabled here. # Note: this does not provide full compatibility with Lua 5.2 at this time. @@ -153,7 +199,7 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile # # Disable the JIT compiler, i.e. turn LuaJIT into a pure interpreter. #XCFLAGS+= -DLUAJIT_DISABLE_JIT -@@ -456,7 +456,7 @@ +@@ -471,7 +471,7 @@ LJVM_BOUT= $(LJVM_S) LJVM_MODE= elfasm @@ -162,9 +208,9 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile LuaJIT-2.1.0-beta1/src/Makefile lib_io.o lib_os.o lib_package.o lib_debug.o lib_jit.o lib_ffi.o LJLIB_C= $(LJLIB_O:.o=.c) -diff -ur LuaJIT-2.1.0-beta1.orig/src/Makefile.dep LuaJIT-2.1.0-beta1/src/Makefile.dep ---- LuaJIT-2.1.0-beta1.orig/src/Makefile.dep 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/Makefile.dep 2015-09-04 08:46:10.000000000 +0200 +diff -bur LuaJIT-src-orig/src/Makefile.dep LuaJIT-src/src/Makefile.dep +--- LuaJIT-src-orig/src/Makefile.dep 2016-03-07 09:43:42.696069718 +0100 ++++ LuaJIT-src/src/Makefile.dep 2016-03-07 12:05:19.343928468 +0100 @@ -6,6 +6,7 @@ lj_tab.h lj_meta.h lj_state.h lj_ctype.h lj_cconv.h lj_bc.h lj_ff.h \ lj_ffdef.h lj_dispatch.h lj_jit.h lj_ir.h lj_char.h lj_strscan.h \ diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX index 3a05a52d896..c2818a71b9d 100644 --- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX +++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-05-LuaJITTeX @@ -1,6 +1,6 @@ -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_def.h LuaJIT-2.1.0-beta1/src/lj_def.h ---- LuaJIT-2.1.0-beta1.orig/src/lj_def.h 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_def.h 2015-09-04 08:51:52.000000000 +0200 +diff -bur LuaJIT-src-orig/src/lj_def.h LuaJIT-src/src/lj_def.h +--- LuaJIT-src-orig/src/lj_def.h 2016-03-07 09:43:42.728069718 +0100 ++++ LuaJIT-src/src/lj_def.h 2016-03-07 12:23:43.327910115 +0100 @@ -66,7 +66,7 @@ #define LJ_MAX_BCINS (1<<26) /* Max. # of bytecode instructions. */ #define LJ_MAX_SLOTS 250 /* Max. # of slots in a Lua func. */ @@ -10,9 +10,10 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_def.h LuaJIT-2.1.0-beta1/src/lj_def.h #define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */ #define LJ_STACK_EXTRA (5+2*LJ_FR2) /* Extra stack space (metamethods). */ -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c ---- LuaJIT-2.1.0-beta1.orig/src/lj_str.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_str.c 2015-09-04 08:51:52.000000000 +0200 + +diff -bur LuaJIT-src-orig/src/lj_str.c LuaJIT-src/src/lj_str.c +--- LuaJIT-src-orig/src/lj_str.c 2016-03-07 09:43:42.696069718 +0100 ++++ LuaJIT-src/src/lj_str.c 2016-03-07 12:25:22.031908474 +0100 @@ -118,6 +118,16 @@ g->strhash = newhash; } @@ -30,7 +31,7 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c /* Intern a string and return string object. */ GCstr *lj_str_new(lua_State *L, const char *str, size_t lenx) { -@@ -126,27 +136,44 @@ +@@ -126,9 +136,22 @@ GCobj *o; MSize len = (MSize)lenx; MSize a, b, h = len; @@ -51,58 +52,22 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_str.c LuaJIT-2.1.0-beta1/src/lj_str.c + } else { + /* LuaJIT 2.0.2 hash function */ /* Compute string hash. Constants taken from lookup3 hash by Bob Jenkins. */ -- if (len >= 4) { /* Caveat: unaligned access! */ -- a = lj_getu32(str); -- h ^= lj_getu32(str+len-4); -- b = lj_getu32(str+(len>>1)-2); -- h ^= b; h -= lj_rol(b, 14); -- b += lj_getu32(str+(len>>2)-1); -- } else if (len > 0) { -- a = *(const uint8_t *)str; -- h ^= *(const uint8_t *)(str+len-1); -- b = *(const uint8_t *)(str+(len>>1)); -- h ^= b; h -= lj_rol(b, 14); -- } else { -- return &g->strempty; -- } -- a ^= h; a -= lj_rol(h, 11); -- b ^= a; b -= lj_rol(a, 25); -- h ^= b; h -= lj_rol(b, 16); -+ if (len >= 4) { /* Caveat: unaligned access! */ -+ a = lj_getu32(str); -+ h ^= lj_getu32(str+len-4); -+ b = lj_getu32(str+(len>>1)-2); -+ h ^= b; h -= lj_rol(b, 14); -+ b += lj_getu32(str+(len>>2)-1); -+ } else if (len > 0) { -+ a = *(const uint8_t *)str; -+ h ^= *(const uint8_t *)(str+len-1); -+ b = *(const uint8_t *)(str+(len>>1)); -+ h ^= b; h -= lj_rol(b, 14); -+ } else { + if (len >= 4) { /* Caveat: unaligned access! */ + a = lj_getu32(str); +@@ -142,11 +165,15 @@ + b = *(const uint8_t *)(str+(len>>1)); + h ^= b; h -= lj_rol(b, 14); + } else { + /* Already done, kept for reference */ -+ return &g->strempty; -+ } -+ a ^= h; a -= lj_rol(h, 11); -+ b ^= a; b -= lj_rol(a, 25); -+ h ^= b; h -= lj_rol(b, 16); + return &g->strempty; + } + a ^= h; a -= lj_rol(h, 11); + b ^= a; b -= lj_rol(a, 25); + h ^= b; h -= lj_rol(b, 16); + } + + /* Check if the string has already been interned. */ o = gcref(g->strhash[h & g->strmask]); if (LJ_LIKELY((((uintptr_t)str+len-1) & (LJ_PAGESIZE-1)) <= LJ_PAGESIZE-4)) { -Only in LuaJIT-2.1.0-beta1/src: lj_str.c.orig -diff -ur LuaJIT-2.1.0-beta1.orig/src/lua.h LuaJIT-2.1.0-beta1/src/lua.h ---- LuaJIT-2.1.0-beta1.orig/src/lua.h 2015-09-04 08:42:39.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lua.h 2015-09-04 08:51:52.000000000 +0200 -@@ -103,6 +103,9 @@ - typedef LUA_INTEGER lua_Integer; - - -+/* communication with LuaJiTTeX */ -+LUA_API int luajittex_choose_hash_function; -+ - - /* - ** state manipulation + diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin index 17f7e4a1c08..cc4855ea8de 100644 --- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin +++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-06-ppc-darwin @@ -1,6 +1,6 @@ -diff -ur LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c LuaJIT-2.1.0-beta1/src/host/buildvm.c ---- LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/host/buildvm.c 2015-09-04 09:03:00.000000000 +0200 +diff -bur LuaJIT-src-orig/src/host/buildvm.c LuaJIT-src/src/host/buildvm.c +--- LuaJIT-src-orig/src/host/buildvm.c 2016-03-07 09:43:42.728069718 +0100 ++++ LuaJIT-src/src/host/buildvm.c 2016-03-07 12:29:03.891904786 +0100 @@ -113,7 +113,7 @@ name[0] = '@'; else @@ -10,10 +10,11 @@ diff -ur LuaJIT-2.1.0-beta1.orig/src/host/buildvm.c LuaJIT-2.1.0-beta1/src/host/ /* Keep @plt etc. */ #else *p = '\0'; -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_arch.h LuaJIT-2.1.0-beta1/src/lj_arch.h ---- LuaJIT-2.1.0-beta1.orig/src/lj_arch.h 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_arch.h 2015-09-04 08:58:07.000000000 +0200 -@@ -324,7 +324,7 @@ + +diff -bur LuaJIT-src-orig/src/lj_arch.h LuaJIT-src/src/lj_arch.h +--- LuaJIT-src-orig/src/lj_arch.h 2016-03-07 09:43:42.712069718 +0100 ++++ LuaJIT-src/src/lj_arch.h 2016-03-07 12:31:33.351902301 +0100 +@@ -350,7 +350,7 @@ #if __GNUC__ < 4 #error "Need at least GCC 4.0 or newer" #endif diff --git a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin index b3bdead9dd6..4b278dd2c99 100644 --- a/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin +++ b/Build/source/libs/luajit/LuaJIT-PATCHES/patch-07-x86_64-cygwin @@ -1,59 +1,12 @@ -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_alloc.c LuaJIT-2.1.0-beta1/src/lj_alloc.c ---- LuaJIT-2.1.0-beta1.orig/src/lj_alloc.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_alloc.c 2015-09-27 19:05:37.000000000 +0200 -@@ -196,7 +196,7 @@ - return ptr; - } - --#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun__) -+#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun__) || defined(__CYGWIN__) - - /* OSX and FreeBSD mmap() use a naive first-fit linear search. - ** That's perfect for us. Except that -pagezero_size must be set for OSX, -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_arch.h LuaJIT-2.1.0-beta1/src/lj_arch.h ---- LuaJIT-2.1.0-beta1.orig/src/lj_arch.h 2015-09-04 08:58:07.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_arch.h 2015-09-27 19:05:37.000000000 +0200 -@@ -155,7 +155,11 @@ - #define LJ_ARCH_NAME "x64" - #define LJ_ARCH_BITS 64 - #define LJ_ARCH_ENDIAN LUAJIT_LE --#define LJ_ABI_WIN LJ_TARGET_WINDOWS -+#if LJ_TARGET_WINDOWS || __CYGWIN__ -+#define LJ_ABI_WIN 1 -+#else -+#define LJ_ABI_WIN 0 -+#endif - #define LJ_TARGET_X64 1 - #define LJ_TARGET_X86ORX64 1 - #define LJ_TARGET_EHRETREG 0 -diff -ur LuaJIT-2.1.0-beta1.orig/src/lj_err.c LuaJIT-2.1.0-beta1/src/lj_err.c ---- LuaJIT-2.1.0-beta1.orig/src/lj_err.c 2015-08-25 23:35:00.000000000 +0200 -+++ LuaJIT-2.1.0-beta1/src/lj_err.c 2015-09-27 19:05:37.000000000 +0200 -@@ -183,7 +183,7 @@ - - /* -- External frame unwinding -------------------------------------------- */ - --#if defined(__GNUC__) && !LJ_NO_UNWIND && !LJ_TARGET_WINDOWS -+#if defined(__GNUC__) && !LJ_NO_UNWIND && !LJ_ABI_WIN - - /* - ** We have to use our own definitions instead of the mandatory (!) unwind.h, -@@ -349,7 +349,7 @@ - +diff -bur LuaJIT-src-orig/src/lj_arch.h LuaJIT-src/src/lj_arch.h +--- LuaJIT-src-orig/src/lj_arch.h 2016-03-07 09:43:42.712069718 +0100 ++++ LuaJIT-src/src/lj_arch.h 2016-03-07 12:31:33.351902301 +0100 +@@ -350,7 +350,7 @@ + #if __GNUC__ < 4 + #error "Need at least GCC 4.0 or newer" + #endif +-#elif LJ_TARGET_ARM ++#elif LJ_TARGET_ARM || LJ_TARGET_PPC + #if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 2) + #error "Need at least GCC 4.2 or newer" #endif - --#elif LJ_TARGET_X64 && LJ_TARGET_WINDOWS -+#elif LJ_TARGET_X64 && LJ_ABI_WIN - - /* - ** Someone in Redmond owes me several days of my life. A lot of this is -@@ -414,7 +414,9 @@ - if (cf2) { /* We catch it, so start unwinding the upper frames. */ - if (rec->ExceptionCode == LJ_MSVC_EXCODE || - rec->ExceptionCode == LJ_GCC_EXCODE) { -+#if LJ_TARGET_WINDOWS - __DestructExceptionObject(rec, 1); -+#endif - setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRCPP)); - } else if (!LJ_EXCODE_CHECK(rec->ExceptionCode)) { - /* Don't catch access violations etc. */ |