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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** C type conversions.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_CCONV_H
|
|
7
|
+
#define _LJ_CCONV_H
|
|
8
|
+
|
|
9
|
+
#include "lj_obj.h"
|
|
10
|
+
#include "lj_ctype.h"
|
|
11
|
+
|
|
12
|
+
#if LJ_HASFFI
|
|
13
|
+
|
|
14
|
+
/* Compressed C type index. ORDER CCX. */
|
|
15
|
+
enum {
|
|
16
|
+
CCX_B, /* Bool. */
|
|
17
|
+
CCX_I, /* Integer. */
|
|
18
|
+
CCX_F, /* Floating-point number. */
|
|
19
|
+
CCX_C, /* Complex. */
|
|
20
|
+
CCX_V, /* Vector. */
|
|
21
|
+
CCX_P, /* Pointer. */
|
|
22
|
+
CCX_A, /* Refarray. */
|
|
23
|
+
CCX_S /* Struct/union. */
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/* Convert C type info to compressed C type index. ORDER CT. ORDER CCX. */
|
|
27
|
+
static LJ_AINLINE uint32_t cconv_idx(CTInfo info)
|
|
28
|
+
{
|
|
29
|
+
uint32_t idx = ((info >> 26) & 15u); /* Dispatch bits. */
|
|
30
|
+
lua_assert(ctype_type(info) <= CT_MAYCONVERT);
|
|
31
|
+
#if LJ_64
|
|
32
|
+
idx = ((uint32_t)(U64x(f436fff5,fff7f021) >> 4*idx) & 15u);
|
|
33
|
+
#else
|
|
34
|
+
idx = (((idx < 8 ? 0xfff7f021u : 0xf436fff5) >> 4*(idx & 7u)) & 15u);
|
|
35
|
+
#endif
|
|
36
|
+
lua_assert(idx < 8);
|
|
37
|
+
return idx;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#define cconv_idx2(dinfo, sinfo) \
|
|
41
|
+
((cconv_idx((dinfo)) << 3) + cconv_idx((sinfo)))
|
|
42
|
+
|
|
43
|
+
#define CCX(dst, src) ((CCX_##dst << 3) + CCX_##src)
|
|
44
|
+
|
|
45
|
+
/* Conversion flags. */
|
|
46
|
+
#define CCF_CAST 0x00000001u
|
|
47
|
+
#define CCF_FROMTV 0x00000002u
|
|
48
|
+
#define CCF_SAME 0x00000004u
|
|
49
|
+
#define CCF_IGNQUAL 0x00000008u
|
|
50
|
+
|
|
51
|
+
#define CCF_ARG_SHIFT 8
|
|
52
|
+
#define CCF_ARG(n) ((n) << CCF_ARG_SHIFT)
|
|
53
|
+
#define CCF_GETARG(f) ((f) >> CCF_ARG_SHIFT)
|
|
54
|
+
|
|
55
|
+
LJ_FUNC int lj_cconv_compatptr(CTState *cts, CType *d, CType *s, CTInfo flags);
|
|
56
|
+
LJ_FUNC void lj_cconv_ct_ct(CTState *cts, CType *d, CType *s,
|
|
57
|
+
uint8_t *dp, uint8_t *sp, CTInfo flags);
|
|
58
|
+
LJ_FUNC int lj_cconv_tv_ct(CTState *cts, CType *s, CTypeID sid,
|
|
59
|
+
TValue *o, uint8_t *sp);
|
|
60
|
+
LJ_FUNC int lj_cconv_tv_bf(CTState *cts, CType *s, TValue *o, uint8_t *sp);
|
|
61
|
+
LJ_FUNC void lj_cconv_ct_tv(CTState *cts, CType *d,
|
|
62
|
+
uint8_t *dp, TValue *o, CTInfo flags);
|
|
63
|
+
LJ_FUNC void lj_cconv_bf_tv(CTState *cts, CType *d, uint8_t *dp, TValue *o);
|
|
64
|
+
LJ_FUNC int lj_cconv_multi_init(CTState *cts, CType *d, TValue *o);
|
|
65
|
+
LJ_FUNC void lj_cconv_ct_init(CTState *cts, CType *d, CTSize sz,
|
|
66
|
+
uint8_t *dp, TValue *o, MSize len);
|
|
67
|
+
|
|
68
|
+
#endif
|
|
69
|
+
|
|
70
|
+
#endif
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** C data management.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#include "lj_obj.h"
|
|
7
|
+
|
|
8
|
+
#if LJ_HASFFI
|
|
9
|
+
|
|
10
|
+
#include "lj_gc.h"
|
|
11
|
+
#include "lj_err.h"
|
|
12
|
+
#include "lj_tab.h"
|
|
13
|
+
#include "lj_ctype.h"
|
|
14
|
+
#include "lj_cconv.h"
|
|
15
|
+
#include "lj_cdata.h"
|
|
16
|
+
|
|
17
|
+
/* -- C data allocation --------------------------------------------------- */
|
|
18
|
+
|
|
19
|
+
/* Allocate a new C data object holding a reference to another object. */
|
|
20
|
+
GCcdata *lj_cdata_newref(CTState *cts, const void *p, CTypeID id)
|
|
21
|
+
{
|
|
22
|
+
CTypeID refid = lj_ctype_intern(cts, CTINFO_REF(id), CTSIZE_PTR);
|
|
23
|
+
GCcdata *cd = lj_cdata_new(cts, refid, CTSIZE_PTR);
|
|
24
|
+
*(const void **)cdataptr(cd) = p;
|
|
25
|
+
return cd;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Allocate variable-sized or specially aligned C data object. */
|
|
29
|
+
GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align)
|
|
30
|
+
{
|
|
31
|
+
global_State *g;
|
|
32
|
+
MSize extra = sizeof(GCcdataVar) + sizeof(GCcdata) +
|
|
33
|
+
(align > CT_MEMALIGN ? (1u<<align) - (1u<<CT_MEMALIGN) : 0);
|
|
34
|
+
char *p = lj_mem_newt(L, extra + sz, char);
|
|
35
|
+
uintptr_t adata = (uintptr_t)p + sizeof(GCcdataVar) + sizeof(GCcdata);
|
|
36
|
+
uintptr_t almask = (1u << align) - 1u;
|
|
37
|
+
GCcdata *cd = (GCcdata *)(((adata + almask) & ~almask) - sizeof(GCcdata));
|
|
38
|
+
lua_assert((char *)cd - p < 65536);
|
|
39
|
+
cdatav(cd)->offset = (uint16_t)((char *)cd - p);
|
|
40
|
+
cdatav(cd)->extra = extra;
|
|
41
|
+
cdatav(cd)->len = sz;
|
|
42
|
+
g = G(L);
|
|
43
|
+
setgcrefr(cd->nextgc, g->gc.root);
|
|
44
|
+
setgcref(g->gc.root, obj2gco(cd));
|
|
45
|
+
newwhite(g, obj2gco(cd));
|
|
46
|
+
cd->marked |= 0x80;
|
|
47
|
+
cd->gct = ~LJ_TCDATA;
|
|
48
|
+
cd->ctypeid = id;
|
|
49
|
+
return cd;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Free a C data object. */
|
|
53
|
+
void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
|
|
54
|
+
{
|
|
55
|
+
if (LJ_UNLIKELY(cd->marked & LJ_GC_CDATA_FIN)) {
|
|
56
|
+
GCobj *root;
|
|
57
|
+
makewhite(g, obj2gco(cd));
|
|
58
|
+
markfinalized(obj2gco(cd));
|
|
59
|
+
if ((root = gcref(g->gc.mmudata)) != NULL) {
|
|
60
|
+
setgcrefr(cd->nextgc, root->gch.nextgc);
|
|
61
|
+
setgcref(root->gch.nextgc, obj2gco(cd));
|
|
62
|
+
setgcref(g->gc.mmudata, obj2gco(cd));
|
|
63
|
+
} else {
|
|
64
|
+
setgcref(cd->nextgc, obj2gco(cd));
|
|
65
|
+
setgcref(g->gc.mmudata, obj2gco(cd));
|
|
66
|
+
}
|
|
67
|
+
} else if (LJ_LIKELY(!cdataisv(cd))) {
|
|
68
|
+
CType *ct = ctype_raw(ctype_ctsG(g), cd->ctypeid);
|
|
69
|
+
CTSize sz = ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR;
|
|
70
|
+
lua_assert(ctype_hassize(ct->info) || ctype_isfunc(ct->info) ||
|
|
71
|
+
ctype_isextern(ct->info));
|
|
72
|
+
lj_mem_free(g, cd, sizeof(GCcdata) + sz);
|
|
73
|
+
} else {
|
|
74
|
+
lj_mem_free(g, memcdatav(cd), sizecdatav(cd));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
void lj_cdata_setfin(lua_State *L, GCcdata *cd, GCobj *obj, uint32_t it)
|
|
79
|
+
{
|
|
80
|
+
GCtab *t = ctype_ctsG(G(L))->finalizer;
|
|
81
|
+
if (gcref(t->metatable)) {
|
|
82
|
+
/* Add cdata to finalizer table, if still enabled. */
|
|
83
|
+
TValue *tv, tmp;
|
|
84
|
+
setcdataV(L, &tmp, cd);
|
|
85
|
+
lj_gc_anybarriert(L, t);
|
|
86
|
+
tv = lj_tab_set(L, t, &tmp);
|
|
87
|
+
setgcV(L, tv, obj, it);
|
|
88
|
+
if (!tvisnil(tv))
|
|
89
|
+
cd->marked |= LJ_GC_CDATA_FIN;
|
|
90
|
+
else
|
|
91
|
+
cd->marked &= ~LJ_GC_CDATA_FIN;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* -- C data indexing ----------------------------------------------------- */
|
|
96
|
+
|
|
97
|
+
/* Index C data by a TValue. Return CType and pointer. */
|
|
98
|
+
CType *lj_cdata_index(CTState *cts, GCcdata *cd, cTValue *key, uint8_t **pp,
|
|
99
|
+
CTInfo *qual)
|
|
100
|
+
{
|
|
101
|
+
uint8_t *p = (uint8_t *)cdataptr(cd);
|
|
102
|
+
CType *ct = ctype_get(cts, cd->ctypeid);
|
|
103
|
+
ptrdiff_t idx;
|
|
104
|
+
|
|
105
|
+
/* Resolve reference for cdata object. */
|
|
106
|
+
if (ctype_isref(ct->info)) {
|
|
107
|
+
lua_assert(ct->size == CTSIZE_PTR);
|
|
108
|
+
p = *(uint8_t **)p;
|
|
109
|
+
ct = ctype_child(cts, ct);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
collect_attrib:
|
|
113
|
+
/* Skip attributes and collect qualifiers. */
|
|
114
|
+
while (ctype_isattrib(ct->info)) {
|
|
115
|
+
if (ctype_attrib(ct->info) == CTA_QUAL) *qual |= ct->size;
|
|
116
|
+
ct = ctype_child(cts, ct);
|
|
117
|
+
}
|
|
118
|
+
lua_assert(!ctype_isref(ct->info)); /* Interning rejects refs to refs. */
|
|
119
|
+
|
|
120
|
+
if (tvisint(key)) {
|
|
121
|
+
idx = (ptrdiff_t)intV(key);
|
|
122
|
+
goto integer_key;
|
|
123
|
+
} else if (tvisnum(key)) { /* Numeric key. */
|
|
124
|
+
#ifdef _MSC_VER
|
|
125
|
+
/* Workaround for MSVC bug. */
|
|
126
|
+
volatile
|
|
127
|
+
#endif
|
|
128
|
+
lua_Number n = numV(key);
|
|
129
|
+
idx = LJ_64 ? (ptrdiff_t)n : (ptrdiff_t)lj_num2int(n);
|
|
130
|
+
integer_key:
|
|
131
|
+
if (ctype_ispointer(ct->info)) {
|
|
132
|
+
CTSize sz = lj_ctype_size(cts, ctype_cid(ct->info)); /* Element size. */
|
|
133
|
+
if (sz == CTSIZE_INVALID)
|
|
134
|
+
lj_err_caller(cts->L, LJ_ERR_FFI_INVSIZE);
|
|
135
|
+
if (ctype_isptr(ct->info)) {
|
|
136
|
+
p = (uint8_t *)cdata_getptr(p, ct->size);
|
|
137
|
+
} else if ((ct->info & (CTF_VECTOR|CTF_COMPLEX))) {
|
|
138
|
+
if ((ct->info & CTF_COMPLEX)) idx &= 1;
|
|
139
|
+
*qual |= CTF_CONST; /* Valarray elements are constant. */
|
|
140
|
+
}
|
|
141
|
+
*pp = p + idx*(int32_t)sz;
|
|
142
|
+
return ct;
|
|
143
|
+
}
|
|
144
|
+
} else if (tviscdata(key)) { /* Integer cdata key. */
|
|
145
|
+
GCcdata *cdk = cdataV(key);
|
|
146
|
+
CType *ctk = ctype_raw(cts, cdk->ctypeid);
|
|
147
|
+
if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk);
|
|
148
|
+
if (ctype_isinteger(ctk->info)) {
|
|
149
|
+
lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), ctk,
|
|
150
|
+
(uint8_t *)&idx, cdataptr(cdk), 0);
|
|
151
|
+
goto integer_key;
|
|
152
|
+
}
|
|
153
|
+
} else if (tvisstr(key)) { /* String key. */
|
|
154
|
+
GCstr *name = strV(key);
|
|
155
|
+
if (ctype_isstruct(ct->info)) {
|
|
156
|
+
CTSize ofs;
|
|
157
|
+
CType *fct = lj_ctype_getfieldq(cts, ct, name, &ofs, qual);
|
|
158
|
+
if (fct) {
|
|
159
|
+
*pp = p + ofs;
|
|
160
|
+
return fct;
|
|
161
|
+
}
|
|
162
|
+
} else if (ctype_iscomplex(ct->info)) {
|
|
163
|
+
if (name->len == 2) {
|
|
164
|
+
*qual |= CTF_CONST; /* Complex fields are constant. */
|
|
165
|
+
if (strdata(name)[0] == 'r' && strdata(name)[1] == 'e') {
|
|
166
|
+
*pp = p;
|
|
167
|
+
return ct;
|
|
168
|
+
} else if (strdata(name)[0] == 'i' && strdata(name)[1] == 'm') {
|
|
169
|
+
*pp = p + (ct->size >> 1);
|
|
170
|
+
return ct;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} else if (cd->ctypeid == CTID_CTYPEID) {
|
|
174
|
+
/* Allow indexing a (pointer to) struct constructor to get constants. */
|
|
175
|
+
CType *sct = ctype_raw(cts, *(CTypeID *)p);
|
|
176
|
+
if (ctype_isptr(sct->info))
|
|
177
|
+
sct = ctype_rawchild(cts, sct);
|
|
178
|
+
if (ctype_isstruct(sct->info)) {
|
|
179
|
+
CTSize ofs;
|
|
180
|
+
CType *fct = lj_ctype_getfield(cts, sct, name, &ofs);
|
|
181
|
+
if (fct && ctype_isconstval(fct->info))
|
|
182
|
+
return fct;
|
|
183
|
+
}
|
|
184
|
+
ct = sct; /* Allow resolving metamethods for constructors, too. */
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (ctype_isptr(ct->info)) { /* Automatically perform '->'. */
|
|
188
|
+
if (ctype_isstruct(ctype_rawchild(cts, ct)->info)) {
|
|
189
|
+
p = (uint8_t *)cdata_getptr(p, ct->size);
|
|
190
|
+
ct = ctype_child(cts, ct);
|
|
191
|
+
goto collect_attrib;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
*qual |= 1; /* Lookup failed. */
|
|
195
|
+
return ct; /* But return the resolved raw type. */
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* -- C data getters ------------------------------------------------------ */
|
|
199
|
+
|
|
200
|
+
/* Get constant value and convert to TValue. */
|
|
201
|
+
static void cdata_getconst(CTState *cts, TValue *o, CType *ct)
|
|
202
|
+
{
|
|
203
|
+
CType *ctt = ctype_child(cts, ct);
|
|
204
|
+
lua_assert(ctype_isinteger(ctt->info) && ctt->size <= 4);
|
|
205
|
+
/* Constants are already zero-extended/sign-extended to 32 bits. */
|
|
206
|
+
if ((ctt->info & CTF_UNSIGNED) && (int32_t)ct->size < 0)
|
|
207
|
+
setnumV(o, (lua_Number)(uint32_t)ct->size);
|
|
208
|
+
else
|
|
209
|
+
setintV(o, (int32_t)ct->size);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Get C data value and convert to TValue. */
|
|
213
|
+
int lj_cdata_get(CTState *cts, CType *s, TValue *o, uint8_t *sp)
|
|
214
|
+
{
|
|
215
|
+
CTypeID sid;
|
|
216
|
+
|
|
217
|
+
if (ctype_isconstval(s->info)) {
|
|
218
|
+
cdata_getconst(cts, o, s);
|
|
219
|
+
return 0; /* No GC step needed. */
|
|
220
|
+
} else if (ctype_isbitfield(s->info)) {
|
|
221
|
+
return lj_cconv_tv_bf(cts, s, o, sp);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Get child type of pointer/array/field. */
|
|
225
|
+
lua_assert(ctype_ispointer(s->info) || ctype_isfield(s->info));
|
|
226
|
+
sid = ctype_cid(s->info);
|
|
227
|
+
s = ctype_get(cts, sid);
|
|
228
|
+
|
|
229
|
+
/* Resolve reference for field. */
|
|
230
|
+
if (ctype_isref(s->info)) {
|
|
231
|
+
lua_assert(s->size == CTSIZE_PTR);
|
|
232
|
+
sp = *(uint8_t **)sp;
|
|
233
|
+
sid = ctype_cid(s->info);
|
|
234
|
+
s = ctype_get(cts, sid);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* Skip attributes. */
|
|
238
|
+
while (ctype_isattrib(s->info))
|
|
239
|
+
s = ctype_child(cts, s);
|
|
240
|
+
|
|
241
|
+
return lj_cconv_tv_ct(cts, s, sid, o, sp);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* -- C data setters ------------------------------------------------------ */
|
|
245
|
+
|
|
246
|
+
/* Convert TValue and set C data value. */
|
|
247
|
+
void lj_cdata_set(CTState *cts, CType *d, uint8_t *dp, TValue *o, CTInfo qual)
|
|
248
|
+
{
|
|
249
|
+
if (ctype_isconstval(d->info)) {
|
|
250
|
+
goto err_const;
|
|
251
|
+
} else if (ctype_isbitfield(d->info)) {
|
|
252
|
+
if (((d->info|qual) & CTF_CONST)) goto err_const;
|
|
253
|
+
lj_cconv_bf_tv(cts, d, dp, o);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/* Get child type of pointer/array/field. */
|
|
258
|
+
lua_assert(ctype_ispointer(d->info) || ctype_isfield(d->info));
|
|
259
|
+
d = ctype_child(cts, d);
|
|
260
|
+
|
|
261
|
+
/* Resolve reference for field. */
|
|
262
|
+
if (ctype_isref(d->info)) {
|
|
263
|
+
lua_assert(d->size == CTSIZE_PTR);
|
|
264
|
+
dp = *(uint8_t **)dp;
|
|
265
|
+
d = ctype_child(cts, d);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Skip attributes and collect qualifiers. */
|
|
269
|
+
for (;;) {
|
|
270
|
+
if (ctype_isattrib(d->info)) {
|
|
271
|
+
if (ctype_attrib(d->info) == CTA_QUAL) qual |= d->size;
|
|
272
|
+
} else {
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
d = ctype_child(cts, d);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
lua_assert(ctype_hassize(d->info) && !ctype_isvoid(d->info));
|
|
279
|
+
|
|
280
|
+
if (((d->info|qual) & CTF_CONST)) {
|
|
281
|
+
err_const:
|
|
282
|
+
lj_err_caller(cts->L, LJ_ERR_FFI_WRCONST);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
lj_cconv_ct_tv(cts, d, dp, o, 0);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
#endif
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** C data management.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_CDATA_H
|
|
7
|
+
#define _LJ_CDATA_H
|
|
8
|
+
|
|
9
|
+
#include "lj_obj.h"
|
|
10
|
+
#include "lj_gc.h"
|
|
11
|
+
#include "lj_ctype.h"
|
|
12
|
+
|
|
13
|
+
#if LJ_HASFFI
|
|
14
|
+
|
|
15
|
+
/* Get C data pointer. */
|
|
16
|
+
static LJ_AINLINE void *cdata_getptr(void *p, CTSize sz)
|
|
17
|
+
{
|
|
18
|
+
if (LJ_64 && sz == 4) { /* Support 32 bit pointers on 64 bit targets. */
|
|
19
|
+
return ((void *)(uintptr_t)*(uint32_t *)p);
|
|
20
|
+
} else {
|
|
21
|
+
lua_assert(sz == CTSIZE_PTR);
|
|
22
|
+
return *(void **)p;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Set C data pointer. */
|
|
27
|
+
static LJ_AINLINE void cdata_setptr(void *p, CTSize sz, const void *v)
|
|
28
|
+
{
|
|
29
|
+
if (LJ_64 && sz == 4) { /* Support 32 bit pointers on 64 bit targets. */
|
|
30
|
+
*(uint32_t *)p = (uint32_t)(uintptr_t)v;
|
|
31
|
+
} else {
|
|
32
|
+
lua_assert(sz == CTSIZE_PTR);
|
|
33
|
+
*(void **)p = (void *)v;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Allocate fixed-size C data object. */
|
|
38
|
+
static LJ_AINLINE GCcdata *lj_cdata_new(CTState *cts, CTypeID id, CTSize sz)
|
|
39
|
+
{
|
|
40
|
+
GCcdata *cd;
|
|
41
|
+
#ifdef LUA_USE_ASSERT
|
|
42
|
+
CType *ct = ctype_raw(cts, id);
|
|
43
|
+
lua_assert((ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR) == sz);
|
|
44
|
+
#endif
|
|
45
|
+
cd = (GCcdata *)lj_mem_newgco(cts->L, sizeof(GCcdata) + sz);
|
|
46
|
+
cd->gct = ~LJ_TCDATA;
|
|
47
|
+
cd->ctypeid = ctype_check(cts, id);
|
|
48
|
+
return cd;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Variant which works without a valid CTState. */
|
|
52
|
+
static LJ_AINLINE GCcdata *lj_cdata_new_(lua_State *L, CTypeID id, CTSize sz)
|
|
53
|
+
{
|
|
54
|
+
GCcdata *cd = (GCcdata *)lj_mem_newgco(L, sizeof(GCcdata) + sz);
|
|
55
|
+
cd->gct = ~LJ_TCDATA;
|
|
56
|
+
cd->ctypeid = id;
|
|
57
|
+
return cd;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id);
|
|
61
|
+
LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz,
|
|
62
|
+
CTSize align);
|
|
63
|
+
|
|
64
|
+
LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd);
|
|
65
|
+
LJ_FUNC void lj_cdata_setfin(lua_State *L, GCcdata *cd, GCobj *obj,
|
|
66
|
+
uint32_t it);
|
|
67
|
+
|
|
68
|
+
LJ_FUNC CType *lj_cdata_index(CTState *cts, GCcdata *cd, cTValue *key,
|
|
69
|
+
uint8_t **pp, CTInfo *qual);
|
|
70
|
+
LJ_FUNC int lj_cdata_get(CTState *cts, CType *s, TValue *o, uint8_t *sp);
|
|
71
|
+
LJ_FUNC void lj_cdata_set(CTState *cts, CType *d, uint8_t *dp, TValue *o,
|
|
72
|
+
CTInfo qual);
|
|
73
|
+
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
#endif
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** Character types.
|
|
3
|
+
** Donated to the public domain.
|
|
4
|
+
**
|
|
5
|
+
** This is intended to replace the problematic libc single-byte NLS functions.
|
|
6
|
+
** These just don't make sense anymore with UTF-8 locales becoming the norm
|
|
7
|
+
** on POSIX systems. It never worked too well on Windows systems since hardly
|
|
8
|
+
** anyone bothered to call setlocale().
|
|
9
|
+
**
|
|
10
|
+
** This table is hardcoded for ASCII. Identifiers include the characters
|
|
11
|
+
** 128-255, too. This allows for the use of all non-ASCII chars as identifiers
|
|
12
|
+
** in the lexer. This is a broad definition, but works well in practice
|
|
13
|
+
** for both UTF-8 locales and most single-byte locales (such as ISO-8859-*).
|
|
14
|
+
**
|
|
15
|
+
** If you really need proper character types for UTF-8 strings, please use
|
|
16
|
+
** an add-on library such as slnunicode: http://luaforge.net/projects/sln/
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
#define lj_char_c
|
|
20
|
+
#define LUA_CORE
|
|
21
|
+
|
|
22
|
+
#include "lj_char.h"
|
|
23
|
+
|
|
24
|
+
LJ_DATADEF const uint8_t lj_char_bits[257] = {
|
|
25
|
+
0,
|
|
26
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1,
|
|
27
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
28
|
+
2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
29
|
+
152,152,152,152,152,152,152,152,152,152, 4, 4, 4, 4, 4, 4,
|
|
30
|
+
4,176,176,176,176,176,176,160,160,160,160,160,160,160,160,160,
|
|
31
|
+
160,160,160,160,160,160,160,160,160,160,160, 4, 4, 4, 4,132,
|
|
32
|
+
4,208,208,208,208,208,208,192,192,192,192,192,192,192,192,192,
|
|
33
|
+
192,192,192,192,192,192,192,192,192,192,192, 4, 4, 4, 4, 1,
|
|
34
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
35
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
36
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
37
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
38
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
39
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
40
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
|
|
41
|
+
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128
|
|
42
|
+
};
|
|
43
|
+
|