immunio 1.2.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -5
- data/ext/immunio/Rakefile +14 -6
- data/lib/immunio/context.rb +2 -0
- data/lib/immunio/plugins/action_view.rb +7 -668
- data/lib/immunio/plugins/action_view/action_view.rb +22 -0
- data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
- data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
- data/lib/immunio/plugins/action_view/erubi.rb +38 -0
- data/lib/immunio/plugins/action_view/erubis.rb +39 -0
- data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
- data/lib/immunio/plugins/action_view/haml.rb +46 -0
- data/lib/immunio/plugins/action_view/slim.rb +42 -0
- data/lib/immunio/plugins/action_view/template.rb +431 -0
- data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
- data/lib/immunio/plugins/http_tracker.rb +2 -0
- data/lib/immunio/plugins/io.rb +34 -0
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +36 -9
- data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
- data/lua-hooks/ext/luajit/Makefile +22 -15
- data/lua-hooks/ext/luajit/README +2 -2
- data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
- data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
- data/lua-hooks/ext/luajit/doc/changes.html +69 -3
- data/lua-hooks/ext/luajit/doc/contact.html +10 -3
- data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
- data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
- data/lua-hooks/ext/luajit/doc/faq.html +2 -2
- data/lua-hooks/ext/luajit/doc/install.html +74 -45
- data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
- data/lua-hooks/ext/luajit/doc/running.html +3 -3
- data/lua-hooks/ext/luajit/doc/status.html +13 -8
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
- data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
- data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
- data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
- data/lua-hooks/ext/luajit/src/Makefile +15 -11
- data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
- data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
- data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
- data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
- data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
- data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
- data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
- data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
- data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
- data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
- data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
- data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
- data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
- data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
- data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
- data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
- data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
- data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
- data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
- data/lua-hooks/ext/luajit/src/lj.supp +3 -3
- data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
- data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
- data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
- data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
- data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
- data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
- data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
- data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
- data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
- data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
- data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
- data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
- data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
- data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
- data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
- data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
- data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
- data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
- data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
- data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
- data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
- data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
- data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
- data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
- data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
- data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
- data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
- data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
- data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
- data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
- data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
- data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
- data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
- data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
- data/lua-hooks/ext/luajit/src/lua.h +9 -1
- data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
- data/lua-hooks/ext/luajit/src/luajit.c +69 -54
- data/lua-hooks/ext/luajit/src/luajit.h +4 -4
- data/lua-hooks/ext/luajit/src/lualib.h +1 -1
- data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
- data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
- data/lua-hooks/libluahooks.darwin.a +0 -0
- data/lua-hooks/libluahooks.linux.a +0 -0
- data/lua-hooks/options.mk +1 -1
- metadata +37 -77
- data/lua-hooks/ext/all.c +0 -69
- data/lua-hooks/ext/libinjection/COPYING +0 -37
- data/lua-hooks/ext/libinjection/libinjection.h +0 -65
- data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
- data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
- data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
- data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
- data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
- data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
- data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
- data/lua-hooks/ext/libinjection/lualib.c +0 -145
- data/lua-hooks/ext/libinjection/module.mk +0 -5
- data/lua-hooks/ext/lpeg/HISTORY +0 -96
- data/lua-hooks/ext/lpeg/lpcap.c +0 -537
- data/lua-hooks/ext/lpeg/lpcap.h +0 -56
- data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
- data/lua-hooks/ext/lpeg/lpcode.h +0 -40
- data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
- data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
- data/lua-hooks/ext/lpeg/lpprint.c +0 -244
- data/lua-hooks/ext/lpeg/lpprint.h +0 -36
- data/lua-hooks/ext/lpeg/lptree.c +0 -1303
- data/lua-hooks/ext/lpeg/lptree.h +0 -82
- data/lua-hooks/ext/lpeg/lptypes.h +0 -149
- data/lua-hooks/ext/lpeg/lpvm.c +0 -364
- data/lua-hooks/ext/lpeg/lpvm.h +0 -58
- data/lua-hooks/ext/lpeg/makefile +0 -55
- data/lua-hooks/ext/lpeg/module.mk +0 -6
- data/lua-hooks/ext/lpeg/re.html +0 -498
- data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
- data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
- data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
- data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
- data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
- data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
- data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
- data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
- data/lua-hooks/ext/lua-snapshot/README.md +0 -18
- data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
- data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
- data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
- data/lua-hooks/ext/luautf8/README.md +0 -152
- data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
- data/lua-hooks/ext/luautf8/module.mk +0 -2
- data/lua-hooks/ext/luautf8/unidata.h +0 -3064
- data/lua-hooks/ext/module.mk +0 -15
- data/lua-hooks/ext/modules.h +0 -17
- data/lua-hooks/ext/perf/luacpu.c +0 -114
- data/lua-hooks/ext/perf/lualoadavg.c +0 -40
- data/lua-hooks/ext/perf/luameminfo.c +0 -38
- data/lua-hooks/ext/perf/luaoslib.c +0 -203
- data/lua-hooks/ext/perf/module.mk +0 -5
- data/lua-hooks/ext/sha1/luasha1.c +0 -74
- data/lua-hooks/ext/sha1/module.mk +0 -5
- data/lua-hooks/ext/sha1/sha1.c +0 -145
- data/lua-hooks/ext/sha2/luasha256.c +0 -77
- data/lua-hooks/ext/sha2/module.mk +0 -5
- data/lua-hooks/ext/sha2/sha256.c +0 -196
- data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
- data/lua-hooks/ext/sysutils/module.mk +0 -2
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Auxiliary library for the Lua/C API.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major parts taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -107,38 +107,36 @@ LUALIB_API const char *luaL_findtable(lua_State *L, int idx,
|
|
107
107
|
static int libsize(const luaL_Reg *l)
|
108
108
|
{
|
109
109
|
int size = 0;
|
110
|
-
for (; l->name; l++) size++;
|
110
|
+
for (; l && l->name; l++) size++;
|
111
111
|
return size;
|
112
112
|
}
|
113
113
|
|
114
|
+
LUALIB_API void luaL_pushmodule(lua_State *L, const char *modname, int sizehint)
|
115
|
+
{
|
116
|
+
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16);
|
117
|
+
lua_getfield(L, -1, modname);
|
118
|
+
if (!lua_istable(L, -1)) {
|
119
|
+
lua_pop(L, 1);
|
120
|
+
if (luaL_findtable(L, LUA_GLOBALSINDEX, modname, sizehint) != NULL)
|
121
|
+
lj_err_callerv(L, LJ_ERR_BADMODN, modname);
|
122
|
+
lua_pushvalue(L, -1);
|
123
|
+
lua_setfield(L, -3, modname); /* _LOADED[modname] = new table. */
|
124
|
+
}
|
125
|
+
lua_remove(L, -2); /* Remove _LOADED table. */
|
126
|
+
}
|
127
|
+
|
114
128
|
LUALIB_API void luaL_openlib(lua_State *L, const char *libname,
|
115
129
|
const luaL_Reg *l, int nup)
|
116
130
|
{
|
117
131
|
lj_lib_checkfpu(L);
|
118
132
|
if (libname) {
|
119
|
-
|
120
|
-
/*
|
121
|
-
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16);
|
122
|
-
lua_getfield(L, -1, libname); /* get _LOADED[libname] */
|
123
|
-
if (!lua_istable(L, -1)) { /* not found? */
|
124
|
-
lua_pop(L, 1); /* remove previous result */
|
125
|
-
/* try global variable (and create one if it does not exist) */
|
126
|
-
if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, size) != NULL)
|
127
|
-
lj_err_callerv(L, LJ_ERR_BADMODN, libname);
|
128
|
-
lua_pushvalue(L, -1);
|
129
|
-
lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */
|
130
|
-
}
|
131
|
-
lua_remove(L, -2); /* remove _LOADED table */
|
132
|
-
lua_insert(L, -(nup+1)); /* move library table to below upvalues */
|
133
|
-
}
|
134
|
-
for (; l->name; l++) {
|
135
|
-
int i;
|
136
|
-
for (i = 0; i < nup; i++) /* copy upvalues to the top */
|
137
|
-
lua_pushvalue(L, -nup);
|
138
|
-
lua_pushcclosure(L, l->func, nup);
|
139
|
-
lua_setfield(L, -(nup+2), l->name);
|
133
|
+
luaL_pushmodule(L, libname, libsize(l));
|
134
|
+
lua_insert(L, -(nup + 1)); /* Move module table below upvalues. */
|
140
135
|
}
|
141
|
-
|
136
|
+
if (l)
|
137
|
+
luaL_setfuncs(L, l, nup);
|
138
|
+
else
|
139
|
+
lua_pop(L, nup); /* Remove upvalues. */
|
142
140
|
}
|
143
141
|
|
144
142
|
LUALIB_API void luaL_register(lua_State *L, const char *libname,
|
@@ -147,6 +145,19 @@ LUALIB_API void luaL_register(lua_State *L, const char *libname,
|
|
147
145
|
luaL_openlib(L, libname, l, 0);
|
148
146
|
}
|
149
147
|
|
148
|
+
LUALIB_API void luaL_setfuncs(lua_State *L, const luaL_Reg *l, int nup)
|
149
|
+
{
|
150
|
+
luaL_checkstack(L, nup, "too many upvalues");
|
151
|
+
for (; l->name; l++) {
|
152
|
+
int i;
|
153
|
+
for (i = 0; i < nup; i++) /* Copy upvalues to the top. */
|
154
|
+
lua_pushvalue(L, -nup);
|
155
|
+
lua_pushcclosure(L, l->func, nup);
|
156
|
+
lua_setfield(L, -(nup + 2), l->name);
|
157
|
+
}
|
158
|
+
lua_pop(L, nup); /* Remove upvalues. */
|
159
|
+
}
|
160
|
+
|
150
161
|
LUALIB_API const char *luaL_gsub(lua_State *L, const char *s,
|
151
162
|
const char *p, const char *r)
|
152
163
|
{
|
@@ -302,7 +313,7 @@ static int panic(lua_State *L)
|
|
302
313
|
|
303
314
|
#ifdef LUAJIT_USE_SYSMALLOC
|
304
315
|
|
305
|
-
#if LJ_64 && !defined(LUAJIT_USE_VALGRIND)
|
316
|
+
#if LJ_64 && !LJ_GC64 && !defined(LUAJIT_USE_VALGRIND)
|
306
317
|
#error "Must use builtin allocator for 64 bit target"
|
307
318
|
#endif
|
308
319
|
|
@@ -334,7 +345,7 @@ LUALIB_API lua_State *luaL_newstate(void)
|
|
334
345
|
lua_State *L;
|
335
346
|
void *ud = lj_alloc_create();
|
336
347
|
if (ud == NULL) return NULL;
|
337
|
-
#if LJ_64
|
348
|
+
#if LJ_64 && !LJ_GC64
|
338
349
|
L = lj_state_newstate(lj_alloc_f, ud);
|
339
350
|
#else
|
340
351
|
L = lua_newstate(lj_alloc_f, ud);
|
@@ -343,7 +354,7 @@ LUALIB_API lua_State *luaL_newstate(void)
|
|
343
354
|
return L;
|
344
355
|
}
|
345
356
|
|
346
|
-
#if LJ_64
|
357
|
+
#if LJ_64 && !LJ_GC64
|
347
358
|
LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
|
348
359
|
{
|
349
360
|
UNUSED(f); UNUSED(ud);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Base and coroutine library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#include "lj_tab.h"
|
24
24
|
#include "lj_meta.h"
|
25
25
|
#include "lj_state.h"
|
26
|
+
#include "lj_frame.h"
|
26
27
|
#if LJ_HASFFI
|
27
28
|
#include "lj_ctype.h"
|
28
29
|
#include "lj_cconv.h"
|
@@ -345,7 +346,7 @@ LJLIB_ASM_(xpcall) LJLIB_REC(.)
|
|
345
346
|
|
346
347
|
static int load_aux(lua_State *L, int status, int envarg)
|
347
348
|
{
|
348
|
-
if (status ==
|
349
|
+
if (status == LUA_OK) {
|
349
350
|
if (tvistab(L->base+envarg-1)) {
|
350
351
|
GCfunc *fn = funcV(L->top-1);
|
351
352
|
GCtab *t = tabV(L->base+envarg-1);
|
@@ -418,7 +419,7 @@ LJLIB_CF(dofile)
|
|
418
419
|
GCstr *fname = lj_lib_optstr(L, 1);
|
419
420
|
setnilV(L->top);
|
420
421
|
L->top = L->base+1;
|
421
|
-
if (luaL_loadfile(L, fname ? strdata(fname) : NULL) !=
|
422
|
+
if (luaL_loadfile(L, fname ? strdata(fname) : NULL) != LUA_OK)
|
422
423
|
lua_error(L);
|
423
424
|
lua_call(L, 0, LUA_MULTRET);
|
424
425
|
return (int)(L->top - L->base) - 1;
|
@@ -536,7 +537,7 @@ LJLIB_CF(coroutine_status)
|
|
536
537
|
co = threadV(L->base);
|
537
538
|
if (co == L) s = "running";
|
538
539
|
else if (co->status == LUA_YIELD) s = "suspended";
|
539
|
-
else if (co->status !=
|
540
|
+
else if (co->status != LUA_OK) s = "dead";
|
540
541
|
else if (co->base > tvref(co->stack)+1+LJ_FR2) s = "normal";
|
541
542
|
else if (co->top == co->base) s = "dead";
|
542
543
|
else s = "suspended";
|
@@ -557,6 +558,12 @@ LJLIB_CF(coroutine_running)
|
|
557
558
|
#endif
|
558
559
|
}
|
559
560
|
|
561
|
+
LJLIB_CF(coroutine_isyieldable)
|
562
|
+
{
|
563
|
+
setboolV(L->top++, cframe_canyield(L->cframe));
|
564
|
+
return 1;
|
565
|
+
}
|
566
|
+
|
560
567
|
LJLIB_CF(coroutine_create)
|
561
568
|
{
|
562
569
|
lua_State *L1;
|
@@ -576,7 +583,7 @@ LJLIB_ASM(coroutine_yield)
|
|
576
583
|
static int ffh_resume(lua_State *L, lua_State *co, int wrap)
|
577
584
|
{
|
578
585
|
if (co->cframe != NULL || co->status > LUA_YIELD ||
|
579
|
-
(co->status ==
|
586
|
+
(co->status == LUA_OK && co->top == co->base)) {
|
580
587
|
ErrMsg em = co->cframe ? LJ_ERR_CORUN : LJ_ERR_CODEAD;
|
581
588
|
if (wrap) lj_err_caller(L, em);
|
582
589
|
setboolV(L->base-1-LJ_FR2, 0);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Debug library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -283,13 +283,13 @@ LJLIB_CF(debug_setuservalue)
|
|
283
283
|
|
284
284
|
/* ------------------------------------------------------------------------ */
|
285
285
|
|
286
|
-
|
286
|
+
#define KEY_HOOK ((void *)0x3004)
|
287
287
|
|
288
288
|
static void hookf(lua_State *L, lua_Debug *ar)
|
289
289
|
{
|
290
290
|
static const char *const hooknames[] =
|
291
291
|
{"call", "return", "line", "count", "tail return"};
|
292
|
-
lua_pushlightuserdata(L,
|
292
|
+
lua_pushlightuserdata(L, KEY_HOOK);
|
293
293
|
lua_rawget(L, LUA_REGISTRYINDEX);
|
294
294
|
if (lua_isfunction(L, -1)) {
|
295
295
|
lua_pushstring(L, hooknames[(int)ar->event]);
|
@@ -334,7 +334,7 @@ LJLIB_CF(debug_sethook)
|
|
334
334
|
count = luaL_optint(L, arg+3, 0);
|
335
335
|
func = hookf; mask = makemask(smask, count);
|
336
336
|
}
|
337
|
-
lua_pushlightuserdata(L,
|
337
|
+
lua_pushlightuserdata(L, KEY_HOOK);
|
338
338
|
lua_pushvalue(L, arg+1);
|
339
339
|
lua_rawset(L, LUA_REGISTRYINDEX);
|
340
340
|
lua_sethook(L, func, mask, count);
|
@@ -349,7 +349,7 @@ LJLIB_CF(debug_gethook)
|
|
349
349
|
if (hook != NULL && hook != hookf) { /* external hook? */
|
350
350
|
lua_pushliteral(L, "external hook");
|
351
351
|
} else {
|
352
|
-
lua_pushlightuserdata(L,
|
352
|
+
lua_pushlightuserdata(L, KEY_HOOK);
|
353
353
|
lua_rawget(L, LUA_REGISTRYINDEX); /* get hook */
|
354
354
|
}
|
355
355
|
lua_pushstring(L, unmakemask(mask, buff));
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** FFI library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#define lib_ffi_c
|
@@ -829,7 +829,7 @@ static GCtab *ffi_finalizer(lua_State *L)
|
|
829
829
|
settabV(L, L->top++, t);
|
830
830
|
setgcref(t->metatable, obj2gco(t));
|
831
831
|
setstrV(L, lj_tab_setstr(L, t, lj_str_newlit(L, "__mode")),
|
832
|
-
lj_str_newlit(L, "
|
832
|
+
lj_str_newlit(L, "k"));
|
833
833
|
t->nomm = (uint8_t)(~(1u<<MM_mode));
|
834
834
|
return t;
|
835
835
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Library initialization.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major parts taken verbatim from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -20,24 +20,24 @@ This file is commented to prevent duplicated symbols.
|
|
20
20
|
#include "lj_arch.h"
|
21
21
|
|
22
22
|
static const luaL_Reg lj_lib_load[] = {
|
23
|
-
{ "",
|
24
|
-
{ LUA_LOADLIBNAME,
|
25
|
-
{ LUA_TABLIBNAME,
|
26
|
-
{ LUA_IOLIBNAME,
|
27
|
-
{ LUA_OSLIBNAME,
|
28
|
-
{ LUA_STRLIBNAME,
|
29
|
-
{ LUA_MATHLIBNAME,
|
30
|
-
{ LUA_DBLIBNAME,
|
31
|
-
{ LUA_BITLIBNAME,
|
32
|
-
{ LUA_JITLIBNAME,
|
33
|
-
{ NULL,
|
23
|
+
{ "", luaopen_base },
|
24
|
+
{ LUA_LOADLIBNAME, luaopen_package },
|
25
|
+
{ LUA_TABLIBNAME, luaopen_table },
|
26
|
+
{ LUA_IOLIBNAME, luaopen_io },
|
27
|
+
{ LUA_OSLIBNAME, luaopen_os },
|
28
|
+
{ LUA_STRLIBNAME, luaopen_string },
|
29
|
+
{ LUA_MATHLIBNAME, luaopen_math },
|
30
|
+
{ LUA_DBLIBNAME, luaopen_debug },
|
31
|
+
{ LUA_BITLIBNAME, luaopen_bit },
|
32
|
+
{ LUA_JITLIBNAME, luaopen_jit },
|
33
|
+
{ NULL, NULL }
|
34
34
|
};
|
35
35
|
|
36
36
|
static const luaL_Reg lj_lib_preload[] = {
|
37
37
|
#if LJ_HASFFI
|
38
|
-
{ LUA_FFILIBNAME,
|
38
|
+
{ LUA_FFILIBNAME, luaopen_ffi },
|
39
39
|
#endif
|
40
|
-
{ NULL,
|
40
|
+
{ NULL, NULL }
|
41
41
|
};
|
42
42
|
|
43
43
|
LUALIB_API void luaL_openlibs(lua_State *L)
|
@@ -49,11 +49,11 @@ LUALIB_API void luaL_openlibs(lua_State *L)
|
|
49
49
|
lua_call(L, 1, 0);
|
50
50
|
}
|
51
51
|
luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD",
|
52
|
-
|
52
|
+
sizeof(lj_lib_preload)/sizeof(lj_lib_preload[0])-1);
|
53
53
|
for (lib = lj_lib_preload; lib->func; lib++) {
|
54
54
|
lua_pushcfunction(L, lib->func);
|
55
55
|
lua_setfield(L, -2, lib->name);
|
56
56
|
}
|
57
57
|
lua_pop(L, 1);
|
58
58
|
}
|
59
|
-
*/
|
59
|
+
*/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** I/O library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2011 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -203,13 +203,12 @@ static int io_file_read(lua_State *L, FILE *fp, int start)
|
|
203
203
|
for (n = start; nargs-- && ok; n++) {
|
204
204
|
if (tvisstr(L->base+n)) {
|
205
205
|
const char *p = strVdata(L->base+n);
|
206
|
-
if (p[0]
|
207
|
-
|
208
|
-
if (p[1] == 'n')
|
206
|
+
if (p[0] == '*') p++;
|
207
|
+
if (p[0] == 'n')
|
209
208
|
ok = io_file_readnum(L, fp);
|
210
|
-
else if ((p[
|
211
|
-
ok = io_file_readline(L, fp, (p[
|
212
|
-
else if (p[
|
209
|
+
else if ((p[0] & ~0x20) == 'L')
|
210
|
+
ok = io_file_readline(L, fp, (p[0] == 'l'));
|
211
|
+
else if (p[0] == 'a')
|
213
212
|
io_file_readall(L, fp);
|
214
213
|
else
|
215
214
|
lj_err_arg(L, n+1, LJ_ERR_INVFMT);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** JIT library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#define lib_jit_c
|
@@ -204,6 +204,7 @@ LJLIB_CF(jit_util_funcinfo)
|
|
204
204
|
lua_setfield(L, -2, "source");
|
205
205
|
lj_debug_pushloc(L, pt, pc);
|
206
206
|
lua_setfield(L, -2, "loc");
|
207
|
+
setprotoV(L, lj_tab_setstr(L, t, lj_str_newlit(L, "proto")), pt);
|
207
208
|
} else {
|
208
209
|
GCfunc *fn = funcV(L->base);
|
209
210
|
GCtab *t;
|
@@ -668,6 +669,11 @@ static uint32_t jit_cpudetect(lua_State *L)
|
|
668
669
|
if (fam >= 0x00000f00) /* K8, K10. */
|
669
670
|
flags |= JIT_F_PREFER_IMUL;
|
670
671
|
}
|
672
|
+
if (vendor[0] >= 7) {
|
673
|
+
uint32_t xfeatures[4];
|
674
|
+
lj_vm_cpuid(7, xfeatures);
|
675
|
+
flags |= ((xfeatures[1] >> 8)&1) * JIT_F_BMI2;
|
676
|
+
}
|
671
677
|
#endif
|
672
678
|
}
|
673
679
|
/* Check for required instruction set support on x86 (unnecessary on x64). */
|
@@ -710,15 +716,19 @@ static uint32_t jit_cpudetect(lua_State *L)
|
|
710
716
|
#if LJ_HASJIT
|
711
717
|
/* Compile-time MIPS CPU detection. */
|
712
718
|
#if LJ_ARCH_VERSION >= 20
|
713
|
-
flags |=
|
719
|
+
flags |= JIT_F_MIPSXXR2;
|
714
720
|
#endif
|
715
721
|
/* Runtime MIPS CPU detection. */
|
716
722
|
#if defined(__GNUC__)
|
717
|
-
if (!(flags &
|
723
|
+
if (!(flags & JIT_F_MIPSXXR2)) {
|
718
724
|
int x;
|
725
|
+
#ifdef __mips16
|
726
|
+
x = 0; /* Runtime detection is difficult. Ensure optimal -march flags. */
|
727
|
+
#else
|
719
728
|
/* On MIPS32R1 rotr is treated as srl. rotr r2,r2,1 -> srl r2,r2,1. */
|
720
729
|
__asm__("li $2, 1\n\t.long 0x00221042\n\tmove %0, $2" : "=r"(x) : : "$2");
|
721
|
-
|
730
|
+
#endif
|
731
|
+
if (x) flags |= JIT_F_MIPSXXR2; /* Either 0x80000000 (R2) or 0 (R1). */
|
722
732
|
}
|
723
733
|
#endif
|
724
734
|
#endif
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Math library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#include <math.h>
|
@@ -221,10 +221,6 @@ LUALIB_API int luaopen_math(lua_State *L)
|
|
221
221
|
rs = (RandomState *)lua_newuserdata(L, sizeof(RandomState));
|
222
222
|
rs->valid = 0; /* Use lazy initialization to save some time on startup. */
|
223
223
|
LJ_LIB_REG(L, LUA_MATHLIBNAME, math);
|
224
|
-
#if defined(LUA_COMPAT_MOD) && !LJ_52
|
225
|
-
lua_getfield(L, -1, "fmod");
|
226
|
-
lua_setfield(L, -2, "mod");
|
227
|
-
#endif
|
228
224
|
return 1;
|
229
225
|
}
|
230
226
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** OS library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Package library.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
**
|
5
5
|
** Major portions taken verbatim or adapted from the Lua interpreter.
|
6
6
|
** Copyright (C) 1994-2012 Lua.org, PUC-Rio. See Copyright Notice in lua.h
|
@@ -193,8 +193,7 @@ static void **ll_register(lua_State *L, const char *path)
|
|
193
193
|
lua_pop(L, 1);
|
194
194
|
plib = (void **)lua_newuserdata(L, sizeof(void *));
|
195
195
|
*plib = NULL;
|
196
|
-
|
197
|
-
lua_setmetatable(L, -2);
|
196
|
+
luaL_setmetatable(L, "_LOADLIB");
|
198
197
|
lua_pushfstring(L, "LOADLIB: %s", path);
|
199
198
|
lua_pushvalue(L, -2);
|
200
199
|
lua_settable(L, LUA_REGISTRYINDEX);
|
@@ -399,8 +398,7 @@ static int lj_cf_package_loader_preload(lua_State *L)
|
|
399
398
|
|
400
399
|
/* ------------------------------------------------------------------------ */
|
401
400
|
|
402
|
-
|
403
|
-
#define sentinel ((void *)&sentinel_)
|
401
|
+
#define sentinel ((void *)0x4004)
|
404
402
|
|
405
403
|
static int lj_cf_package_require(lua_State *L)
|
406
404
|
{
|
@@ -490,29 +488,19 @@ static void modinit(lua_State *L, const char *modname)
|
|
490
488
|
static int lj_cf_package_module(lua_State *L)
|
491
489
|
{
|
492
490
|
const char *modname = luaL_checkstring(L, 1);
|
493
|
-
int
|
494
|
-
|
495
|
-
lua_getfield(L, loaded, modname); /* get _LOADED[modname] */
|
496
|
-
if (!lua_istable(L, -1)) { /* not found? */
|
497
|
-
lua_pop(L, 1); /* remove previous result */
|
498
|
-
/* try global variable (and create one if it does not exist) */
|
499
|
-
if (luaL_findtable(L, LUA_GLOBALSINDEX, modname, 1) != NULL)
|
500
|
-
lj_err_callerv(L, LJ_ERR_BADMODN, modname);
|
501
|
-
lua_pushvalue(L, -1);
|
502
|
-
lua_setfield(L, loaded, modname); /* _LOADED[modname] = new table */
|
503
|
-
}
|
504
|
-
/* check whether table already has a _NAME field */
|
491
|
+
int lastarg = (int)(L->top - L->base);
|
492
|
+
luaL_pushmodule(L, modname, 1);
|
505
493
|
lua_getfield(L, -1, "_NAME");
|
506
|
-
if (!lua_isnil(L, -1)) { /*
|
494
|
+
if (!lua_isnil(L, -1)) { /* Module already initialized? */
|
507
495
|
lua_pop(L, 1);
|
508
|
-
} else {
|
496
|
+
} else {
|
509
497
|
lua_pop(L, 1);
|
510
498
|
modinit(L, modname);
|
511
499
|
}
|
512
500
|
lua_pushvalue(L, -1);
|
513
501
|
setfenv(L);
|
514
|
-
dooptions(L,
|
515
|
-
return
|
502
|
+
dooptions(L, lastarg);
|
503
|
+
return LJ_52;
|
516
504
|
}
|
517
505
|
|
518
506
|
static int lj_cf_package_seeall(lua_State *L)
|
@@ -583,13 +571,16 @@ LUALIB_API int luaopen_package(lua_State *L)
|
|
583
571
|
lj_lib_pushcf(L, lj_cf_package_unloadlib, 1);
|
584
572
|
lua_setfield(L, -2, "__gc");
|
585
573
|
luaL_register(L, LUA_LOADLIBNAME, package_lib);
|
586
|
-
|
587
|
-
lua_replace(L, LUA_ENVIRONINDEX);
|
574
|
+
lua_copy(L, -1, LUA_ENVIRONINDEX);
|
588
575
|
lua_createtable(L, sizeof(package_loaders)/sizeof(package_loaders[0])-1, 0);
|
589
576
|
for (i = 0; package_loaders[i] != NULL; i++) {
|
590
577
|
lj_lib_pushcf(L, package_loaders[i], 1);
|
591
578
|
lua_rawseti(L, -2, i+1);
|
592
579
|
}
|
580
|
+
#if LJ_52
|
581
|
+
lua_pushvalue(L, -1);
|
582
|
+
lua_setfield(L, -3, "searchers");
|
583
|
+
#endif
|
593
584
|
lua_setfield(L, -2, "loaders");
|
594
585
|
lua_getfield(L, LUA_REGISTRYINDEX, "LUA_NOENV");
|
595
586
|
noenv = lua_toboolean(L, -1);
|