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,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** Lexical analyzer.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_LEX_H
|
|
7
|
+
#define _LJ_LEX_H
|
|
8
|
+
|
|
9
|
+
#include <stdarg.h>
|
|
10
|
+
|
|
11
|
+
#include "lj_obj.h"
|
|
12
|
+
#include "lj_err.h"
|
|
13
|
+
|
|
14
|
+
/* Lua lexer tokens. */
|
|
15
|
+
#define TKDEF(_, __) \
|
|
16
|
+
_(and) _(break) _(do) _(else) _(elseif) _(end) _(false) \
|
|
17
|
+
_(for) _(function) _(goto) _(if) _(in) _(local) _(nil) _(not) _(or) \
|
|
18
|
+
_(repeat) _(return) _(then) _(true) _(until) _(while) \
|
|
19
|
+
__(concat, ..) __(dots, ...) __(eq, ==) __(ge, >=) __(le, <=) __(ne, ~=) \
|
|
20
|
+
__(label, ::) __(number, <number>) __(name, <name>) __(string, <string>) \
|
|
21
|
+
__(eof, <eof>)
|
|
22
|
+
|
|
23
|
+
enum {
|
|
24
|
+
TK_OFS = 256,
|
|
25
|
+
#define TKENUM1(name) TK_##name,
|
|
26
|
+
#define TKENUM2(name, sym) TK_##name,
|
|
27
|
+
TKDEF(TKENUM1, TKENUM2)
|
|
28
|
+
#undef TKENUM1
|
|
29
|
+
#undef TKENUM2
|
|
30
|
+
TK_RESERVED = TK_while - TK_OFS
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
typedef int LexChar; /* Lexical character. Unsigned ext. from char. */
|
|
34
|
+
typedef int LexToken; /* Lexical token. */
|
|
35
|
+
|
|
36
|
+
/* Combined bytecode ins/line. Only used during bytecode generation. */
|
|
37
|
+
typedef struct BCInsLine {
|
|
38
|
+
BCIns ins; /* Bytecode instruction. */
|
|
39
|
+
BCLine line; /* Line number for this bytecode. */
|
|
40
|
+
} BCInsLine;
|
|
41
|
+
|
|
42
|
+
/* Info for local variables. Only used during bytecode generation. */
|
|
43
|
+
typedef struct VarInfo {
|
|
44
|
+
GCRef name; /* Local variable name or goto/label name. */
|
|
45
|
+
BCPos startpc; /* First point where the local variable is active. */
|
|
46
|
+
BCPos endpc; /* First point where the local variable is dead. */
|
|
47
|
+
uint8_t slot; /* Variable slot. */
|
|
48
|
+
uint8_t info; /* Variable/goto/label info. */
|
|
49
|
+
} VarInfo;
|
|
50
|
+
|
|
51
|
+
/* Lua lexer state. */
|
|
52
|
+
typedef struct LexState {
|
|
53
|
+
struct FuncState *fs; /* Current FuncState. Defined in lj_parse.c. */
|
|
54
|
+
struct lua_State *L; /* Lua state. */
|
|
55
|
+
TValue tokval; /* Current token value. */
|
|
56
|
+
TValue lookaheadval; /* Lookahead token value. */
|
|
57
|
+
const char *p; /* Current position in input buffer. */
|
|
58
|
+
const char *pe; /* End of input buffer. */
|
|
59
|
+
LexChar c; /* Current character. */
|
|
60
|
+
LexToken tok; /* Current token. */
|
|
61
|
+
LexToken lookahead; /* Lookahead token. */
|
|
62
|
+
SBuf sb; /* String buffer for tokens. */
|
|
63
|
+
lua_Reader rfunc; /* Reader callback. */
|
|
64
|
+
void *rdata; /* Reader callback data. */
|
|
65
|
+
BCLine linenumber; /* Input line counter. */
|
|
66
|
+
BCLine lastline; /* Line of last token. */
|
|
67
|
+
GCstr *chunkname; /* Current chunk name (interned string). */
|
|
68
|
+
const char *chunkarg; /* Chunk name argument. */
|
|
69
|
+
const char *mode; /* Allow loading bytecode (b) and/or source text (t). */
|
|
70
|
+
VarInfo *vstack; /* Stack for names and extents of local variables. */
|
|
71
|
+
MSize sizevstack; /* Size of variable stack. */
|
|
72
|
+
MSize vtop; /* Top of variable stack. */
|
|
73
|
+
BCInsLine *bcstack; /* Stack for bytecode instructions/line numbers. */
|
|
74
|
+
MSize sizebcstack; /* Size of bytecode stack. */
|
|
75
|
+
uint32_t level; /* Syntactical nesting level. */
|
|
76
|
+
} LexState;
|
|
77
|
+
|
|
78
|
+
LJ_FUNC int lj_lex_setup(lua_State *L, LexState *ls);
|
|
79
|
+
LJ_FUNC void lj_lex_cleanup(lua_State *L, LexState *ls);
|
|
80
|
+
LJ_FUNC void lj_lex_next(LexState *ls);
|
|
81
|
+
LJ_FUNC LexToken lj_lex_lookahead(LexState *ls);
|
|
82
|
+
LJ_FUNC const char *lj_lex_token2str(LexState *ls, LexToken tok);
|
|
83
|
+
LJ_FUNC_NORET void lj_lex_error(LexState *ls, LexToken tok, ErrMsg em, ...);
|
|
84
|
+
LJ_FUNC void lj_lex_init(lua_State *L);
|
|
85
|
+
|
|
86
|
+
#endif
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** Library function support.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#define lj_lib_c
|
|
7
|
+
#define LUA_CORE
|
|
8
|
+
|
|
9
|
+
#include "lauxlib.h"
|
|
10
|
+
|
|
11
|
+
#include "lj_obj.h"
|
|
12
|
+
#include "lj_gc.h"
|
|
13
|
+
#include "lj_err.h"
|
|
14
|
+
#include "lj_str.h"
|
|
15
|
+
#include "lj_tab.h"
|
|
16
|
+
#include "lj_func.h"
|
|
17
|
+
#include "lj_bc.h"
|
|
18
|
+
#include "lj_dispatch.h"
|
|
19
|
+
#include "lj_vm.h"
|
|
20
|
+
#include "lj_strscan.h"
|
|
21
|
+
#include "lj_strfmt.h"
|
|
22
|
+
#include "lj_lex.h"
|
|
23
|
+
#include "lj_bcdump.h"
|
|
24
|
+
#include "lj_lib.h"
|
|
25
|
+
|
|
26
|
+
/* -- Library initialization ---------------------------------------------- */
|
|
27
|
+
|
|
28
|
+
static GCtab *lib_create_table(lua_State *L, const char *libname, int hsize)
|
|
29
|
+
{
|
|
30
|
+
if (libname) {
|
|
31
|
+
luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16);
|
|
32
|
+
lua_getfield(L, -1, libname);
|
|
33
|
+
if (!tvistab(L->top-1)) {
|
|
34
|
+
L->top--;
|
|
35
|
+
if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, hsize) != NULL)
|
|
36
|
+
lj_err_callerv(L, LJ_ERR_BADMODN, libname);
|
|
37
|
+
settabV(L, L->top, tabV(L->top-1));
|
|
38
|
+
L->top++;
|
|
39
|
+
lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */
|
|
40
|
+
}
|
|
41
|
+
L->top--;
|
|
42
|
+
settabV(L, L->top-1, tabV(L->top));
|
|
43
|
+
} else {
|
|
44
|
+
lua_createtable(L, 0, hsize);
|
|
45
|
+
}
|
|
46
|
+
return tabV(L->top-1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static const uint8_t *lib_read_lfunc(lua_State *L, const uint8_t *p, GCtab *tab)
|
|
50
|
+
{
|
|
51
|
+
int len = *p++;
|
|
52
|
+
GCstr *name = lj_str_new(L, (const char *)p, len);
|
|
53
|
+
LexState ls;
|
|
54
|
+
GCproto *pt;
|
|
55
|
+
GCfunc *fn;
|
|
56
|
+
memset(&ls, 0, sizeof(ls));
|
|
57
|
+
ls.L = L;
|
|
58
|
+
ls.p = (const char *)(p+len);
|
|
59
|
+
ls.pe = (const char *)~(uintptr_t)0;
|
|
60
|
+
ls.c = -1;
|
|
61
|
+
ls.level = (BCDUMP_F_STRIP|(LJ_BE*BCDUMP_F_BE));
|
|
62
|
+
ls.chunkname = name;
|
|
63
|
+
pt = lj_bcread_proto(&ls);
|
|
64
|
+
pt->firstline = ~(BCLine)0;
|
|
65
|
+
fn = lj_func_newL_empty(L, pt, tabref(L->env));
|
|
66
|
+
/* NOBARRIER: See below for common barrier. */
|
|
67
|
+
setfuncV(L, lj_tab_setstr(L, tab, name), fn);
|
|
68
|
+
return (const uint8_t *)ls.p;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void lj_lib_register(lua_State *L, const char *libname,
|
|
72
|
+
const uint8_t *p, const lua_CFunction *cf)
|
|
73
|
+
{
|
|
74
|
+
GCtab *env = tabref(L->env);
|
|
75
|
+
GCfunc *ofn = NULL;
|
|
76
|
+
int ffid = *p++;
|
|
77
|
+
BCIns *bcff = &L2GG(L)->bcff[*p++];
|
|
78
|
+
GCtab *tab = lib_create_table(L, libname, *p++);
|
|
79
|
+
ptrdiff_t tpos = L->top - L->base;
|
|
80
|
+
|
|
81
|
+
/* Avoid barriers further down. */
|
|
82
|
+
lj_gc_anybarriert(L, tab);
|
|
83
|
+
tab->nomm = 0;
|
|
84
|
+
|
|
85
|
+
for (;;) {
|
|
86
|
+
uint32_t tag = *p++;
|
|
87
|
+
MSize len = tag & LIBINIT_LENMASK;
|
|
88
|
+
tag &= LIBINIT_TAGMASK;
|
|
89
|
+
if (tag != LIBINIT_STRING) {
|
|
90
|
+
const char *name;
|
|
91
|
+
MSize nuv = (MSize)(L->top - L->base - tpos);
|
|
92
|
+
GCfunc *fn = lj_func_newC(L, nuv, env);
|
|
93
|
+
if (nuv) {
|
|
94
|
+
L->top = L->base + tpos;
|
|
95
|
+
memcpy(fn->c.upvalue, L->top, sizeof(TValue)*nuv);
|
|
96
|
+
}
|
|
97
|
+
fn->c.ffid = (uint8_t)(ffid++);
|
|
98
|
+
name = (const char *)p;
|
|
99
|
+
p += len;
|
|
100
|
+
if (tag == LIBINIT_CF)
|
|
101
|
+
setmref(fn->c.pc, &G(L)->bc_cfunc_int);
|
|
102
|
+
else
|
|
103
|
+
setmref(fn->c.pc, bcff++);
|
|
104
|
+
if (tag == LIBINIT_ASM_)
|
|
105
|
+
fn->c.f = ofn->c.f; /* Copy handler from previous function. */
|
|
106
|
+
else
|
|
107
|
+
fn->c.f = *cf++; /* Get cf or handler from C function table. */
|
|
108
|
+
if (len) {
|
|
109
|
+
/* NOBARRIER: See above for common barrier. */
|
|
110
|
+
setfuncV(L, lj_tab_setstr(L, tab, lj_str_new(L, name, len)), fn);
|
|
111
|
+
}
|
|
112
|
+
ofn = fn;
|
|
113
|
+
} else {
|
|
114
|
+
switch (tag | len) {
|
|
115
|
+
case LIBINIT_LUA:
|
|
116
|
+
p = lib_read_lfunc(L, p, tab);
|
|
117
|
+
break;
|
|
118
|
+
case LIBINIT_SET:
|
|
119
|
+
L->top -= 2;
|
|
120
|
+
if (tvisstr(L->top+1) && strV(L->top+1)->len == 0)
|
|
121
|
+
env = tabV(L->top);
|
|
122
|
+
else /* NOBARRIER: See above for common barrier. */
|
|
123
|
+
copyTV(L, lj_tab_set(L, tab, L->top+1), L->top);
|
|
124
|
+
break;
|
|
125
|
+
case LIBINIT_NUMBER:
|
|
126
|
+
memcpy(&L->top->n, p, sizeof(double));
|
|
127
|
+
L->top++;
|
|
128
|
+
p += sizeof(double);
|
|
129
|
+
break;
|
|
130
|
+
case LIBINIT_COPY:
|
|
131
|
+
copyTV(L, L->top, L->top - *p++);
|
|
132
|
+
L->top++;
|
|
133
|
+
break;
|
|
134
|
+
case LIBINIT_LASTCL:
|
|
135
|
+
setfuncV(L, L->top++, ofn);
|
|
136
|
+
break;
|
|
137
|
+
case LIBINIT_FFID:
|
|
138
|
+
ffid++;
|
|
139
|
+
break;
|
|
140
|
+
case LIBINIT_END:
|
|
141
|
+
return;
|
|
142
|
+
default:
|
|
143
|
+
setstrV(L, L->top++, lj_str_new(L, (const char *)p, len));
|
|
144
|
+
p += len;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* Push internal function on the stack. */
|
|
152
|
+
GCfunc *lj_lib_pushcc(lua_State *L, lua_CFunction f, int id, int n)
|
|
153
|
+
{
|
|
154
|
+
GCfunc *fn;
|
|
155
|
+
lua_pushcclosure(L, f, n);
|
|
156
|
+
fn = funcV(L->top-1);
|
|
157
|
+
fn->c.ffid = (uint8_t)id;
|
|
158
|
+
setmref(fn->c.pc, &G(L)->bc_cfunc_int);
|
|
159
|
+
return fn;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f, GCtab *env)
|
|
163
|
+
{
|
|
164
|
+
luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD", 4);
|
|
165
|
+
lua_pushcfunction(L, f);
|
|
166
|
+
/* NOBARRIER: The function is new (marked white). */
|
|
167
|
+
setgcref(funcV(L->top-1)->c.env, obj2gco(env));
|
|
168
|
+
lua_setfield(L, -2, name);
|
|
169
|
+
L->top--;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
int lj_lib_postreg(lua_State *L, lua_CFunction cf, int id, const char *name)
|
|
173
|
+
{
|
|
174
|
+
GCfunc *fn = lj_lib_pushcf(L, cf, id);
|
|
175
|
+
GCtab *t = tabref(curr_func(L)->c.env); /* Reference to parent table. */
|
|
176
|
+
setfuncV(L, lj_tab_setstr(L, t, lj_str_newz(L, name)), fn);
|
|
177
|
+
lj_gc_anybarriert(L, t);
|
|
178
|
+
setfuncV(L, L->top++, fn);
|
|
179
|
+
return 1;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* -- Type checks --------------------------------------------------------- */
|
|
183
|
+
|
|
184
|
+
TValue *lj_lib_checkany(lua_State *L, int narg)
|
|
185
|
+
{
|
|
186
|
+
TValue *o = L->base + narg-1;
|
|
187
|
+
if (o >= L->top)
|
|
188
|
+
lj_err_arg(L, narg, LJ_ERR_NOVAL);
|
|
189
|
+
return o;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
GCstr *lj_lib_checkstr(lua_State *L, int narg)
|
|
193
|
+
{
|
|
194
|
+
TValue *o = L->base + narg-1;
|
|
195
|
+
if (o < L->top) {
|
|
196
|
+
if (LJ_LIKELY(tvisstr(o))) {
|
|
197
|
+
return strV(o);
|
|
198
|
+
} else if (tvisnumber(o)) {
|
|
199
|
+
GCstr *s = lj_strfmt_number(L, o);
|
|
200
|
+
setstrV(L, o, s);
|
|
201
|
+
return s;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
lj_err_argt(L, narg, LUA_TSTRING);
|
|
205
|
+
return NULL; /* unreachable */
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
GCstr *lj_lib_optstr(lua_State *L, int narg)
|
|
209
|
+
{
|
|
210
|
+
TValue *o = L->base + narg-1;
|
|
211
|
+
return (o < L->top && !tvisnil(o)) ? lj_lib_checkstr(L, narg) : NULL;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
#if LJ_DUALNUM
|
|
215
|
+
void lj_lib_checknumber(lua_State *L, int narg)
|
|
216
|
+
{
|
|
217
|
+
TValue *o = L->base + narg-1;
|
|
218
|
+
if (!(o < L->top && lj_strscan_numberobj(o)))
|
|
219
|
+
lj_err_argt(L, narg, LUA_TNUMBER);
|
|
220
|
+
}
|
|
221
|
+
#endif
|
|
222
|
+
|
|
223
|
+
lua_Number lj_lib_checknum(lua_State *L, int narg)
|
|
224
|
+
{
|
|
225
|
+
TValue *o = L->base + narg-1;
|
|
226
|
+
if (!(o < L->top &&
|
|
227
|
+
(tvisnumber(o) || (tvisstr(o) && lj_strscan_num(strV(o), o)))))
|
|
228
|
+
lj_err_argt(L, narg, LUA_TNUMBER);
|
|
229
|
+
if (LJ_UNLIKELY(tvisint(o))) {
|
|
230
|
+
lua_Number n = (lua_Number)intV(o);
|
|
231
|
+
setnumV(o, n);
|
|
232
|
+
return n;
|
|
233
|
+
} else {
|
|
234
|
+
return numV(o);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
int32_t lj_lib_checkint(lua_State *L, int narg)
|
|
239
|
+
{
|
|
240
|
+
TValue *o = L->base + narg-1;
|
|
241
|
+
if (!(o < L->top && lj_strscan_numberobj(o)))
|
|
242
|
+
lj_err_argt(L, narg, LUA_TNUMBER);
|
|
243
|
+
if (LJ_LIKELY(tvisint(o))) {
|
|
244
|
+
return intV(o);
|
|
245
|
+
} else {
|
|
246
|
+
int32_t i = lj_num2int(numV(o));
|
|
247
|
+
if (LJ_DUALNUM) setintV(o, i);
|
|
248
|
+
return i;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
int32_t lj_lib_optint(lua_State *L, int narg, int32_t def)
|
|
253
|
+
{
|
|
254
|
+
TValue *o = L->base + narg-1;
|
|
255
|
+
return (o < L->top && !tvisnil(o)) ? lj_lib_checkint(L, narg) : def;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
GCfunc *lj_lib_checkfunc(lua_State *L, int narg)
|
|
259
|
+
{
|
|
260
|
+
TValue *o = L->base + narg-1;
|
|
261
|
+
if (!(o < L->top && tvisfunc(o)))
|
|
262
|
+
lj_err_argt(L, narg, LUA_TFUNCTION);
|
|
263
|
+
return funcV(o);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
GCtab *lj_lib_checktab(lua_State *L, int narg)
|
|
267
|
+
{
|
|
268
|
+
TValue *o = L->base + narg-1;
|
|
269
|
+
if (!(o < L->top && tvistab(o)))
|
|
270
|
+
lj_err_argt(L, narg, LUA_TTABLE);
|
|
271
|
+
return tabV(o);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
GCtab *lj_lib_checktabornil(lua_State *L, int narg)
|
|
275
|
+
{
|
|
276
|
+
TValue *o = L->base + narg-1;
|
|
277
|
+
if (o < L->top) {
|
|
278
|
+
if (tvistab(o))
|
|
279
|
+
return tabV(o);
|
|
280
|
+
else if (tvisnil(o))
|
|
281
|
+
return NULL;
|
|
282
|
+
}
|
|
283
|
+
lj_err_arg(L, narg, LJ_ERR_NOTABN);
|
|
284
|
+
return NULL; /* unreachable */
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst)
|
|
288
|
+
{
|
|
289
|
+
GCstr *s = def >= 0 ? lj_lib_optstr(L, narg) : lj_lib_checkstr(L, narg);
|
|
290
|
+
if (s) {
|
|
291
|
+
const char *opt = strdata(s);
|
|
292
|
+
MSize len = s->len;
|
|
293
|
+
int i;
|
|
294
|
+
for (i = 0; *(const uint8_t *)lst; i++) {
|
|
295
|
+
if (*(const uint8_t *)lst == len && memcmp(opt, lst+1, len) == 0)
|
|
296
|
+
return i;
|
|
297
|
+
lst += 1+*(const uint8_t *)lst;
|
|
298
|
+
}
|
|
299
|
+
lj_err_argv(L, narg, LJ_ERR_INVOPTM, opt);
|
|
300
|
+
}
|
|
301
|
+
return def;
|
|
302
|
+
}
|
|
303
|
+
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/*
|
|
2
|
+
** Library function support.
|
|
3
|
+
** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef _LJ_LIB_H
|
|
7
|
+
#define _LJ_LIB_H
|
|
8
|
+
|
|
9
|
+
#include "lj_obj.h"
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
** A fallback handler is called by the assembler VM if the fast path fails:
|
|
13
|
+
**
|
|
14
|
+
** - too few arguments: unrecoverable.
|
|
15
|
+
** - wrong argument type: recoverable, if coercion succeeds.
|
|
16
|
+
** - bad argument value: unrecoverable.
|
|
17
|
+
** - stack overflow: recoverable, if stack reallocation succeeds.
|
|
18
|
+
** - extra handling: recoverable.
|
|
19
|
+
**
|
|
20
|
+
** The unrecoverable cases throw an error with lj_err_arg(), lj_err_argtype(),
|
|
21
|
+
** lj_err_caller() or lj_err_callermsg().
|
|
22
|
+
** The recoverable cases return 0 or the number of results + 1.
|
|
23
|
+
** The assembler VM retries the fast path only if 0 is returned.
|
|
24
|
+
** This time the fallback must not be called again or it gets stuck in a loop.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/* Return values from fallback handler. */
|
|
28
|
+
#define FFH_RETRY 0
|
|
29
|
+
#define FFH_UNREACHABLE FFH_RETRY
|
|
30
|
+
#define FFH_RES(n) ((n)+1)
|
|
31
|
+
#define FFH_TAILCALL (-1)
|
|
32
|
+
|
|
33
|
+
LJ_FUNC TValue *lj_lib_checkany(lua_State *L, int narg);
|
|
34
|
+
LJ_FUNC GCstr *lj_lib_checkstr(lua_State *L, int narg);
|
|
35
|
+
LJ_FUNC GCstr *lj_lib_optstr(lua_State *L, int narg);
|
|
36
|
+
#if LJ_DUALNUM
|
|
37
|
+
LJ_FUNC void lj_lib_checknumber(lua_State *L, int narg);
|
|
38
|
+
#else
|
|
39
|
+
#define lj_lib_checknumber(L, narg) lj_lib_checknum((L), (narg))
|
|
40
|
+
#endif
|
|
41
|
+
LJ_FUNC lua_Number lj_lib_checknum(lua_State *L, int narg);
|
|
42
|
+
LJ_FUNC int32_t lj_lib_checkint(lua_State *L, int narg);
|
|
43
|
+
LJ_FUNC int32_t lj_lib_optint(lua_State *L, int narg, int32_t def);
|
|
44
|
+
LJ_FUNC GCfunc *lj_lib_checkfunc(lua_State *L, int narg);
|
|
45
|
+
LJ_FUNC GCtab *lj_lib_checktab(lua_State *L, int narg);
|
|
46
|
+
LJ_FUNC GCtab *lj_lib_checktabornil(lua_State *L, int narg);
|
|
47
|
+
LJ_FUNC int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst);
|
|
48
|
+
|
|
49
|
+
/* Avoid including lj_frame.h. */
|
|
50
|
+
#if LJ_GC64
|
|
51
|
+
#define lj_lib_upvalue(L, n) \
|
|
52
|
+
(&gcval(L->base-2)->fn.c.upvalue[(n)-1])
|
|
53
|
+
#elif LJ_FR2
|
|
54
|
+
#define lj_lib_upvalue(L, n) \
|
|
55
|
+
(&gcref((L->base-2)->gcr)->fn.c.upvalue[(n)-1])
|
|
56
|
+
#else
|
|
57
|
+
#define lj_lib_upvalue(L, n) \
|
|
58
|
+
(&gcref((L->base-1)->fr.func)->fn.c.upvalue[(n)-1])
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
#if LJ_TARGET_WINDOWS
|
|
62
|
+
#define lj_lib_checkfpu(L) \
|
|
63
|
+
do { setnumV(L->top++, (lua_Number)1437217655); \
|
|
64
|
+
if (lua_tointeger(L, -1) != 1437217655) lj_err_caller(L, LJ_ERR_BADFPU); \
|
|
65
|
+
L->top--; } while (0)
|
|
66
|
+
#else
|
|
67
|
+
#define lj_lib_checkfpu(L) UNUSED(L)
|
|
68
|
+
#endif
|
|
69
|
+
|
|
70
|
+
LJ_FUNC GCfunc *lj_lib_pushcc(lua_State *L, lua_CFunction f, int id, int n);
|
|
71
|
+
#define lj_lib_pushcf(L, fn, id) (lj_lib_pushcc(L, (fn), (id), 0))
|
|
72
|
+
|
|
73
|
+
/* Library function declarations. Scanned by buildvm. */
|
|
74
|
+
#define LJLIB_CF(name) static int lj_cf_##name(lua_State *L)
|
|
75
|
+
#define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L)
|
|
76
|
+
#define LJLIB_ASM_(name)
|
|
77
|
+
#define LJLIB_LUA(name)
|
|
78
|
+
#define LJLIB_SET(name)
|
|
79
|
+
#define LJLIB_PUSH(arg)
|
|
80
|
+
#define LJLIB_REC(handler)
|
|
81
|
+
#define LJLIB_NOREGUV
|
|
82
|
+
#define LJLIB_NOREG
|
|
83
|
+
|
|
84
|
+
#define LJ_LIB_REG(L, regname, name) \
|
|
85
|
+
lj_lib_register(L, regname, lj_lib_init_##name, lj_lib_cf_##name)
|
|
86
|
+
|
|
87
|
+
LJ_FUNC void lj_lib_register(lua_State *L, const char *libname,
|
|
88
|
+
const uint8_t *init, const lua_CFunction *cf);
|
|
89
|
+
LJ_FUNC void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f,
|
|
90
|
+
GCtab *env);
|
|
91
|
+
LJ_FUNC int lj_lib_postreg(lua_State *L, lua_CFunction cf, int id,
|
|
92
|
+
const char *name);
|
|
93
|
+
|
|
94
|
+
/* Library init data tags. */
|
|
95
|
+
#define LIBINIT_LENMASK 0x3f
|
|
96
|
+
#define LIBINIT_TAGMASK 0xc0
|
|
97
|
+
#define LIBINIT_CF 0x00
|
|
98
|
+
#define LIBINIT_ASM 0x40
|
|
99
|
+
#define LIBINIT_ASM_ 0x80
|
|
100
|
+
#define LIBINIT_STRING 0xc0
|
|
101
|
+
#define LIBINIT_MAXSTR 0x38
|
|
102
|
+
#define LIBINIT_LUA 0xf9
|
|
103
|
+
#define LIBINIT_SET 0xfa
|
|
104
|
+
#define LIBINIT_NUMBER 0xfb
|
|
105
|
+
#define LIBINIT_COPY 0xfc
|
|
106
|
+
#define LIBINIT_LASTCL 0xfd
|
|
107
|
+
#define LIBINIT_FFID 0xfe
|
|
108
|
+
#define LIBINIT_END 0xff
|
|
109
|
+
|
|
110
|
+
/* Exported library functions. */
|
|
111
|
+
|
|
112
|
+
typedef struct RandomState RandomState;
|
|
113
|
+
LJ_FUNC uint64_t LJ_FASTCALL lj_math_random_step(RandomState *rs);
|
|
114
|
+
|
|
115
|
+
#endif
|