immunio 1.1.2 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +56 -109
- data/lua-hooks/ext/all.c +3 -14
- data/lua-hooks/ext/libinjection/module.mk +5 -0
- data/lua-hooks/ext/lpeg/module.mk +6 -0
- data/lua-hooks/ext/lua-cmsgpack/module.mk +2 -0
- data/lua-hooks/ext/lua-snapshot/module.mk +2 -0
- data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
- data/lua-hooks/ext/luajit/Makefile +2 -2
- 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 +15 -2
- data/lua-hooks/ext/luajit/doc/contact.html +3 -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 +4 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_jit.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
- data/lua-hooks/ext/luajit/doc/extensions.html +9 -2
- data/lua-hooks/ext/luajit/doc/faq.html +2 -2
- data/lua-hooks/ext/luajit/doc/install.html +22 -18
- data/lua-hooks/ext/luajit/doc/luajit.html +3 -3
- data/lua-hooks/ext/luajit/doc/running.html +2 -2
- data/lua-hooks/ext/luajit/doc/status.html +2 -2
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +4 -4
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +4 -4
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +4 -4
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +4 -4
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +3 -3
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +34 -7
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +427 -102
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +5 -5
- 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 +36 -21
- data/lua-hooks/ext/luajit/src/Makefile.dep +3 -1
- data/lua-hooks/ext/luajit/src/host/buildvm.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +10 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +1 -1
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +163 -73
- data/lua-hooks/ext/luajit/src/jit/dump.lua +2 -1
- data/lua-hooks/ext/luajit/src/jit/p.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/v.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
- data/lua-hooks/ext/luajit/src/lib_aux.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_base.c +4 -5
- data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_debug.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -5
- data/lua-hooks/ext/luajit/src/lib_init.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_io.c +2 -3
- data/lua-hooks/ext/luajit/src/lib_jit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_math.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_os.c +2 -2
- data/lua-hooks/ext/luajit/src/lib_package.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_string.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_table.c +1 -1
- data/lua-hooks/ext/luajit/src/lj.supp +15 -0
- data/lua-hooks/ext/luajit/src/lj_alloc.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_api.c +4 -1
- data/lua-hooks/ext/luajit/src/lj_arch.h +33 -7
- data/lua-hooks/ext/luajit/src/lj_asm.c +12 -5
- data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +3 -13
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +337 -71
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +2 -2
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +2 -2
- 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 +2 -4
- data/lua-hooks/ext/luajit/src/lj_buf.h +1 -3
- 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 +37 -14
- data/lua-hooks/ext/luajit/src/lj_ccall.h +3 -3
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +16 -7
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.c +10 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.h +3 -1
- data/lua-hooks/ext/luajit/src/lj_clib.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cparse.c +27 -6
- data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.c +10 -8
- data/lua-hooks/ext/luajit/src/lj_ctype.h +1 -1
- 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 +1 -1
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +21 -4
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +7 -5
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_err.c +69 -31
- 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 +10 -40
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_frame.h +12 -1
- data/lua-hooks/ext/luajit/src/lj_func.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gc.c +2 -2
- data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ir.c +31 -15
- data/lua-hooks/ext/luajit/src/lj_ir.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ircall.h +29 -1
- data/lua-hooks/ext/luajit/src/lj_iropt.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_jit.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_lex.c +28 -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 +1 -1
- data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.c +8 -8
- 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 +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +10 -5
- data/lua-hooks/ext/luajit/src/lj_parse.c +1 -1
- 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 +13 -5
- data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_snap.c +20 -23
- data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.h +1 -1
- 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 +12 -98
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +4 -4
- data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +591 -0
- 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 -1
- data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +30 -2
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_trace.c +7 -2
- data/lua-hooks/ext/luajit/src/lj_trace.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -3
- 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 -3
- 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 +15 -15
- data/lua-hooks/ext/luajit/src/ljamalg.c +2 -1
- data/lua-hooks/ext/luajit/src/lua.h +1 -0
- data/lua-hooks/ext/luajit/src/luaconf.h +2 -2
- data/lua-hooks/ext/luajit/src/luajit.c +1 -1
- 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 +1 -1
- data/lua-hooks/ext/luajit/src/ps4build.bat +26 -6
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +17 -9
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +1562 -656
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +3 -7
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +10 -2
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +5 -8
- data/lua-hooks/ext/luautf8/module.mk +2 -0
- data/lua-hooks/ext/module.mk +15 -0
- data/lua-hooks/ext/modules.h +17 -0
- data/lua-hooks/ext/perf/luacpu.c +1 -1
- data/lua-hooks/ext/perf/lualoadavg.c +1 -1
- data/lua-hooks/ext/perf/luameminfo.c +1 -1
- data/lua-hooks/ext/perf/luaoslib.c +124 -2
- data/lua-hooks/ext/perf/module.mk +5 -0
- data/lua-hooks/ext/sha1/luasha1.c +4 -2
- data/lua-hooks/ext/sha1/module.mk +5 -0
- data/lua-hooks/ext/sha2/luasha256.c +4 -2
- data/lua-hooks/ext/sha2/module.mk +5 -0
- data/lua-hooks/ext/sysutils/lua_utils.c +56 -0
- data/lua-hooks/ext/sysutils/module.mk +2 -0
- data/lua-hooks/lib/boot.lua +2 -1
- data/lua-hooks/lib/hooks/module.mk +31 -0
- data/lua-hooks/lib/hooks/xss/module.mk +4 -0
- data/lua-hooks/lib/lexers/module.mk +10 -0
- data/lua-hooks/lib/module.mk +38 -0
- data/lua-hooks/lib/schema/module.mk +3 -0
- data/lua-hooks/options.mk +59 -0
- metadata +21 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Stack frames.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#ifndef _LJ_FRAME_H
|
|
@@ -218,6 +218,7 @@ enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
|
|
|
218
218
|
#define CFRAME_SHIFT_MULTRES 3
|
|
219
219
|
#endif
|
|
220
220
|
#elif LJ_TARGET_MIPS
|
|
221
|
+
#if LJ_ARCH_HASFPU
|
|
221
222
|
#define CFRAME_OFS_ERRF 124
|
|
222
223
|
#define CFRAME_OFS_NRES 120
|
|
223
224
|
#define CFRAME_OFS_PREV 116
|
|
@@ -227,6 +228,16 @@ enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
|
|
|
227
228
|
#define CFRAME_SIZE 112
|
|
228
229
|
#define CFRAME_SHIFT_MULTRES 3
|
|
229
230
|
#else
|
|
231
|
+
#define CFRAME_OFS_ERRF 76
|
|
232
|
+
#define CFRAME_OFS_NRES 72
|
|
233
|
+
#define CFRAME_OFS_PREV 68
|
|
234
|
+
#define CFRAME_OFS_L 64
|
|
235
|
+
#define CFRAME_OFS_PC 20
|
|
236
|
+
#define CFRAME_OFS_MULTRES 16
|
|
237
|
+
#define CFRAME_SIZE 64
|
|
238
|
+
#define CFRAME_SHIFT_MULTRES 3
|
|
239
|
+
#endif
|
|
240
|
+
#else
|
|
230
241
|
#error "Missing CFRAME_* definitions for this architecture"
|
|
231
242
|
#endif
|
|
232
243
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Function handling (prototypes, functions and upvalues).
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
**
|
|
5
5
|
** 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
|
** Garbage collector.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 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
|
|
@@ -69,7 +69,7 @@ static void gc_mark(global_State *g, GCobj *o)
|
|
|
69
69
|
gray2black(o); /* Closed upvalues are never gray. */
|
|
70
70
|
} else if (gct != ~LJ_TSTR && gct != ~LJ_TCDATA) {
|
|
71
71
|
lua_assert(gct == ~LJ_TFUNC || gct == ~LJ_TTAB ||
|
|
72
|
-
gct == ~LJ_TTHREAD || gct == ~LJ_TPROTO);
|
|
72
|
+
gct == ~LJ_TTHREAD || gct == ~LJ_TPROTO || gct == ~LJ_TTRACE);
|
|
73
73
|
setgcrefr(o->gch.gclist, g->gc.gray);
|
|
74
74
|
setgcref(g->gc.gray, o);
|
|
75
75
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** SSA IR (Intermediate Representation) emitter.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#define lj_ir_c
|
|
@@ -209,24 +209,13 @@ void lj_ir_k64_freeall(jit_State *J)
|
|
|
209
209
|
lj_mem_free(J2G(J), k, sizeof(K64Array));
|
|
210
210
|
k = next;
|
|
211
211
|
}
|
|
212
|
+
setmref(J->k64, NULL);
|
|
212
213
|
}
|
|
213
214
|
|
|
214
|
-
/*
|
|
215
|
-
|
|
215
|
+
/* Get new 64 bit constant slot. */
|
|
216
|
+
static TValue *ir_k64_add(jit_State *J, K64Array *kp, uint64_t u64)
|
|
216
217
|
{
|
|
217
|
-
K64Array *k, *kp = NULL;
|
|
218
218
|
TValue *ntv;
|
|
219
|
-
MSize idx;
|
|
220
|
-
/* Search for the constant in the whole chain of arrays. */
|
|
221
|
-
for (k = mref(J->k64, K64Array); k; k = mref(k->next, K64Array)) {
|
|
222
|
-
kp = k; /* Remember previous element in list. */
|
|
223
|
-
for (idx = 0; idx < k->numk; idx++) { /* Search one array. */
|
|
224
|
-
TValue *tv = &k->k[idx];
|
|
225
|
-
if (tv->u64 == u64) /* Needed for +-0/NaN/absmask. */
|
|
226
|
-
return tv;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
/* Constant was not found, need to add it. */
|
|
230
219
|
if (!(kp && kp->numk < LJ_MIN_K64SZ)) { /* Allocate a new array. */
|
|
231
220
|
K64Array *kn = lj_mem_newt(J->L, sizeof(K64Array), K64Array);
|
|
232
221
|
setmref(kn->next, NULL);
|
|
@@ -242,6 +231,33 @@ cTValue *lj_ir_k64_find(jit_State *J, uint64_t u64)
|
|
|
242
231
|
return ntv;
|
|
243
232
|
}
|
|
244
233
|
|
|
234
|
+
/* Find 64 bit constant in chained array or add it. */
|
|
235
|
+
cTValue *lj_ir_k64_find(jit_State *J, uint64_t u64)
|
|
236
|
+
{
|
|
237
|
+
K64Array *k, *kp = NULL;
|
|
238
|
+
MSize idx;
|
|
239
|
+
/* Search for the constant in the whole chain of arrays. */
|
|
240
|
+
for (k = mref(J->k64, K64Array); k; k = mref(k->next, K64Array)) {
|
|
241
|
+
kp = k; /* Remember previous element in list. */
|
|
242
|
+
for (idx = 0; idx < k->numk; idx++) { /* Search one array. */
|
|
243
|
+
TValue *tv = &k->k[idx];
|
|
244
|
+
if (tv->u64 == u64) /* Needed for +-0/NaN/absmask. */
|
|
245
|
+
return tv;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/* Otherwise add a new constant. */
|
|
249
|
+
return ir_k64_add(J, kp, u64);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
TValue *lj_ir_k64_reserve(jit_State *J)
|
|
253
|
+
{
|
|
254
|
+
K64Array *k, *kp = NULL;
|
|
255
|
+
lj_ir_k64_find(J, 0); /* Intern dummy 0 to protect the reserved slot. */
|
|
256
|
+
/* Find last K64Array, if any. */
|
|
257
|
+
for (k = mref(J->k64, K64Array); k; k = mref(k->next, K64Array)) kp = k;
|
|
258
|
+
return ir_k64_add(J, kp, 0); /* Set to 0. Final value is set later. */
|
|
259
|
+
}
|
|
260
|
+
|
|
245
261
|
/* Intern 64 bit constant, given by its address. */
|
|
246
262
|
TRef lj_ir_k64(jit_State *J, IROp op, cTValue *tv)
|
|
247
263
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** IR CALL* instruction definitions.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#ifndef _LJ_IRCALL_H
|
|
@@ -78,6 +78,12 @@ typedef struct CCallInfo {
|
|
|
78
78
|
#define IRCALLCOND_SOFTFP_FFI(x) NULL
|
|
79
79
|
#endif
|
|
80
80
|
|
|
81
|
+
#if LJ_SOFTFP && LJ_TARGET_MIPS
|
|
82
|
+
#define IRCALLCOND_SOFTFP_MIPS(x) x
|
|
83
|
+
#else
|
|
84
|
+
#define IRCALLCOND_SOFTFP_MIPS(x) NULL
|
|
85
|
+
#endif
|
|
86
|
+
|
|
81
87
|
#define LJ_NEED_FP64 (LJ_TARGET_ARM || LJ_TARGET_PPC || LJ_TARGET_MIPS)
|
|
82
88
|
|
|
83
89
|
#if LJ_HASFFI && (LJ_SOFTFP || LJ_NEED_FP64)
|
|
@@ -189,6 +195,8 @@ typedef struct CCallInfo {
|
|
|
189
195
|
_(SOFTFP, softfp_cmp, 4, N, NIL, 0) \
|
|
190
196
|
_(SOFTFP, softfp_i2d, 1, N, NUM, 0) \
|
|
191
197
|
_(SOFTFP, softfp_d2i, 2, N, INT, 0) \
|
|
198
|
+
_(SOFTFP_MIPS, lj_vm_sfmin, 4, N, NUM, 0) \
|
|
199
|
+
_(SOFTFP_MIPS, lj_vm_sfmax, 4, N, NUM, 0) \
|
|
192
200
|
_(SOFTFP_FFI, softfp_ui2d, 1, N, NUM, 0) \
|
|
193
201
|
_(SOFTFP_FFI, softfp_f2d, 1, N, NUM, 0) \
|
|
194
202
|
_(SOFTFP_FFI, softfp_d2ui, 2, N, INT, 0) \
|
|
@@ -270,6 +278,22 @@ LJ_DATA const CCallInfo lj_ir_callinfo[IRCALL__MAX+1];
|
|
|
270
278
|
#define fp64_f2l __aeabi_f2lz
|
|
271
279
|
#define fp64_f2ul __aeabi_f2ulz
|
|
272
280
|
#endif
|
|
281
|
+
#elif LJ_TARGET_MIPS
|
|
282
|
+
#define softfp_add __adddf3
|
|
283
|
+
#define softfp_sub __subdf3
|
|
284
|
+
#define softfp_mul __muldf3
|
|
285
|
+
#define softfp_div __divdf3
|
|
286
|
+
#define softfp_cmp __ledf2
|
|
287
|
+
#define softfp_i2d __floatsidf
|
|
288
|
+
#define softfp_d2i __fixdfsi
|
|
289
|
+
#define softfp_ui2d __floatunsidf
|
|
290
|
+
#define softfp_f2d __extendsfdf2
|
|
291
|
+
#define softfp_d2ui __fixunsdfsi
|
|
292
|
+
#define softfp_d2f __truncdfsf2
|
|
293
|
+
#define softfp_i2f __floatsisf
|
|
294
|
+
#define softfp_ui2f __floatunsisf
|
|
295
|
+
#define softfp_f2i __fixsfsi
|
|
296
|
+
#define softfp_f2ui __fixunssfsi
|
|
273
297
|
#else
|
|
274
298
|
#error "Missing soft-float definitions for target architecture"
|
|
275
299
|
#endif
|
|
@@ -290,6 +314,10 @@ extern float softfp_ui2f(uint32_t a);
|
|
|
290
314
|
extern int32_t softfp_f2i(float a);
|
|
291
315
|
extern uint32_t softfp_f2ui(float a);
|
|
292
316
|
#endif
|
|
317
|
+
#if LJ_TARGET_MIPS
|
|
318
|
+
extern double lj_vm_sfmin(double a, double b);
|
|
319
|
+
extern double lj_vm_sfmax(double a, double b);
|
|
320
|
+
#endif
|
|
293
321
|
#endif
|
|
294
322
|
|
|
295
323
|
#if LJ_HASFFI && LJ_NEED_FP64 && !(LJ_TARGET_ARM && LJ_SOFTFP)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Common header for IR emitter and optimizations.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#ifndef _LJ_IROPT_H
|
|
@@ -40,6 +40,7 @@ static LJ_AINLINE IRRef lj_ir_nextins(jit_State *J)
|
|
|
40
40
|
LJ_FUNC TRef LJ_FASTCALL lj_ir_kint(jit_State *J, int32_t k);
|
|
41
41
|
LJ_FUNC void lj_ir_k64_freeall(jit_State *J);
|
|
42
42
|
LJ_FUNC TRef lj_ir_k64(jit_State *J, IROp op, cTValue *tv);
|
|
43
|
+
LJ_FUNC TValue *lj_ir_k64_reserve(jit_State *J);
|
|
43
44
|
LJ_FUNC cTValue *lj_ir_k64_find(jit_State *J, uint64_t u64);
|
|
44
45
|
LJ_FUNC TRef lj_ir_knum_u64(jit_State *J, uint64_t u64);
|
|
45
46
|
LJ_FUNC TRef lj_ir_knumint(jit_State *J, lua_Number n);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Common definitions for the JIT compiler.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#ifndef _LJ_JIT_H
|
|
@@ -381,6 +381,7 @@ typedef struct jit_State {
|
|
|
381
381
|
GCRef *trace; /* Array of traces. */
|
|
382
382
|
TraceNo freetrace; /* Start of scan for next free trace. */
|
|
383
383
|
MSize sizetrace; /* Size of trace array. */
|
|
384
|
+
TValue *ktracep; /* Pointer to K64Array slot with GCtrace pointer. */
|
|
384
385
|
|
|
385
386
|
IRRef1 chain[IR__MAX]; /* IR instruction skip-list chain anchors. */
|
|
386
387
|
TRef slot[LJ_MAX_JSLOTS+LJ_STACK_EXTRA]; /* Stack slot map. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Lexical analyzer.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 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
|
|
@@ -214,6 +214,33 @@ static void lex_string(LexState *ls, TValue *tv)
|
|
|
214
214
|
c += 9;
|
|
215
215
|
}
|
|
216
216
|
break;
|
|
217
|
+
case 'u': /* Unicode escape '\u{XX...}'. */
|
|
218
|
+
if (lex_next(ls) != '{') goto err_xesc;
|
|
219
|
+
lex_next(ls);
|
|
220
|
+
c = 0;
|
|
221
|
+
do {
|
|
222
|
+
c = (c << 4) | (ls->c & 15u);
|
|
223
|
+
if (!lj_char_isdigit(ls->c)) {
|
|
224
|
+
if (!lj_char_isxdigit(ls->c)) goto err_xesc;
|
|
225
|
+
c += 9;
|
|
226
|
+
}
|
|
227
|
+
if (c >= 0x110000) goto err_xesc; /* Out of Unicode range. */
|
|
228
|
+
} while (lex_next(ls) != '}');
|
|
229
|
+
if (c < 0x800) {
|
|
230
|
+
if (c < 0x80) break;
|
|
231
|
+
lex_save(ls, 0xc0 | (c >> 6));
|
|
232
|
+
} else {
|
|
233
|
+
if (c >= 0x10000) {
|
|
234
|
+
lex_save(ls, 0xf0 | (c >> 18));
|
|
235
|
+
lex_save(ls, 0x80 | ((c >> 12) & 0x3f));
|
|
236
|
+
} else {
|
|
237
|
+
if (c >= 0xd800 && c < 0xe000) goto err_xesc; /* No surrogates. */
|
|
238
|
+
lex_save(ls, 0xe0 | (c >> 12));
|
|
239
|
+
}
|
|
240
|
+
lex_save(ls, 0x80 | ((c >> 6) & 0x3f));
|
|
241
|
+
}
|
|
242
|
+
c = 0x80 | (c & 0x3f);
|
|
243
|
+
break;
|
|
217
244
|
case 'z': /* Skip whitespace. */
|
|
218
245
|
lex_next(ls);
|
|
219
246
|
while (lj_char_isspace(ls->c))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** Metamethod handling.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
**
|
|
5
5
|
** 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
|
|
@@ -278,25 +278,25 @@ TValue *lj_meta_cat(lua_State *L, TValue *top, int left)
|
|
|
278
278
|
*/
|
|
279
279
|
TValue *e, *o = top;
|
|
280
280
|
uint64_t tlen = tvisstr(o) ? strV(o)->len : STRFMT_MAXBUF_NUM;
|
|
281
|
-
|
|
281
|
+
SBuf *sb;
|
|
282
282
|
do {
|
|
283
283
|
o--; tlen += tvisstr(o) ? strV(o)->len : STRFMT_MAXBUF_NUM;
|
|
284
284
|
} while (--left > 0 && (tvisstr(o-1) || tvisnumber(o-1)));
|
|
285
285
|
if (tlen >= LJ_MAX_STR) lj_err_msg(L, LJ_ERR_STROV);
|
|
286
|
-
|
|
286
|
+
sb = lj_buf_tmp_(L);
|
|
287
|
+
lj_buf_more(sb, (MSize)tlen);
|
|
287
288
|
for (e = top, top = o; o <= e; o++) {
|
|
288
289
|
if (tvisstr(o)) {
|
|
289
290
|
GCstr *s = strV(o);
|
|
290
291
|
MSize len = s->len;
|
|
291
|
-
|
|
292
|
+
lj_buf_putmem(sb, strdata(s), len);
|
|
292
293
|
} else if (tvisint(o)) {
|
|
293
|
-
|
|
294
|
+
lj_strfmt_putint(sb, intV(o));
|
|
294
295
|
} else {
|
|
295
|
-
|
|
296
|
-
p = lj_strfmt_wnum(p, o);
|
|
296
|
+
lj_strfmt_putfnum(sb, STRFMT_G14, numV(o));
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
setstrV(L, top,
|
|
299
|
+
setstrV(L, top, lj_buf_str(L, sb));
|
|
300
300
|
}
|
|
301
301
|
} while (left >= 1);
|
|
302
302
|
if (LJ_UNLIKELY(G(L)->gc.total >= G(L)->gc.threshold)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** LuaJIT VM tags, values and objects.
|
|
3
|
-
** Copyright (C) 2005-
|
|
3
|
+
** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
**
|
|
5
5
|
** 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
|