immunio 0.15.4 → 0.16.0
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/LICENSE +0 -27
- data/ext/immunio/Rakefile +9 -0
- data/lib/immunio/plugins/active_record.rb +1 -1
- data/lib/immunio/plugins/active_record_relation.rb +1 -1
- data/lib/immunio/plugins/environment_reporter.rb +20 -0
- data/lib/immunio/rufus_lua_ext/ref.rb +1 -3
- data/lib/immunio/version.rb +1 -1
- data/lib/immunio/vm.rb +1 -2
- data/lua-hooks/Makefile +97 -0
- data/lua-hooks/ext/all.c +41 -52
- data/lua-hooks/ext/all.o +0 -0
- data/lua-hooks/ext/libinjection/libinjection_html5.o +0 -0
- data/lua-hooks/ext/libinjection/libinjection_sqli.o +0 -0
- data/lua-hooks/ext/libinjection/libinjection_xss.o +0 -0
- data/lua-hooks/ext/libinjection/lualib.c +2 -2
- data/lua-hooks/ext/lpeg/lpcap.c +2 -2
- data/lua-hooks/ext/lpeg/lpcap.o +0 -0
- data/lua-hooks/ext/lpeg/lpcode.c +2 -2
- data/lua-hooks/ext/lpeg/lpcode.h +1 -1
- data/lua-hooks/ext/lpeg/lpcode.o +0 -0
- data/lua-hooks/ext/lpeg/lpprint.o +0 -0
- data/lua-hooks/ext/lpeg/lptree.c +2 -2
- data/lua-hooks/ext/lpeg/lptypes.h +1 -1
- data/lua-hooks/ext/lpeg/lpvm.c +2 -2
- data/lua-hooks/ext/lpeg/lpvm.o +0 -0
- data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +16 -3
- data/lua-hooks/ext/lua-snapshot/snapshot.c +14 -7
- data/lua-hooks/ext/luajit/COPYRIGHT +56 -0
- data/lua-hooks/ext/luajit/Makefile +159 -0
- data/lua-hooks/ext/luajit/README +16 -0
- data/lua-hooks/ext/luajit/doc/bluequad-print.css +166 -0
- data/lua-hooks/ext/luajit/doc/bluequad.css +325 -0
- data/lua-hooks/ext/luajit/doc/changes.html +804 -0
- data/lua-hooks/ext/luajit/doc/contact.html +104 -0
- data/lua-hooks/ext/luajit/doc/ext_c_api.html +189 -0
- data/lua-hooks/ext/luajit/doc/ext_ffi.html +332 -0
- data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +570 -0
- data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +1261 -0
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +603 -0
- data/lua-hooks/ext/luajit/doc/ext_jit.html +201 -0
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +365 -0
- data/lua-hooks/ext/luajit/doc/extensions.html +448 -0
- data/lua-hooks/ext/luajit/doc/faq.html +186 -0
- data/lua-hooks/ext/luajit/doc/img/contact.png +0 -0
- data/lua-hooks/ext/luajit/doc/install.html +659 -0
- data/lua-hooks/ext/luajit/doc/luajit.html +236 -0
- data/lua-hooks/ext/luajit/doc/running.html +309 -0
- data/lua-hooks/ext/luajit/doc/status.html +118 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +456 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1125 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +518 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1166 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +416 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +953 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +419 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1919 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +83 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +12 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +471 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +1945 -0
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +1094 -0
- data/lua-hooks/ext/luajit/etc/luajit.1 +88 -0
- data/lua-hooks/ext/luajit/etc/luajit.pc +25 -0
- data/lua-hooks/ext/luajit/src/Makefile +697 -0
- data/lua-hooks/ext/luajit/src/Makefile.dep +244 -0
- data/lua-hooks/ext/luajit/src/host/README +4 -0
- data/lua-hooks/ext/luajit/src/host/buildvm +0 -0
- data/lua-hooks/ext/luajit/src/host/buildvm.c +518 -0
- data/lua-hooks/ext/luajit/src/host/buildvm.h +105 -0
- data/lua-hooks/ext/luajit/src/host/buildvm.o +0 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_arch.h +7449 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +345 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.o +0 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +229 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.o +0 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +457 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.o +0 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +45 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +368 -0
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.o +0 -0
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +197 -0
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +428 -0
- data/lua-hooks/ext/luajit/src/host/minilua +0 -0
- data/lua-hooks/ext/luajit/src/host/minilua.c +7770 -0
- data/lua-hooks/ext/luajit/src/host/minilua.o +0 -0
- data/lua-hooks/ext/luajit/src/jit/bc.lua +190 -0
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +661 -0
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +689 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +428 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +591 -0
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +838 -0
- data/lua-hooks/ext/luajit/src/jit/dump.lua +706 -0
- data/lua-hooks/ext/luajit/src/jit/p.lua +310 -0
- data/lua-hooks/ext/luajit/src/jit/v.lua +170 -0
- data/lua-hooks/ext/luajit/src/jit/vmdef.lua +362 -0
- data/lua-hooks/ext/luajit/src/jit/zone.lua +45 -0
- data/lua-hooks/ext/{lua → luajit/src}/lauxlib.h +10 -17
- data/lua-hooks/ext/luajit/src/lib_aux.c +356 -0
- data/lua-hooks/ext/luajit/src/lib_aux.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_aux_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_base.c +664 -0
- data/lua-hooks/ext/luajit/src/lib_base.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_base_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_bit.c +180 -0
- data/lua-hooks/ext/luajit/src/lib_bit.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_bit_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_debug.c +405 -0
- data/lua-hooks/ext/luajit/src/lib_debug.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_debug_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_ffi.c +872 -0
- data/lua-hooks/ext/luajit/src/lib_ffi.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_ffi_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_init.c +55 -0
- data/lua-hooks/ext/luajit/src/lib_init.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_init_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_io.c +541 -0
- data/lua-hooks/ext/luajit/src/lib_io.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_io_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_jit.c +767 -0
- data/lua-hooks/ext/luajit/src/lib_jit.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_jit_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_math.c +230 -0
- data/lua-hooks/ext/luajit/src/lib_math.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_math_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_os.c +292 -0
- data/lua-hooks/ext/luajit/src/lib_os.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_os_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_package.c +610 -0
- data/lua-hooks/ext/luajit/src/lib_package.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_package_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_string.c +752 -0
- data/lua-hooks/ext/luajit/src/lib_string.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_string_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_table.c +307 -0
- data/lua-hooks/ext/luajit/src/lib_table.o +0 -0
- data/lua-hooks/ext/luajit/src/lib_table_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/libluajit.a +0 -0
- data/lua-hooks/ext/luajit/src/libluajit.so +0 -0
- data/lua-hooks/ext/luajit/src/lj.supp +26 -0
- data/lua-hooks/ext/luajit/src/lj_alloc.c +1398 -0
- data/lua-hooks/ext/luajit/src/lj_alloc.h +17 -0
- data/lua-hooks/ext/luajit/src/lj_alloc.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_alloc_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_api.c +1210 -0
- data/lua-hooks/ext/luajit/src/lj_api.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_api_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_arch.h +509 -0
- data/lua-hooks/ext/luajit/src/lj_asm.c +2278 -0
- data/lua-hooks/ext/luajit/src/lj_asm.h +17 -0
- data/lua-hooks/ext/luajit/src/lj_asm.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +2217 -0
- data/lua-hooks/ext/luajit/src/lj_asm_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +1833 -0
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +2015 -0
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +2634 -0
- data/lua-hooks/ext/luajit/src/lj_bc.c +14 -0
- data/lua-hooks/ext/luajit/src/lj_bc.h +265 -0
- data/lua-hooks/ext/luajit/src/lj_bc.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_bc_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_bcdef.h +220 -0
- data/lua-hooks/ext/luajit/src/lj_bcdump.h +68 -0
- data/lua-hooks/ext/luajit/src/lj_bcread.c +457 -0
- data/lua-hooks/ext/luajit/src/lj_bcread.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_bcread_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_bcwrite.c +361 -0
- data/lua-hooks/ext/luajit/src/lj_bcwrite.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_bcwrite_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_buf.c +234 -0
- data/lua-hooks/ext/luajit/src/lj_buf.h +105 -0
- data/lua-hooks/ext/luajit/src/lj_buf.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_buf_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_carith.c +429 -0
- data/lua-hooks/ext/luajit/src/lj_carith.h +37 -0
- data/lua-hooks/ext/luajit/src/lj_carith.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_carith_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ccall.c +984 -0
- data/lua-hooks/ext/luajit/src/lj_ccall.h +178 -0
- data/lua-hooks/ext/luajit/src/lj_ccall.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ccall_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +712 -0
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +25 -0
- data/lua-hooks/ext/luajit/src/lj_ccallback.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ccallback_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cconv.c +752 -0
- data/lua-hooks/ext/luajit/src/lj_cconv.h +70 -0
- data/lua-hooks/ext/luajit/src/lj_cconv.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cconv_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cdata.c +288 -0
- data/lua-hooks/ext/luajit/src/lj_cdata.h +76 -0
- data/lua-hooks/ext/luajit/src/lj_cdata.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cdata_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_char.c +43 -0
- data/lua-hooks/ext/luajit/src/lj_char.h +42 -0
- data/lua-hooks/ext/luajit/src/lj_char.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_char_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_clib.c +418 -0
- data/lua-hooks/ext/luajit/src/lj_clib.h +29 -0
- data/lua-hooks/ext/luajit/src/lj_clib.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_clib_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cparse.c +1862 -0
- data/lua-hooks/ext/luajit/src/lj_cparse.h +65 -0
- data/lua-hooks/ext/luajit/src/lj_cparse.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_cparse_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_crecord.c +1834 -0
- data/lua-hooks/ext/luajit/src/lj_crecord.h +38 -0
- data/lua-hooks/ext/luajit/src/lj_crecord.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_crecord_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ctype.c +635 -0
- data/lua-hooks/ext/luajit/src/lj_ctype.h +461 -0
- data/lua-hooks/ext/luajit/src/lj_ctype.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ctype_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_debug.c +699 -0
- data/lua-hooks/ext/luajit/src/lj_debug.h +65 -0
- data/lua-hooks/ext/luajit/src/lj_debug.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_debug_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_def.h +365 -0
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +557 -0
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +138 -0
- data/lua-hooks/ext/luajit/src/lj_dispatch.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_dispatch_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +356 -0
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +211 -0
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +238 -0
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +462 -0
- data/lua-hooks/ext/luajit/src/lj_err.c +794 -0
- data/lua-hooks/ext/luajit/src/lj_err.h +41 -0
- data/lua-hooks/ext/luajit/src/lj_err.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_err_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_errmsg.h +190 -0
- data/lua-hooks/ext/luajit/src/lj_ff.h +18 -0
- data/lua-hooks/ext/luajit/src/lj_ffdef.h +209 -0
- data/lua-hooks/ext/luajit/src/lj_ffrecord.c +1247 -0
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +24 -0
- data/lua-hooks/ext/luajit/src/lj_ffrecord.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ffrecord_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_folddef.h +1138 -0
- data/lua-hooks/ext/luajit/src/lj_frame.h +259 -0
- data/lua-hooks/ext/luajit/src/lj_func.c +185 -0
- data/lua-hooks/ext/luajit/src/lj_func.h +24 -0
- data/lua-hooks/ext/luajit/src/lj_func.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_func_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_gc.c +845 -0
- data/lua-hooks/ext/luajit/src/lj_gc.h +134 -0
- data/lua-hooks/ext/luajit/src/lj_gc.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_gc_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +787 -0
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +22 -0
- data/lua-hooks/ext/luajit/src/lj_gdbjit.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_gdbjit_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ir.c +505 -0
- data/lua-hooks/ext/luajit/src/lj_ir.h +577 -0
- data/lua-hooks/ext/luajit/src/lj_ir.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ir_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_ircall.h +321 -0
- data/lua-hooks/ext/luajit/src/lj_iropt.h +161 -0
- data/lua-hooks/ext/luajit/src/lj_jit.h +440 -0
- data/lua-hooks/ext/luajit/src/lj_lex.c +482 -0
- data/lua-hooks/ext/luajit/src/lj_lex.h +86 -0
- data/lua-hooks/ext/luajit/src/lj_lex.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_lex_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_lib.c +303 -0
- data/lua-hooks/ext/luajit/src/lj_lib.h +115 -0
- data/lua-hooks/ext/luajit/src/lj_lib.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_lib_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_libdef.h +414 -0
- data/lua-hooks/ext/luajit/src/lj_load.c +168 -0
- data/lua-hooks/ext/luajit/src/lj_load.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_load_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_mcode.c +386 -0
- data/lua-hooks/ext/luajit/src/lj_mcode.h +30 -0
- data/lua-hooks/ext/luajit/src/lj_mcode.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_mcode_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_meta.c +477 -0
- data/lua-hooks/ext/luajit/src/lj_meta.h +38 -0
- data/lua-hooks/ext/luajit/src/lj_meta.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_meta_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_obj.c +50 -0
- data/lua-hooks/ext/luajit/src/lj_obj.h +976 -0
- data/lua-hooks/ext/luajit/src/lj_obj.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_obj_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +78 -0
- data/lua-hooks/ext/luajit/src/lj_opt_dce.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_dce_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +2488 -0
- data/lua-hooks/ext/luajit/src/lj_opt_fold.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_fold_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +449 -0
- data/lua-hooks/ext/luajit/src/lj_opt_loop.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_loop_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +935 -0
- data/lua-hooks/ext/luajit/src/lj_opt_mem.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_mem_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +652 -0
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_narrow_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +245 -0
- data/lua-hooks/ext/luajit/src/lj_opt_sink.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_sink_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +856 -0
- data/lua-hooks/ext/luajit/src/lj_opt_split.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_opt_split_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_parse.c +2725 -0
- data/lua-hooks/ext/luajit/src/lj_parse.h +18 -0
- data/lua-hooks/ext/luajit/src/lj_parse.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_parse_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_profile.c +368 -0
- data/lua-hooks/ext/luajit/src/lj_profile.h +21 -0
- data/lua-hooks/ext/luajit/src/lj_profile.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_profile_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_recdef.h +270 -0
- data/lua-hooks/ext/luajit/src/lj_record.c +2554 -0
- data/lua-hooks/ext/luajit/src/lj_record.h +45 -0
- data/lua-hooks/ext/luajit/src/lj_record.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_record_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_snap.c +870 -0
- data/lua-hooks/ext/luajit/src/lj_snap.h +34 -0
- data/lua-hooks/ext/luajit/src/lj_snap.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_snap_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_state.c +300 -0
- data/lua-hooks/ext/luajit/src/lj_state.h +35 -0
- data/lua-hooks/ext/luajit/src/lj_state.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_state_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_str.c +197 -0
- data/lua-hooks/ext/luajit/src/lj_str.h +27 -0
- data/lua-hooks/ext/luajit/src/lj_str.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_str_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_strfmt.c +554 -0
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +125 -0
- data/lua-hooks/ext/luajit/src/lj_strfmt.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_strfmt_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_strscan.c +547 -0
- data/lua-hooks/ext/luajit/src/lj_strscan.h +39 -0
- data/lua-hooks/ext/luajit/src/lj_strscan.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_strscan_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_tab.c +666 -0
- data/lua-hooks/ext/luajit/src/lj_tab.h +73 -0
- data/lua-hooks/ext/luajit/src/lj_tab.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_tab_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_target.h +164 -0
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +270 -0
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +97 -0
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +260 -0
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +280 -0
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +345 -0
- data/lua-hooks/ext/luajit/src/lj_trace.c +859 -0
- data/lua-hooks/ext/luajit/src/lj_trace.h +54 -0
- data/lua-hooks/ext/luajit/src/lj_trace.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_trace_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +63 -0
- data/lua-hooks/ext/luajit/src/lj_udata.c +34 -0
- data/lua-hooks/ext/luajit/src/lj_udata.h +14 -0
- data/lua-hooks/ext/luajit/src/lj_udata.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_udata_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vm.S +2730 -0
- data/lua-hooks/ext/luajit/src/lj_vm.h +114 -0
- data/lua-hooks/ext/luajit/src/lj_vm.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vm_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vmevent.c +58 -0
- data/lua-hooks/ext/luajit/src/lj_vmevent.h +59 -0
- data/lua-hooks/ext/luajit/src/lj_vmevent.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vmevent_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vmmath.c +152 -0
- data/lua-hooks/ext/luajit/src/lj_vmmath.o +0 -0
- data/lua-hooks/ext/luajit/src/lj_vmmath_dyn.o +0 -0
- data/lua-hooks/ext/luajit/src/ljamalg.c +96 -0
- data/lua-hooks/ext/{lua → luajit/src}/lua.h +12 -7
- data/lua-hooks/ext/luajit/src/lua.hpp +9 -0
- data/lua-hooks/ext/luajit/src/luaconf.h +156 -0
- data/lua-hooks/ext/luajit/src/luajit +0 -0
- data/lua-hooks/ext/luajit/src/luajit.c +570 -0
- data/lua-hooks/ext/luajit/src/luajit.h +79 -0
- data/lua-hooks/ext/luajit/src/luajit.o +0 -0
- data/lua-hooks/ext/luajit/src/lualib.h +43 -0
- data/lua-hooks/ext/luajit/src/msvcbuild.bat +114 -0
- data/lua-hooks/ext/luajit/src/ps4build.bat +103 -0
- data/lua-hooks/ext/luajit/src/psvitabuild.bat +93 -0
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +4585 -0
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +3764 -0
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +4355 -0
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +5252 -0
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +4902 -0
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +5710 -0
- data/lua-hooks/ext/luajit/src/xb1build.bat +101 -0
- data/lua-hooks/ext/luajit/src/xedkbuild.bat +92 -0
- data/lua-hooks/ext/luautf8/lutf8lib.c +3 -3
- data/lua-hooks/lib/boot.lua +37 -2
- metadata +372 -69
- data/lua-hooks/ext/bitop/README +0 -22
- data/lua-hooks/ext/bitop/bit.c +0 -189
- data/lua-hooks/ext/extconf.rb +0 -38
- data/lua-hooks/ext/lua/COPYRIGHT +0 -34
- data/lua-hooks/ext/lua/lapi.c +0 -1087
- data/lua-hooks/ext/lua/lapi.h +0 -16
- data/lua-hooks/ext/lua/lauxlib.c +0 -652
- data/lua-hooks/ext/lua/lbaselib.c +0 -659
- data/lua-hooks/ext/lua/lcode.c +0 -831
- data/lua-hooks/ext/lua/lcode.h +0 -76
- data/lua-hooks/ext/lua/ldblib.c +0 -398
- data/lua-hooks/ext/lua/ldebug.c +0 -638
- data/lua-hooks/ext/lua/ldebug.h +0 -33
- data/lua-hooks/ext/lua/ldo.c +0 -519
- data/lua-hooks/ext/lua/ldo.h +0 -57
- data/lua-hooks/ext/lua/ldump.c +0 -164
- data/lua-hooks/ext/lua/lfunc.c +0 -174
- data/lua-hooks/ext/lua/lfunc.h +0 -34
- data/lua-hooks/ext/lua/lgc.c +0 -710
- data/lua-hooks/ext/lua/lgc.h +0 -110
- data/lua-hooks/ext/lua/linit.c +0 -38
- data/lua-hooks/ext/lua/liolib.c +0 -556
- data/lua-hooks/ext/lua/llex.c +0 -463
- data/lua-hooks/ext/lua/llex.h +0 -81
- data/lua-hooks/ext/lua/llimits.h +0 -128
- data/lua-hooks/ext/lua/lmathlib.c +0 -263
- data/lua-hooks/ext/lua/lmem.c +0 -86
- data/lua-hooks/ext/lua/lmem.h +0 -49
- data/lua-hooks/ext/lua/loadlib.c +0 -705
- data/lua-hooks/ext/lua/loadlib_rel.c +0 -760
- data/lua-hooks/ext/lua/lobject.c +0 -214
- data/lua-hooks/ext/lua/lobject.h +0 -381
- data/lua-hooks/ext/lua/lopcodes.c +0 -102
- data/lua-hooks/ext/lua/lopcodes.h +0 -268
- data/lua-hooks/ext/lua/loslib.c +0 -243
- data/lua-hooks/ext/lua/lparser.c +0 -1339
- data/lua-hooks/ext/lua/lparser.h +0 -82
- data/lua-hooks/ext/lua/lstate.c +0 -214
- data/lua-hooks/ext/lua/lstate.h +0 -169
- data/lua-hooks/ext/lua/lstring.c +0 -111
- data/lua-hooks/ext/lua/lstring.h +0 -31
- data/lua-hooks/ext/lua/lstrlib.c +0 -871
- data/lua-hooks/ext/lua/ltable.c +0 -588
- data/lua-hooks/ext/lua/ltable.h +0 -40
- data/lua-hooks/ext/lua/ltablib.c +0 -287
- data/lua-hooks/ext/lua/ltm.c +0 -75
- data/lua-hooks/ext/lua/ltm.h +0 -54
- data/lua-hooks/ext/lua/lua.c +0 -392
- data/lua-hooks/ext/lua/lua.def +0 -131
- data/lua-hooks/ext/lua/lua.rc +0 -28
- data/lua-hooks/ext/lua/lua_dll.rc +0 -26
- data/lua-hooks/ext/lua/luac.c +0 -200
- data/lua-hooks/ext/lua/luac.rc +0 -1
- data/lua-hooks/ext/lua/luaconf.h +0 -763
- data/lua-hooks/ext/lua/luaconf.h.in +0 -724
- data/lua-hooks/ext/lua/luaconf.h.orig +0 -763
- data/lua-hooks/ext/lua/lualib.h +0 -53
- data/lua-hooks/ext/lua/lundump.c +0 -227
- data/lua-hooks/ext/lua/lundump.h +0 -36
- data/lua-hooks/ext/lua/lvm.c +0 -767
- data/lua-hooks/ext/lua/lvm.h +0 -36
- data/lua-hooks/ext/lua/lzio.c +0 -82
- data/lua-hooks/ext/lua/lzio.h +0 -67
- data/lua-hooks/ext/lua/print.c +0 -227
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** IR CALL* instruction definitions.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_IRCALL_H
|
|
7
|
+
#define _LJ_IRCALL_H
|
|
8
|
+
|
|
9
|
+
#include "lj_obj.h"
|
|
10
|
+
#include "lj_ir.h"
|
|
11
|
+
#include "lj_jit.h"
|
|
12
|
+
|
|
13
|
+
/* C call info for CALL* instructions. */
|
|
14
|
+
typedef struct CCallInfo {
|
|
15
|
+
ASMFunction func; /* Function pointer. */
|
|
16
|
+
uint32_t flags; /* Number of arguments and flags. */
|
|
17
|
+
} CCallInfo;
|
|
18
|
+
|
|
19
|
+
#define CCI_NARGS(ci) ((ci)->flags & 0xff) /* # of args. */
|
|
20
|
+
#define CCI_NARGS_MAX 32 /* Max. # of args. */
|
|
21
|
+
|
|
22
|
+
#define CCI_OTSHIFT 16
|
|
23
|
+
#define CCI_OPTYPE(ci) ((ci)->flags >> CCI_OTSHIFT) /* Get op/type. */
|
|
24
|
+
#define CCI_OPSHIFT 24
|
|
25
|
+
#define CCI_OP(ci) ((ci)->flags >> CCI_OPSHIFT) /* Get op. */
|
|
26
|
+
|
|
27
|
+
#define CCI_CALL_N (IR_CALLN << CCI_OPSHIFT)
|
|
28
|
+
#define CCI_CALL_A (IR_CALLA << CCI_OPSHIFT)
|
|
29
|
+
#define CCI_CALL_L (IR_CALLL << CCI_OPSHIFT)
|
|
30
|
+
#define CCI_CALL_S (IR_CALLS << CCI_OPSHIFT)
|
|
31
|
+
#define CCI_CALL_FN (CCI_CALL_N|CCI_CC_FASTCALL)
|
|
32
|
+
#define CCI_CALL_FL (CCI_CALL_L|CCI_CC_FASTCALL)
|
|
33
|
+
#define CCI_CALL_FS (CCI_CALL_S|CCI_CC_FASTCALL)
|
|
34
|
+
|
|
35
|
+
/* C call info flags. */
|
|
36
|
+
#define CCI_L 0x0100 /* Implicit L arg. */
|
|
37
|
+
#define CCI_CASTU64 0x0200 /* Cast u64 result to number. */
|
|
38
|
+
#define CCI_NOFPRCLOBBER 0x0400 /* Does not clobber any FPRs. */
|
|
39
|
+
#define CCI_VARARG 0x0800 /* Vararg function. */
|
|
40
|
+
|
|
41
|
+
#define CCI_CC_MASK 0x3000 /* Calling convention mask. */
|
|
42
|
+
#define CCI_CC_SHIFT 12
|
|
43
|
+
/* ORDER CC */
|
|
44
|
+
#define CCI_CC_CDECL 0x0000 /* Default cdecl calling convention. */
|
|
45
|
+
#define CCI_CC_THISCALL 0x1000 /* Thiscall calling convention. */
|
|
46
|
+
#define CCI_CC_FASTCALL 0x2000 /* Fastcall calling convention. */
|
|
47
|
+
#define CCI_CC_STDCALL 0x3000 /* Stdcall calling convention. */
|
|
48
|
+
|
|
49
|
+
/* Extra args for SOFTFP, SPLIT 64 bit. */
|
|
50
|
+
#define CCI_XARGS_SHIFT 14
|
|
51
|
+
#define CCI_XARGS(ci) (((ci)->flags >> CCI_XARGS_SHIFT) & 3)
|
|
52
|
+
#define CCI_XA (1u << CCI_XARGS_SHIFT)
|
|
53
|
+
|
|
54
|
+
#if LJ_SOFTFP || (LJ_32 && LJ_HASFFI)
|
|
55
|
+
#define CCI_XNARGS(ci) (CCI_NARGS((ci)) + CCI_XARGS((ci)))
|
|
56
|
+
#else
|
|
57
|
+
#define CCI_XNARGS(ci) CCI_NARGS((ci))
|
|
58
|
+
#endif
|
|
59
|
+
|
|
60
|
+
/* Helpers for conditional function definitions. */
|
|
61
|
+
#define IRCALLCOND_ANY(x) x
|
|
62
|
+
|
|
63
|
+
#if LJ_TARGET_X86ORX64
|
|
64
|
+
#define IRCALLCOND_FPMATH(x) NULL
|
|
65
|
+
#else
|
|
66
|
+
#define IRCALLCOND_FPMATH(x) x
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
#if LJ_SOFTFP
|
|
70
|
+
#define IRCALLCOND_SOFTFP(x) x
|
|
71
|
+
#if LJ_HASFFI
|
|
72
|
+
#define IRCALLCOND_SOFTFP_FFI(x) x
|
|
73
|
+
#else
|
|
74
|
+
#define IRCALLCOND_SOFTFP_FFI(x) NULL
|
|
75
|
+
#endif
|
|
76
|
+
#else
|
|
77
|
+
#define IRCALLCOND_SOFTFP(x) NULL
|
|
78
|
+
#define IRCALLCOND_SOFTFP_FFI(x) NULL
|
|
79
|
+
#endif
|
|
80
|
+
|
|
81
|
+
#define LJ_NEED_FP64 (LJ_TARGET_ARM || LJ_TARGET_PPC || LJ_TARGET_MIPS)
|
|
82
|
+
|
|
83
|
+
#if LJ_HASFFI && (LJ_SOFTFP || LJ_NEED_FP64)
|
|
84
|
+
#define IRCALLCOND_FP64_FFI(x) x
|
|
85
|
+
#else
|
|
86
|
+
#define IRCALLCOND_FP64_FFI(x) NULL
|
|
87
|
+
#endif
|
|
88
|
+
|
|
89
|
+
#if LJ_HASFFI
|
|
90
|
+
#define IRCALLCOND_FFI(x) x
|
|
91
|
+
#if LJ_32
|
|
92
|
+
#define IRCALLCOND_FFI32(x) x
|
|
93
|
+
#else
|
|
94
|
+
#define IRCALLCOND_FFI32(x) NULL
|
|
95
|
+
#endif
|
|
96
|
+
#else
|
|
97
|
+
#define IRCALLCOND_FFI(x) NULL
|
|
98
|
+
#define IRCALLCOND_FFI32(x) NULL
|
|
99
|
+
#endif
|
|
100
|
+
|
|
101
|
+
#if LJ_TARGET_X86
|
|
102
|
+
#define CCI_RANDFPR 0 /* Clang on OSX/x86 is overzealous. */
|
|
103
|
+
#else
|
|
104
|
+
#define CCI_RANDFPR CCI_NOFPRCLOBBER
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
#if LJ_SOFTFP
|
|
108
|
+
#define XA_FP CCI_XA
|
|
109
|
+
#define XA2_FP (CCI_XA+CCI_XA)
|
|
110
|
+
#else
|
|
111
|
+
#define XA_FP 0
|
|
112
|
+
#define XA2_FP 0
|
|
113
|
+
#endif
|
|
114
|
+
|
|
115
|
+
#if LJ_32
|
|
116
|
+
#define XA_64 CCI_XA
|
|
117
|
+
#define XA2_64 (CCI_XA+CCI_XA)
|
|
118
|
+
#else
|
|
119
|
+
#define XA_64 0
|
|
120
|
+
#define XA2_64 0
|
|
121
|
+
#endif
|
|
122
|
+
|
|
123
|
+
/* Function definitions for CALL* instructions. */
|
|
124
|
+
#define IRCALLDEF(_) \
|
|
125
|
+
_(ANY, lj_str_cmp, 2, FN, INT, CCI_NOFPRCLOBBER) \
|
|
126
|
+
_(ANY, lj_str_find, 4, N, P32, 0) \
|
|
127
|
+
_(ANY, lj_str_new, 3, S, STR, CCI_L) \
|
|
128
|
+
_(ANY, lj_strscan_num, 2, FN, INT, 0) \
|
|
129
|
+
_(ANY, lj_strfmt_int, 2, FN, STR, CCI_L) \
|
|
130
|
+
_(ANY, lj_strfmt_num, 2, FN, STR, CCI_L) \
|
|
131
|
+
_(ANY, lj_strfmt_char, 2, FN, STR, CCI_L) \
|
|
132
|
+
_(ANY, lj_strfmt_putint, 2, FL, P32, 0) \
|
|
133
|
+
_(ANY, lj_strfmt_putnum, 2, FL, P32, 0) \
|
|
134
|
+
_(ANY, lj_strfmt_putquoted, 2, FL, P32, 0) \
|
|
135
|
+
_(ANY, lj_strfmt_putfxint, 3, L, P32, XA_64) \
|
|
136
|
+
_(ANY, lj_strfmt_putfnum_int, 3, L, P32, XA_FP) \
|
|
137
|
+
_(ANY, lj_strfmt_putfnum_uint, 3, L, P32, XA_FP) \
|
|
138
|
+
_(ANY, lj_strfmt_putfnum, 3, L, P32, XA_FP) \
|
|
139
|
+
_(ANY, lj_strfmt_putfstr, 3, L, P32, 0) \
|
|
140
|
+
_(ANY, lj_strfmt_putfchar, 3, L, P32, 0) \
|
|
141
|
+
_(ANY, lj_buf_putmem, 3, S, P32, 0) \
|
|
142
|
+
_(ANY, lj_buf_putstr, 2, FL, P32, 0) \
|
|
143
|
+
_(ANY, lj_buf_putchar, 2, FL, P32, 0) \
|
|
144
|
+
_(ANY, lj_buf_putstr_reverse, 2, FL, P32, 0) \
|
|
145
|
+
_(ANY, lj_buf_putstr_lower, 2, FL, P32, 0) \
|
|
146
|
+
_(ANY, lj_buf_putstr_upper, 2, FL, P32, 0) \
|
|
147
|
+
_(ANY, lj_buf_putstr_rep, 3, L, P32, 0) \
|
|
148
|
+
_(ANY, lj_buf_puttab, 5, L, P32, 0) \
|
|
149
|
+
_(ANY, lj_buf_tostr, 1, FL, STR, 0) \
|
|
150
|
+
_(ANY, lj_tab_new_ah, 3, A, TAB, CCI_L) \
|
|
151
|
+
_(ANY, lj_tab_new1, 2, FS, TAB, CCI_L) \
|
|
152
|
+
_(ANY, lj_tab_dup, 2, FS, TAB, CCI_L) \
|
|
153
|
+
_(ANY, lj_tab_clear, 1, FS, NIL, 0) \
|
|
154
|
+
_(ANY, lj_tab_newkey, 3, S, P32, CCI_L) \
|
|
155
|
+
_(ANY, lj_tab_len, 1, FL, INT, 0) \
|
|
156
|
+
_(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \
|
|
157
|
+
_(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \
|
|
158
|
+
_(ANY, lj_mem_newgco, 2, FS, P32, CCI_L) \
|
|
159
|
+
_(ANY, lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_RANDFPR)\
|
|
160
|
+
_(ANY, lj_vm_modi, 2, FN, INT, 0) \
|
|
161
|
+
_(ANY, sinh, 1, N, NUM, XA_FP) \
|
|
162
|
+
_(ANY, cosh, 1, N, NUM, XA_FP) \
|
|
163
|
+
_(ANY, tanh, 1, N, NUM, XA_FP) \
|
|
164
|
+
_(ANY, fputc, 2, S, INT, 0) \
|
|
165
|
+
_(ANY, fwrite, 4, S, INT, 0) \
|
|
166
|
+
_(ANY, fflush, 1, S, INT, 0) \
|
|
167
|
+
/* ORDER FPM */ \
|
|
168
|
+
_(FPMATH, lj_vm_floor, 1, N, NUM, XA_FP) \
|
|
169
|
+
_(FPMATH, lj_vm_ceil, 1, N, NUM, XA_FP) \
|
|
170
|
+
_(FPMATH, lj_vm_trunc, 1, N, NUM, XA_FP) \
|
|
171
|
+
_(FPMATH, sqrt, 1, N, NUM, XA_FP) \
|
|
172
|
+
_(ANY, exp, 1, N, NUM, XA_FP) \
|
|
173
|
+
_(ANY, lj_vm_exp2, 1, N, NUM, XA_FP) \
|
|
174
|
+
_(ANY, log, 1, N, NUM, XA_FP) \
|
|
175
|
+
_(ANY, lj_vm_log2, 1, N, NUM, XA_FP) \
|
|
176
|
+
_(ANY, log10, 1, N, NUM, XA_FP) \
|
|
177
|
+
_(ANY, sin, 1, N, NUM, XA_FP) \
|
|
178
|
+
_(ANY, cos, 1, N, NUM, XA_FP) \
|
|
179
|
+
_(ANY, tan, 1, N, NUM, XA_FP) \
|
|
180
|
+
_(ANY, lj_vm_powi, 2, N, NUM, XA_FP) \
|
|
181
|
+
_(ANY, pow, 2, N, NUM, XA2_FP) \
|
|
182
|
+
_(ANY, atan2, 2, N, NUM, XA2_FP) \
|
|
183
|
+
_(ANY, ldexp, 2, N, NUM, XA_FP) \
|
|
184
|
+
_(SOFTFP, lj_vm_tobit, 2, N, INT, 0) \
|
|
185
|
+
_(SOFTFP, softfp_add, 4, N, NUM, 0) \
|
|
186
|
+
_(SOFTFP, softfp_sub, 4, N, NUM, 0) \
|
|
187
|
+
_(SOFTFP, softfp_mul, 4, N, NUM, 0) \
|
|
188
|
+
_(SOFTFP, softfp_div, 4, N, NUM, 0) \
|
|
189
|
+
_(SOFTFP, softfp_cmp, 4, N, NIL, 0) \
|
|
190
|
+
_(SOFTFP, softfp_i2d, 1, N, NUM, 0) \
|
|
191
|
+
_(SOFTFP, softfp_d2i, 2, N, INT, 0) \
|
|
192
|
+
_(SOFTFP_FFI, softfp_ui2d, 1, N, NUM, 0) \
|
|
193
|
+
_(SOFTFP_FFI, softfp_f2d, 1, N, NUM, 0) \
|
|
194
|
+
_(SOFTFP_FFI, softfp_d2ui, 2, N, INT, 0) \
|
|
195
|
+
_(SOFTFP_FFI, softfp_d2f, 2, N, FLOAT, 0) \
|
|
196
|
+
_(SOFTFP_FFI, softfp_i2f, 1, N, FLOAT, 0) \
|
|
197
|
+
_(SOFTFP_FFI, softfp_ui2f, 1, N, FLOAT, 0) \
|
|
198
|
+
_(SOFTFP_FFI, softfp_f2i, 1, N, INT, 0) \
|
|
199
|
+
_(SOFTFP_FFI, softfp_f2ui, 1, N, INT, 0) \
|
|
200
|
+
_(FP64_FFI, fp64_l2d, 1, N, NUM, XA_64) \
|
|
201
|
+
_(FP64_FFI, fp64_ul2d, 1, N, NUM, XA_64) \
|
|
202
|
+
_(FP64_FFI, fp64_l2f, 1, N, FLOAT, XA_64) \
|
|
203
|
+
_(FP64_FFI, fp64_ul2f, 1, N, FLOAT, XA_64) \
|
|
204
|
+
_(FP64_FFI, fp64_d2l, 1, N, I64, XA_FP) \
|
|
205
|
+
_(FP64_FFI, fp64_d2ul, 1, N, U64, XA_FP) \
|
|
206
|
+
_(FP64_FFI, fp64_f2l, 1, N, I64, 0) \
|
|
207
|
+
_(FP64_FFI, fp64_f2ul, 1, N, U64, 0) \
|
|
208
|
+
_(FFI, lj_carith_divi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
209
|
+
_(FFI, lj_carith_divu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
210
|
+
_(FFI, lj_carith_modi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
211
|
+
_(FFI, lj_carith_modu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
212
|
+
_(FFI, lj_carith_powi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
213
|
+
_(FFI, lj_carith_powu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
214
|
+
_(FFI, lj_cdata_newv, 4, S, CDATA, CCI_L) \
|
|
215
|
+
_(FFI, lj_cdata_setfin, 4, S, NIL, CCI_L) \
|
|
216
|
+
_(FFI, strlen, 1, L, INTP, 0) \
|
|
217
|
+
_(FFI, memcpy, 3, S, PTR, 0) \
|
|
218
|
+
_(FFI, memset, 3, S, PTR, 0) \
|
|
219
|
+
_(FFI, lj_vm_errno, 0, S, INT, CCI_NOFPRCLOBBER) \
|
|
220
|
+
_(FFI32, lj_carith_mul64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
|
|
221
|
+
_(FFI32, lj_carith_shl64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
|
|
222
|
+
_(FFI32, lj_carith_shr64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
|
|
223
|
+
_(FFI32, lj_carith_sar64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
|
|
224
|
+
_(FFI32, lj_carith_rol64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
|
|
225
|
+
_(FFI32, lj_carith_ror64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
|
|
226
|
+
\
|
|
227
|
+
/* End of list. */
|
|
228
|
+
|
|
229
|
+
typedef enum {
|
|
230
|
+
#define IRCALLENUM(cond, name, nargs, kind, type, flags) IRCALL_##name,
|
|
231
|
+
IRCALLDEF(IRCALLENUM)
|
|
232
|
+
#undef IRCALLENUM
|
|
233
|
+
IRCALL__MAX
|
|
234
|
+
} IRCallID;
|
|
235
|
+
|
|
236
|
+
LJ_FUNC TRef lj_ir_call(jit_State *J, IRCallID id, ...);
|
|
237
|
+
|
|
238
|
+
LJ_DATA const CCallInfo lj_ir_callinfo[IRCALL__MAX+1];
|
|
239
|
+
|
|
240
|
+
/* Soft-float declarations. */
|
|
241
|
+
#if LJ_SOFTFP
|
|
242
|
+
#if LJ_TARGET_ARM
|
|
243
|
+
#define softfp_add __aeabi_dadd
|
|
244
|
+
#define softfp_sub __aeabi_dsub
|
|
245
|
+
#define softfp_mul __aeabi_dmul
|
|
246
|
+
#define softfp_div __aeabi_ddiv
|
|
247
|
+
#define softfp_cmp __aeabi_cdcmple
|
|
248
|
+
#define softfp_i2d __aeabi_i2d
|
|
249
|
+
#define softfp_d2i __aeabi_d2iz
|
|
250
|
+
#define softfp_ui2d __aeabi_ui2d
|
|
251
|
+
#define softfp_f2d __aeabi_f2d
|
|
252
|
+
#define softfp_d2ui __aeabi_d2uiz
|
|
253
|
+
#define softfp_d2f __aeabi_d2f
|
|
254
|
+
#define softfp_i2f __aeabi_i2f
|
|
255
|
+
#define softfp_ui2f __aeabi_ui2f
|
|
256
|
+
#define softfp_f2i __aeabi_f2iz
|
|
257
|
+
#define softfp_f2ui __aeabi_f2uiz
|
|
258
|
+
#define fp64_l2d __aeabi_l2d
|
|
259
|
+
#define fp64_ul2d __aeabi_ul2d
|
|
260
|
+
#define fp64_l2f __aeabi_l2f
|
|
261
|
+
#define fp64_ul2f __aeabi_ul2f
|
|
262
|
+
#if LJ_TARGET_IOS
|
|
263
|
+
#define fp64_d2l __fixdfdi
|
|
264
|
+
#define fp64_d2ul __fixunsdfdi
|
|
265
|
+
#define fp64_f2l __fixsfdi
|
|
266
|
+
#define fp64_f2ul __fixunssfdi
|
|
267
|
+
#else
|
|
268
|
+
#define fp64_d2l __aeabi_d2lz
|
|
269
|
+
#define fp64_d2ul __aeabi_d2ulz
|
|
270
|
+
#define fp64_f2l __aeabi_f2lz
|
|
271
|
+
#define fp64_f2ul __aeabi_f2ulz
|
|
272
|
+
#endif
|
|
273
|
+
#else
|
|
274
|
+
#error "Missing soft-float definitions for target architecture"
|
|
275
|
+
#endif
|
|
276
|
+
extern double softfp_add(double a, double b);
|
|
277
|
+
extern double softfp_sub(double a, double b);
|
|
278
|
+
extern double softfp_mul(double a, double b);
|
|
279
|
+
extern double softfp_div(double a, double b);
|
|
280
|
+
extern void softfp_cmp(double a, double b);
|
|
281
|
+
extern double softfp_i2d(int32_t a);
|
|
282
|
+
extern int32_t softfp_d2i(double a);
|
|
283
|
+
#if LJ_HASFFI
|
|
284
|
+
extern double softfp_ui2d(uint32_t a);
|
|
285
|
+
extern double softfp_f2d(float a);
|
|
286
|
+
extern uint32_t softfp_d2ui(double a);
|
|
287
|
+
extern float softfp_d2f(double a);
|
|
288
|
+
extern float softfp_i2f(int32_t a);
|
|
289
|
+
extern float softfp_ui2f(uint32_t a);
|
|
290
|
+
extern int32_t softfp_f2i(float a);
|
|
291
|
+
extern uint32_t softfp_f2ui(float a);
|
|
292
|
+
#endif
|
|
293
|
+
#endif
|
|
294
|
+
|
|
295
|
+
#if LJ_HASFFI && LJ_NEED_FP64 && !(LJ_TARGET_ARM && LJ_SOFTFP)
|
|
296
|
+
#ifdef __GNUC__
|
|
297
|
+
#define fp64_l2d __floatdidf
|
|
298
|
+
#define fp64_ul2d __floatundidf
|
|
299
|
+
#define fp64_l2f __floatdisf
|
|
300
|
+
#define fp64_ul2f __floatundisf
|
|
301
|
+
#define fp64_d2l __fixdfdi
|
|
302
|
+
#define fp64_d2ul __fixunsdfdi
|
|
303
|
+
#define fp64_f2l __fixsfdi
|
|
304
|
+
#define fp64_f2ul __fixunssfdi
|
|
305
|
+
#else
|
|
306
|
+
#error "Missing fp64 helper definitions for this compiler"
|
|
307
|
+
#endif
|
|
308
|
+
#endif
|
|
309
|
+
|
|
310
|
+
#if LJ_HASFFI && (LJ_SOFTFP || LJ_NEED_FP64)
|
|
311
|
+
extern double fp64_l2d(int64_t a);
|
|
312
|
+
extern double fp64_ul2d(uint64_t a);
|
|
313
|
+
extern float fp64_l2f(int64_t a);
|
|
314
|
+
extern float fp64_ul2f(uint64_t a);
|
|
315
|
+
extern int64_t fp64_d2l(double a);
|
|
316
|
+
extern uint64_t fp64_d2ul(double a);
|
|
317
|
+
extern int64_t fp64_f2l(float a);
|
|
318
|
+
extern uint64_t fp64_f2ul(float a);
|
|
319
|
+
#endif
|
|
320
|
+
|
|
321
|
+
#endif
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** Common header for IR emitter and optimizations.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_IROPT_H
|
|
7
|
+
#define _LJ_IROPT_H
|
|
8
|
+
|
|
9
|
+
#include <stdarg.h>
|
|
10
|
+
|
|
11
|
+
#include "lj_obj.h"
|
|
12
|
+
#include "lj_jit.h"
|
|
13
|
+
|
|
14
|
+
#if LJ_HASJIT
|
|
15
|
+
/* IR emitter. */
|
|
16
|
+
LJ_FUNC void LJ_FASTCALL lj_ir_growtop(jit_State *J);
|
|
17
|
+
LJ_FUNC TRef LJ_FASTCALL lj_ir_emit(jit_State *J);
|
|
18
|
+
|
|
19
|
+
/* Save current IR in J->fold.ins, but do not emit it (yet). */
|
|
20
|
+
static LJ_AINLINE void lj_ir_set_(jit_State *J, uint16_t ot, IRRef1 a, IRRef1 b)
|
|
21
|
+
{
|
|
22
|
+
J->fold.ins.ot = ot; J->fold.ins.op1 = a; J->fold.ins.op2 = b;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#define lj_ir_set(J, ot, a, b) \
|
|
26
|
+
lj_ir_set_(J, (uint16_t)(ot), (IRRef1)(a), (IRRef1)(b))
|
|
27
|
+
|
|
28
|
+
/* Get ref of next IR instruction and optionally grow IR.
|
|
29
|
+
** Note: this may invalidate all IRIns*!
|
|
30
|
+
*/
|
|
31
|
+
static LJ_AINLINE IRRef lj_ir_nextins(jit_State *J)
|
|
32
|
+
{
|
|
33
|
+
IRRef ref = J->cur.nins;
|
|
34
|
+
if (LJ_UNLIKELY(ref >= J->irtoplim)) lj_ir_growtop(J);
|
|
35
|
+
J->cur.nins = ref + 1;
|
|
36
|
+
return ref;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Interning of constants. */
|
|
40
|
+
LJ_FUNC TRef LJ_FASTCALL lj_ir_kint(jit_State *J, int32_t k);
|
|
41
|
+
LJ_FUNC void lj_ir_k64_freeall(jit_State *J);
|
|
42
|
+
LJ_FUNC TRef lj_ir_k64(jit_State *J, IROp op, cTValue *tv);
|
|
43
|
+
LJ_FUNC cTValue *lj_ir_k64_find(jit_State *J, uint64_t u64);
|
|
44
|
+
LJ_FUNC TRef lj_ir_knum_u64(jit_State *J, uint64_t u64);
|
|
45
|
+
LJ_FUNC TRef lj_ir_knumint(jit_State *J, lua_Number n);
|
|
46
|
+
LJ_FUNC TRef lj_ir_kint64(jit_State *J, uint64_t u64);
|
|
47
|
+
LJ_FUNC TRef lj_ir_kgc(jit_State *J, GCobj *o, IRType t);
|
|
48
|
+
LJ_FUNC TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr);
|
|
49
|
+
LJ_FUNC TRef lj_ir_knull(jit_State *J, IRType t);
|
|
50
|
+
LJ_FUNC TRef lj_ir_kslot(jit_State *J, TRef key, IRRef slot);
|
|
51
|
+
|
|
52
|
+
#if LJ_64
|
|
53
|
+
#define lj_ir_kintp(J, k) lj_ir_kint64(J, (uint64_t)(k))
|
|
54
|
+
#else
|
|
55
|
+
#define lj_ir_kintp(J, k) lj_ir_kint(J, (int32_t)(k))
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
static LJ_AINLINE TRef lj_ir_knum(jit_State *J, lua_Number n)
|
|
59
|
+
{
|
|
60
|
+
TValue tv;
|
|
61
|
+
tv.n = n;
|
|
62
|
+
return lj_ir_knum_u64(J, tv.u64);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
#define lj_ir_kstr(J, str) lj_ir_kgc(J, obj2gco((str)), IRT_STR)
|
|
66
|
+
#define lj_ir_ktab(J, tab) lj_ir_kgc(J, obj2gco((tab)), IRT_TAB)
|
|
67
|
+
#define lj_ir_kfunc(J, func) lj_ir_kgc(J, obj2gco((func)), IRT_FUNC)
|
|
68
|
+
#define lj_ir_kptr(J, ptr) lj_ir_kptr_(J, IR_KPTR, (ptr))
|
|
69
|
+
#define lj_ir_kkptr(J, ptr) lj_ir_kptr_(J, IR_KKPTR, (ptr))
|
|
70
|
+
|
|
71
|
+
/* Special FP constants. */
|
|
72
|
+
#define lj_ir_knum_zero(J) lj_ir_knum_u64(J, U64x(00000000,00000000))
|
|
73
|
+
#define lj_ir_knum_one(J) lj_ir_knum_u64(J, U64x(3ff00000,00000000))
|
|
74
|
+
#define lj_ir_knum_tobit(J) lj_ir_knum_u64(J, U64x(43380000,00000000))
|
|
75
|
+
|
|
76
|
+
/* Special 128 bit SIMD constants. */
|
|
77
|
+
#define lj_ir_knum_abs(J) lj_ir_k64(J, IR_KNUM, LJ_KSIMD(J, LJ_KSIMD_ABS))
|
|
78
|
+
#define lj_ir_knum_neg(J) lj_ir_k64(J, IR_KNUM, LJ_KSIMD(J, LJ_KSIMD_NEG))
|
|
79
|
+
|
|
80
|
+
/* Access to constants. */
|
|
81
|
+
LJ_FUNC void lj_ir_kvalue(lua_State *L, TValue *tv, const IRIns *ir);
|
|
82
|
+
|
|
83
|
+
/* Convert IR operand types. */
|
|
84
|
+
LJ_FUNC TRef LJ_FASTCALL lj_ir_tonumber(jit_State *J, TRef tr);
|
|
85
|
+
LJ_FUNC TRef LJ_FASTCALL lj_ir_tonum(jit_State *J, TRef tr);
|
|
86
|
+
LJ_FUNC TRef LJ_FASTCALL lj_ir_tostr(jit_State *J, TRef tr);
|
|
87
|
+
|
|
88
|
+
/* Miscellaneous IR ops. */
|
|
89
|
+
LJ_FUNC int lj_ir_numcmp(lua_Number a, lua_Number b, IROp op);
|
|
90
|
+
LJ_FUNC int lj_ir_strcmp(GCstr *a, GCstr *b, IROp op);
|
|
91
|
+
LJ_FUNC void lj_ir_rollback(jit_State *J, IRRef ref);
|
|
92
|
+
|
|
93
|
+
/* Emit IR instructions with on-the-fly optimizations. */
|
|
94
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fold(jit_State *J);
|
|
95
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_cse(jit_State *J);
|
|
96
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_cselim(jit_State *J, IRRef lim);
|
|
97
|
+
|
|
98
|
+
/* Special return values for the fold functions. */
|
|
99
|
+
enum {
|
|
100
|
+
NEXTFOLD, /* Couldn't fold, pass on. */
|
|
101
|
+
RETRYFOLD, /* Retry fold with modified fins. */
|
|
102
|
+
KINTFOLD, /* Return ref for int constant in fins->i. */
|
|
103
|
+
FAILFOLD, /* Guard would always fail. */
|
|
104
|
+
DROPFOLD, /* Guard eliminated. */
|
|
105
|
+
MAX_FOLD
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
#define INTFOLD(k) ((J->fold.ins.i = (k)), (TRef)KINTFOLD)
|
|
109
|
+
#define INT64FOLD(k) (lj_ir_kint64(J, (k)))
|
|
110
|
+
#define CONDFOLD(cond) ((TRef)FAILFOLD + (TRef)(cond))
|
|
111
|
+
#define LEFTFOLD (J->fold.ins.op1)
|
|
112
|
+
#define RIGHTFOLD (J->fold.ins.op2)
|
|
113
|
+
#define CSEFOLD (lj_opt_cse(J))
|
|
114
|
+
#define EMITFOLD (lj_ir_emit(J))
|
|
115
|
+
|
|
116
|
+
/* Load/store forwarding. */
|
|
117
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_aload(jit_State *J);
|
|
118
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_hload(jit_State *J);
|
|
119
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_uload(jit_State *J);
|
|
120
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_fload(jit_State *J);
|
|
121
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_xload(jit_State *J);
|
|
122
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_tab_len(jit_State *J);
|
|
123
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_hrefk(jit_State *J);
|
|
124
|
+
LJ_FUNC int LJ_FASTCALL lj_opt_fwd_href_nokey(jit_State *J);
|
|
125
|
+
LJ_FUNC int LJ_FASTCALL lj_opt_fwd_tptr(jit_State *J, IRRef lim);
|
|
126
|
+
LJ_FUNC int lj_opt_fwd_wasnonnil(jit_State *J, IROpT loadop, IRRef xref);
|
|
127
|
+
|
|
128
|
+
/* Dead-store elimination. */
|
|
129
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_ahstore(jit_State *J);
|
|
130
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J);
|
|
131
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_fstore(jit_State *J);
|
|
132
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_xstore(jit_State *J);
|
|
133
|
+
|
|
134
|
+
/* Narrowing. */
|
|
135
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_convert(jit_State *J);
|
|
136
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_index(jit_State *J, TRef key);
|
|
137
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_toint(jit_State *J, TRef tr);
|
|
138
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_tobit(jit_State *J, TRef tr);
|
|
139
|
+
#if LJ_HASFFI
|
|
140
|
+
LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_cindex(jit_State *J, TRef key);
|
|
141
|
+
#endif
|
|
142
|
+
LJ_FUNC TRef lj_opt_narrow_arith(jit_State *J, TRef rb, TRef rc,
|
|
143
|
+
TValue *vb, TValue *vc, IROp op);
|
|
144
|
+
LJ_FUNC TRef lj_opt_narrow_unm(jit_State *J, TRef rc, TValue *vc);
|
|
145
|
+
LJ_FUNC TRef lj_opt_narrow_mod(jit_State *J, TRef rb, TRef rc, TValue *vc);
|
|
146
|
+
LJ_FUNC TRef lj_opt_narrow_pow(jit_State *J, TRef rb, TRef rc, TValue *vc);
|
|
147
|
+
LJ_FUNC IRType lj_opt_narrow_forl(jit_State *J, cTValue *forbase);
|
|
148
|
+
|
|
149
|
+
/* Optimization passes. */
|
|
150
|
+
LJ_FUNC void lj_opt_dce(jit_State *J);
|
|
151
|
+
LJ_FUNC int lj_opt_loop(jit_State *J);
|
|
152
|
+
#if LJ_SOFTFP || (LJ_32 && LJ_HASFFI)
|
|
153
|
+
LJ_FUNC void lj_opt_split(jit_State *J);
|
|
154
|
+
#else
|
|
155
|
+
#define lj_opt_split(J) UNUSED(J)
|
|
156
|
+
#endif
|
|
157
|
+
LJ_FUNC void lj_opt_sink(jit_State *J);
|
|
158
|
+
|
|
159
|
+
#endif
|
|
160
|
+
|
|
161
|
+
#endif
|