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,201 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>jit.* Library</title>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
|
+
<meta name="Author" content="Mike Pall">
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2015, Mike Pall">
|
8
|
+
<meta name="Language" content="en">
|
9
|
+
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
|
+
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<div id="site">
|
14
|
+
<a href="http://luajit.org"><span>Lua<span id="logo">JIT</span></span></a>
|
15
|
+
</div>
|
16
|
+
<div id="head">
|
17
|
+
<h1><tt>jit.*</tt> Library</h1>
|
18
|
+
</div>
|
19
|
+
<div id="nav">
|
20
|
+
<ul><li>
|
21
|
+
<a href="luajit.html">LuaJIT</a>
|
22
|
+
<ul><li>
|
23
|
+
<a href="http://luajit.org/download.html">Download <span class="ext">»</span></a>
|
24
|
+
</li><li>
|
25
|
+
<a href="install.html">Installation</a>
|
26
|
+
</li><li>
|
27
|
+
<a href="running.html">Running</a>
|
28
|
+
</li></ul>
|
29
|
+
</li><li>
|
30
|
+
<a href="extensions.html">Extensions</a>
|
31
|
+
<ul><li>
|
32
|
+
<a href="ext_ffi.html">FFI Library</a>
|
33
|
+
<ul><li>
|
34
|
+
<a href="ext_ffi_tutorial.html">FFI Tutorial</a>
|
35
|
+
</li><li>
|
36
|
+
<a href="ext_ffi_api.html">ffi.* API</a>
|
37
|
+
</li><li>
|
38
|
+
<a href="ext_ffi_semantics.html">FFI Semantics</a>
|
39
|
+
</li></ul>
|
40
|
+
</li><li>
|
41
|
+
<a class="current" href="ext_jit.html">jit.* Library</a>
|
42
|
+
</li><li>
|
43
|
+
<a href="ext_c_api.html">Lua/C API</a>
|
44
|
+
</li><li>
|
45
|
+
<a href="ext_profiler.html">Profiler</a>
|
46
|
+
</li></ul>
|
47
|
+
</li><li>
|
48
|
+
<a href="status.html">Status</a>
|
49
|
+
<ul><li>
|
50
|
+
<a href="changes.html">Changes</a>
|
51
|
+
</li></ul>
|
52
|
+
</li><li>
|
53
|
+
<a href="faq.html">FAQ</a>
|
54
|
+
</li><li>
|
55
|
+
<a href="http://luajit.org/performance.html">Performance <span class="ext">»</span></a>
|
56
|
+
</li><li>
|
57
|
+
<a href="http://wiki.luajit.org/">Wiki <span class="ext">»</span></a>
|
58
|
+
</li><li>
|
59
|
+
<a href="http://luajit.org/list.html">Mailing List <span class="ext">»</span></a>
|
60
|
+
</li></ul>
|
61
|
+
</div>
|
62
|
+
<div id="main">
|
63
|
+
<p>
|
64
|
+
The functions in this built-in module control the behavior of the JIT
|
65
|
+
compiler engine. Note that JIT-compilation is fully automatic —
|
66
|
+
you probably won't need to use any of the following functions unless
|
67
|
+
you have special needs.
|
68
|
+
</p>
|
69
|
+
|
70
|
+
<h3 id="jit_onoff"><tt>jit.on()<br>
|
71
|
+
jit.off()</tt></h3>
|
72
|
+
<p>
|
73
|
+
Turns the whole JIT compiler on (default) or off.
|
74
|
+
</p>
|
75
|
+
<p>
|
76
|
+
These functions are typically used with the command line options
|
77
|
+
<tt>-j on</tt> or <tt>-j off</tt>.
|
78
|
+
</p>
|
79
|
+
|
80
|
+
<h3 id="jit_flush"><tt>jit.flush()</tt></h3>
|
81
|
+
<p>
|
82
|
+
Flushes the whole cache of compiled code.
|
83
|
+
</p>
|
84
|
+
|
85
|
+
<h3 id="jit_onoff_func"><tt>jit.on(func|true [,true|false])<br>
|
86
|
+
jit.off(func|true [,true|false])<br>
|
87
|
+
jit.flush(func|true [,true|false])</tt></h3>
|
88
|
+
<p>
|
89
|
+
<tt>jit.on</tt> enables JIT compilation for a Lua function (this is
|
90
|
+
the default).
|
91
|
+
</p>
|
92
|
+
<p>
|
93
|
+
<tt>jit.off</tt> disables JIT compilation for a Lua function and
|
94
|
+
flushes any already compiled code from the code cache.
|
95
|
+
</p>
|
96
|
+
<p>
|
97
|
+
<tt>jit.flush</tt> flushes the code, but doesn't affect the
|
98
|
+
enable/disable status.
|
99
|
+
</p>
|
100
|
+
<p>
|
101
|
+
The current function, i.e. the Lua function calling this library
|
102
|
+
function, can also be specified by passing <tt>true</tt> as the first
|
103
|
+
argument.
|
104
|
+
</p>
|
105
|
+
<p>
|
106
|
+
If the second argument is <tt>true</tt>, JIT compilation is also
|
107
|
+
enabled, disabled or flushed recursively for all sub-functions of a
|
108
|
+
function. With <tt>false</tt> only the sub-functions are affected.
|
109
|
+
</p>
|
110
|
+
<p>
|
111
|
+
The <tt>jit.on</tt> and <tt>jit.off</tt> functions only set a flag
|
112
|
+
which is checked when the function is about to be compiled. They do
|
113
|
+
not trigger immediate compilation.
|
114
|
+
</p>
|
115
|
+
<p>
|
116
|
+
Typical usage is <tt>jit.off(true, true)</tt> in the main chunk
|
117
|
+
of a module to turn off JIT compilation for the whole module for
|
118
|
+
debugging purposes.
|
119
|
+
</p>
|
120
|
+
|
121
|
+
<h3 id="jit_flush_tr"><tt>jit.flush(tr)</tt></h3>
|
122
|
+
<p>
|
123
|
+
Flushes the root trace, specified by its number, and all of its side
|
124
|
+
traces from the cache. The code for the trace will be retained as long
|
125
|
+
as there are any other traces which link to it.
|
126
|
+
</p>
|
127
|
+
|
128
|
+
<h3 id="jit_status"><tt>status, ... = jit.status()</tt></h3>
|
129
|
+
<p>
|
130
|
+
Returns the current status of the JIT compiler. The first result is
|
131
|
+
either <tt>true</tt> or <tt>false</tt> if the JIT compiler is turned
|
132
|
+
on or off. The remaining results are strings for CPU-specific features
|
133
|
+
and enabled optimizations.
|
134
|
+
</p>
|
135
|
+
|
136
|
+
<h3 id="jit_version"><tt>jit.version</tt></h3>
|
137
|
+
<p>
|
138
|
+
Contains the LuaJIT version string.
|
139
|
+
</p>
|
140
|
+
|
141
|
+
<h3 id="jit_version_num"><tt>jit.version_num</tt></h3>
|
142
|
+
<p>
|
143
|
+
Contains the version number of the LuaJIT core. Version xx.yy.zz
|
144
|
+
is represented by the decimal number xxyyzz.
|
145
|
+
</p>
|
146
|
+
|
147
|
+
<h3 id="jit_os"><tt>jit.os</tt></h3>
|
148
|
+
<p>
|
149
|
+
Contains the target OS name:
|
150
|
+
"Windows", "Linux", "OSX", "BSD", "POSIX" or "Other".
|
151
|
+
</p>
|
152
|
+
|
153
|
+
<h3 id="jit_arch"><tt>jit.arch</tt></h3>
|
154
|
+
<p>
|
155
|
+
Contains the target architecture name:
|
156
|
+
"x86", "x64", "arm", "ppc", or "mips".
|
157
|
+
</p>
|
158
|
+
|
159
|
+
<h2 id="jit_opt"><tt>jit.opt.*</tt> — JIT compiler optimization control</h2>
|
160
|
+
<p>
|
161
|
+
This sub-module provides the backend for the <tt>-O</tt> command line
|
162
|
+
option.
|
163
|
+
</p>
|
164
|
+
<p>
|
165
|
+
You can also use it programmatically, e.g.:
|
166
|
+
</p>
|
167
|
+
<pre class="code">
|
168
|
+
jit.opt.start(2) -- same as -O2
|
169
|
+
jit.opt.start("-dce")
|
170
|
+
jit.opt.start("hotloop=10", "hotexit=2")
|
171
|
+
</pre>
|
172
|
+
<p>
|
173
|
+
Unlike in LuaJIT 1.x, the module is built-in and
|
174
|
+
<b>optimization is turned on by default!</b>
|
175
|
+
It's no longer necessary to run <tt>require("jit.opt").start()</tt>,
|
176
|
+
which was one of the ways to enable optimization.
|
177
|
+
</p>
|
178
|
+
|
179
|
+
<h2 id="jit_util"><tt>jit.util.*</tt> — JIT compiler introspection</h2>
|
180
|
+
<p>
|
181
|
+
This sub-module holds functions to introspect the bytecode, generated
|
182
|
+
traces, the IR and the generated machine code. The functionality
|
183
|
+
provided by this module is still in flux and therefore undocumented.
|
184
|
+
</p>
|
185
|
+
<p>
|
186
|
+
The debug modules <tt>-jbc</tt>, <tt>-jv</tt> and <tt>-jdump</tt> make
|
187
|
+
extensive use of these functions. Please check out their source code,
|
188
|
+
if you want to know more.
|
189
|
+
</p>
|
190
|
+
<br class="flush">
|
191
|
+
</div>
|
192
|
+
<div id="foot">
|
193
|
+
<hr class="hide">
|
194
|
+
Copyright © 2005-2015 Mike Pall
|
195
|
+
<span class="noprint">
|
196
|
+
·
|
197
|
+
<a href="contact.html">Contact</a>
|
198
|
+
</span>
|
199
|
+
</div>
|
200
|
+
</body>
|
201
|
+
</html>
|
@@ -0,0 +1,365 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Profiler</title>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
|
+
<meta name="Author" content="Mike Pall">
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2015, Mike Pall">
|
8
|
+
<meta name="Language" content="en">
|
9
|
+
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
|
+
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<div id="site">
|
14
|
+
<a href="http://luajit.org"><span>Lua<span id="logo">JIT</span></span></a>
|
15
|
+
</div>
|
16
|
+
<div id="head">
|
17
|
+
<h1>Profiler</h1>
|
18
|
+
</div>
|
19
|
+
<div id="nav">
|
20
|
+
<ul><li>
|
21
|
+
<a href="luajit.html">LuaJIT</a>
|
22
|
+
<ul><li>
|
23
|
+
<a href="http://luajit.org/download.html">Download <span class="ext">»</span></a>
|
24
|
+
</li><li>
|
25
|
+
<a href="install.html">Installation</a>
|
26
|
+
</li><li>
|
27
|
+
<a href="running.html">Running</a>
|
28
|
+
</li></ul>
|
29
|
+
</li><li>
|
30
|
+
<a href="extensions.html">Extensions</a>
|
31
|
+
<ul><li>
|
32
|
+
<a href="ext_ffi.html">FFI Library</a>
|
33
|
+
<ul><li>
|
34
|
+
<a href="ext_ffi_tutorial.html">FFI Tutorial</a>
|
35
|
+
</li><li>
|
36
|
+
<a href="ext_ffi_api.html">ffi.* API</a>
|
37
|
+
</li><li>
|
38
|
+
<a href="ext_ffi_semantics.html">FFI Semantics</a>
|
39
|
+
</li></ul>
|
40
|
+
</li><li>
|
41
|
+
<a href="ext_jit.html">jit.* Library</a>
|
42
|
+
</li><li>
|
43
|
+
<a href="ext_c_api.html">Lua/C API</a>
|
44
|
+
</li><li>
|
45
|
+
<a class="current" href="ext_profiler.html">Profiler</a>
|
46
|
+
</li></ul>
|
47
|
+
</li><li>
|
48
|
+
<a href="status.html">Status</a>
|
49
|
+
<ul><li>
|
50
|
+
<a href="changes.html">Changes</a>
|
51
|
+
</li></ul>
|
52
|
+
</li><li>
|
53
|
+
<a href="faq.html">FAQ</a>
|
54
|
+
</li><li>
|
55
|
+
<a href="http://luajit.org/performance.html">Performance <span class="ext">»</span></a>
|
56
|
+
</li><li>
|
57
|
+
<a href="http://wiki.luajit.org/">Wiki <span class="ext">»</span></a>
|
58
|
+
</li><li>
|
59
|
+
<a href="http://luajit.org/list.html">Mailing List <span class="ext">»</span></a>
|
60
|
+
</li></ul>
|
61
|
+
</div>
|
62
|
+
<div id="main">
|
63
|
+
<p>
|
64
|
+
LuaJIT has an integrated statistical profiler with very low overhead. It
|
65
|
+
allows sampling the currently executing stack and other parameters in
|
66
|
+
regular intervals.
|
67
|
+
</p>
|
68
|
+
<p>
|
69
|
+
The integrated profiler can be accessed from three levels:
|
70
|
+
</p>
|
71
|
+
<ul>
|
72
|
+
<li>The <a href="#hl_profiler">bundled high-level profiler</a>, invoked by the
|
73
|
+
<a href="#j_p"><tt>-jp</tt></a> command line option.</li>
|
74
|
+
<li>A <a href="#ll_lua_api">low-level Lua API</a> to control the profiler.</li>
|
75
|
+
<li>A <a href="#ll_c_api">low-level C API</a> to control the profiler.</li>
|
76
|
+
</ul>
|
77
|
+
|
78
|
+
<h2 id="hl_profiler">High-Level Profiler</h2>
|
79
|
+
<p>
|
80
|
+
The bundled high-level profiler offers basic profiling functionality. It
|
81
|
+
generates simple textual summaries or source code annotations. It can be
|
82
|
+
accessed with the <a href="#j_p"><tt>-jp</tt></a> command line option
|
83
|
+
or from Lua code by loading the underlying <tt>jit.p</tt> module.
|
84
|
+
</p>
|
85
|
+
<p>
|
86
|
+
To cut to the chase — run this to get a CPU usage profile by
|
87
|
+
function name:
|
88
|
+
</p>
|
89
|
+
<pre class="code">
|
90
|
+
luajit -jp myapp.lua
|
91
|
+
</pre>
|
92
|
+
<p>
|
93
|
+
It's <em>not</em> a stated goal of the bundled profiler to add every
|
94
|
+
possible option or to cater for special profiling needs. The low-level
|
95
|
+
profiler APIs are documented below. They may be used by third-party
|
96
|
+
authors to implement advanced functionality, e.g. IDE integration or
|
97
|
+
graphical profilers.
|
98
|
+
</p>
|
99
|
+
<p>
|
100
|
+
Note: Sampling works for both interpreted and JIT-compiled code. The
|
101
|
+
results for JIT-compiled code may sometimes be surprising. LuaJIT
|
102
|
+
heavily optimizes and inlines Lua code — there's no simple
|
103
|
+
one-to-one correspondence between source code lines and the sampled
|
104
|
+
machine code.
|
105
|
+
</p>
|
106
|
+
|
107
|
+
<h3 id="j_p"><tt>-jp=[options[,output]]</tt></h3>
|
108
|
+
<p>
|
109
|
+
The <tt>-jp</tt> command line option starts the high-level profiler.
|
110
|
+
When the application run by the command line terminates, the profiler
|
111
|
+
stops and writes the results to <tt>stdout</tt> or to the specified
|
112
|
+
<tt>output</tt> file.
|
113
|
+
</p>
|
114
|
+
<p>
|
115
|
+
The <tt>options</tt> argument specifies how the profiling is to be
|
116
|
+
performed:
|
117
|
+
</p>
|
118
|
+
<ul>
|
119
|
+
<li><tt>f</tt> — Stack dump: function name, otherwise module:line.
|
120
|
+
This is the default mode.</li>
|
121
|
+
<li><tt>F</tt> — Stack dump: ditto, but dump module:name.</li>
|
122
|
+
<li><tt>l</tt> — Stack dump: module:line.</li>
|
123
|
+
<li><tt><number></tt> — stack dump depth (callee ←
|
124
|
+
caller). Default: 1.</li>
|
125
|
+
<li><tt>-<number></tt> — Inverse stack dump depth (caller
|
126
|
+
→ callee).</li>
|
127
|
+
<li><tt>s</tt> — Split stack dump after first stack level. Implies
|
128
|
+
depth ≥ 2 or depth ≤ -2.</li>
|
129
|
+
<li><tt>p</tt> — Show full path for module names.</li>
|
130
|
+
<li><tt>v</tt> — Show VM states.</li>
|
131
|
+
<li><tt>z</tt> — Show <a href="#jit_zone">zones</a>.</li>
|
132
|
+
<li><tt>r</tt> — Show raw sample counts. Default: show percentages.</li>
|
133
|
+
<li><tt>a</tt> — Annotate excerpts from source code files.</li>
|
134
|
+
<li><tt>A</tt> — Annotate complete source code files.</li>
|
135
|
+
<li><tt>G</tt> — Produce raw output suitable for graphical tools.</li>
|
136
|
+
<li><tt>m<number></tt> — Minimum sample percentage to be shown.
|
137
|
+
Default: 3%.</li>
|
138
|
+
<li><tt>i<number></tt> — Sampling interval in milliseconds.
|
139
|
+
Default: 10ms.<br>
|
140
|
+
Note: The actual sampling precision is OS-dependent.</li>
|
141
|
+
</ul>
|
142
|
+
<p>
|
143
|
+
The default output for <tt>-jp</tt> is a list of the most CPU consuming
|
144
|
+
spots in the application. Increasing the stack dump depth with (say)
|
145
|
+
<tt>-jp=2</tt> may help to point out the main callers or callees of
|
146
|
+
hotspots. But sample aggregation is still flat per unique stack dump.
|
147
|
+
</p>
|
148
|
+
<p>
|
149
|
+
To get a two-level view (split view) of callers/callees, use
|
150
|
+
<tt>-jp=s</tt> or <tt>-jp=-s</tt>. The percentages shown for the second
|
151
|
+
level are relative to the first level.
|
152
|
+
</p>
|
153
|
+
<p>
|
154
|
+
To see how much time is spent in each line relative to a function, use
|
155
|
+
<tt>-jp=fl</tt>.
|
156
|
+
</p>
|
157
|
+
<p>
|
158
|
+
To see how much time is spent in different VM states or
|
159
|
+
<a href="#jit_zone">zones</a>, use <tt>-jp=v</tt> or <tt>-jp=z</tt>.
|
160
|
+
</p>
|
161
|
+
<p>
|
162
|
+
Combinations of <tt>v/z</tt> with <tt>f/F/l</tt> produce two-level
|
163
|
+
views, e.g. <tt>-jp=vf</tt> or <tt>-jp=fv</tt>. This shows the time
|
164
|
+
spent in a VM state or zone vs. hotspots. This can be used to answer
|
165
|
+
questions like "Which time consuming functions are only interpreted?" or
|
166
|
+
"What's the garbage collector overhead for a specific function?".
|
167
|
+
</p>
|
168
|
+
<p>
|
169
|
+
Multiple options can be combined — but not all combinations make
|
170
|
+
sense, see above. E.g. <tt>-jp=3si4m1</tt> samples three stack levels
|
171
|
+
deep in 4ms intervals and shows a split view of the CPU consuming
|
172
|
+
functions and their callers with a 1% threshold.
|
173
|
+
</p>
|
174
|
+
<p>
|
175
|
+
Source code annotations produced by <tt>-jp=a</tt> or <tt>-jp=A</tt> are
|
176
|
+
always flat and at the line level. Obviously, the source code files need
|
177
|
+
to be readable by the profiler script.
|
178
|
+
</p>
|
179
|
+
<p>
|
180
|
+
The high-level profiler can also be started and stopped from Lua code with:
|
181
|
+
</p>
|
182
|
+
<pre class="code">
|
183
|
+
require("jit.p").start(options, output)
|
184
|
+
...
|
185
|
+
require("jit.p").stop()
|
186
|
+
</pre>
|
187
|
+
|
188
|
+
<h3 id="jit_zone"><tt>jit.zone</tt> — Zones</h3>
|
189
|
+
<p>
|
190
|
+
Zones can be used to provide information about different parts of an
|
191
|
+
application to the high-level profiler. E.g. a game could make use of an
|
192
|
+
<tt>"AI"</tt> zone, a <tt>"PHYS"</tt> zone, etc. Zones are hierarchical,
|
193
|
+
organized as a stack.
|
194
|
+
</p>
|
195
|
+
<p>
|
196
|
+
The <tt>jit.zone</tt> module needs to be loaded explicitly:
|
197
|
+
</p>
|
198
|
+
<pre class="code">
|
199
|
+
local zone = require("jit.zone")
|
200
|
+
</pre>
|
201
|
+
<ul>
|
202
|
+
<li><tt>zone("name")</tt> pushes a named zone to the zone stack.</li>
|
203
|
+
<li><tt>zone()</tt> pops the current zone from the zone stack and
|
204
|
+
returns its name.</li>
|
205
|
+
<li><tt>zone:get()</tt> returns the current zone name or <tt>nil</tt>.</li>
|
206
|
+
<li><tt>zone:flush()</tt> flushes the zone stack.</li>
|
207
|
+
</ul>
|
208
|
+
<p>
|
209
|
+
To show the time spent in each zone use <tt>-jp=z</tt>. To show the time
|
210
|
+
spent relative to hotspots use e.g. <tt>-jp=zf</tt> or <tt>-jp=fz</tt>.
|
211
|
+
</p>
|
212
|
+
|
213
|
+
<h2 id="ll_lua_api">Low-level Lua API</h2>
|
214
|
+
<p>
|
215
|
+
The <tt>jit.profile</tt> module gives access to the low-level API of the
|
216
|
+
profiler from Lua code. This module needs to be loaded explicitly:
|
217
|
+
<pre class="code">
|
218
|
+
local profile = require("jit.profile")
|
219
|
+
</pre>
|
220
|
+
<p>
|
221
|
+
This module can be used to implement your own higher-level profiler.
|
222
|
+
A typical profiling run starts the profiler, captures stack dumps in
|
223
|
+
the profiler callback, adds them to a hash table to aggregate the number
|
224
|
+
of samples, stops the profiler and then analyzes all of the captured
|
225
|
+
stack dumps. Other parameters can be sampled in the profiler callback,
|
226
|
+
too. But it's important not to spend too much time in the callback,
|
227
|
+
since this may skew the statistics.
|
228
|
+
</p>
|
229
|
+
|
230
|
+
<h3 id="profile_start"><tt>profile.start(mode, cb)</tt>
|
231
|
+
— Start profiler</h3>
|
232
|
+
<p>
|
233
|
+
This function starts the profiler. The <tt>mode</tt> argument is a
|
234
|
+
string holding options:
|
235
|
+
</p>
|
236
|
+
<ul>
|
237
|
+
<li><tt>f</tt> — Profile with precision down to the function level.</li>
|
238
|
+
<li><tt>l</tt> — Profile with precision down to the line level.</li>
|
239
|
+
<li><tt>i<number></tt> — Sampling interval in milliseconds (default
|
240
|
+
10ms).</br>
|
241
|
+
Note: The actual sampling precision is OS-dependent.
|
242
|
+
</li>
|
243
|
+
</ul>
|
244
|
+
<p>
|
245
|
+
The <tt>cb</tt> argument is a callback function which is called with
|
246
|
+
three arguments: <tt>(thread, samples, vmstate)</tt>. The callback is
|
247
|
+
called on a separate coroutine, the <tt>thread</tt> argument is the
|
248
|
+
state that holds the stack to sample for profiling. Note: do
|
249
|
+
<em>not</em> modify the stack of that state or call functions on it.
|
250
|
+
</p>
|
251
|
+
<p>
|
252
|
+
<tt>samples</tt> gives the number of accumulated samples since the last
|
253
|
+
callback (usually 1).
|
254
|
+
</p>
|
255
|
+
<p>
|
256
|
+
<tt>vmstate</tt> holds the VM state at the time the profiling timer
|
257
|
+
triggered. This may or may not correspond to the state of the VM when
|
258
|
+
the profiling callback is called. The state is either <tt>'N'</tt>
|
259
|
+
native (compiled) code, <tt>'I'</tt> interpreted code, <tt>'C'</tt>
|
260
|
+
C code, <tt>'G'</tt> the garbage collector, or <tt>'J'</tt> the JIT
|
261
|
+
compiler.
|
262
|
+
</p>
|
263
|
+
|
264
|
+
<h3 id="profile_stop"><tt>profile.stop()</tt>
|
265
|
+
— Stop profiler</h3>
|
266
|
+
<p>
|
267
|
+
This function stops the profiler.
|
268
|
+
</p>
|
269
|
+
|
270
|
+
<h3 id="profile_dump"><tt>dump = profile.dumpstack([thread,] fmt, depth)</tt>
|
271
|
+
— Dump stack </h3>
|
272
|
+
<p>
|
273
|
+
This function allows taking stack dumps in an efficient manner. It
|
274
|
+
returns a string with a stack dump for the <tt>thread</tt> (coroutine),
|
275
|
+
formatted according to the <tt>fmt</tt> argument:
|
276
|
+
</p>
|
277
|
+
<ul>
|
278
|
+
<li><tt>p</tt> — Preserve the full path for module names. Otherwise
|
279
|
+
only the file name is used.</li>
|
280
|
+
<li><tt>f</tt> — Dump the function name if it can be derived. Otherwise
|
281
|
+
use module:line.</li>
|
282
|
+
<li><tt>F</tt> — Ditto, but dump module:name.</li>
|
283
|
+
<li><tt>l</tt> — Dump module:line.</li>
|
284
|
+
<li><tt>Z</tt> — Zap the following characters for the last dumped
|
285
|
+
frame.</li>
|
286
|
+
<li>All other characters are added verbatim to the output string.</li>
|
287
|
+
</ul>
|
288
|
+
<p>
|
289
|
+
The <tt>depth</tt> argument gives the number of frames to dump, starting
|
290
|
+
at the topmost frame of the thread. A negative number dumps the frames in
|
291
|
+
inverse order.
|
292
|
+
</p>
|
293
|
+
<p>
|
294
|
+
The first example prints a list of the current module names and line
|
295
|
+
numbers of up to 10 frames in separate lines. The second example prints
|
296
|
+
semicolon-separated function names for all frames (up to 100) in inverse
|
297
|
+
order:
|
298
|
+
</p>
|
299
|
+
<pre class="code">
|
300
|
+
print(profile.dumpstack(thread, "l\n", 10))
|
301
|
+
print(profile.dumpstack(thread, "lZ;", -100))
|
302
|
+
</pre>
|
303
|
+
|
304
|
+
<h2 id="ll_c_api">Low-level C API</h2>
|
305
|
+
<p>
|
306
|
+
The profiler can be controlled directly from C code, e.g. for
|
307
|
+
use by IDEs. The declarations are in <tt>"luajit.h"</tt> (see
|
308
|
+
<a href="ext_c_api.html">Lua/C API</a> extensions).
|
309
|
+
</p>
|
310
|
+
|
311
|
+
<h3 id="luaJIT_profile_start"><tt>luaJIT_profile_start(L, mode, cb, data)</tt>
|
312
|
+
— Start profiler</h3>
|
313
|
+
<p>
|
314
|
+
This function starts the profiler. <a href="#profile_start">See
|
315
|
+
above</a> for a description of the <tt>mode</tt> argument.
|
316
|
+
</p>
|
317
|
+
<p>
|
318
|
+
The <tt>cb</tt> argument is a callback function with the following
|
319
|
+
declaration:
|
320
|
+
</p>
|
321
|
+
<pre class="code">
|
322
|
+
typedef void (*luaJIT_profile_callback)(void *data, lua_State *L,
|
323
|
+
int samples, int vmstate);
|
324
|
+
</pre>
|
325
|
+
<p>
|
326
|
+
<tt>data</tt> is available for use by the callback. <tt>L</tt> is the
|
327
|
+
state that holds the stack to sample for profiling. Note: do
|
328
|
+
<em>not</em> modify this stack or call functions on this stack —
|
329
|
+
use a separate coroutine for this purpose. <a href="#profile_start">See
|
330
|
+
above</a> for a description of <tt>samples</tt> and <tt>vmstate</tt>.
|
331
|
+
</p>
|
332
|
+
|
333
|
+
<h3 id="luaJIT_profile_stop"><tt>luaJIT_profile_stop(L)</tt>
|
334
|
+
— Stop profiler</h3>
|
335
|
+
<p>
|
336
|
+
This function stops the profiler.
|
337
|
+
</p>
|
338
|
+
|
339
|
+
<h3 id="luaJIT_profile_dumpstack"><tt>p = luaJIT_profile_dumpstack(L, fmt, depth, len)</tt>
|
340
|
+
— Dump stack </h3>
|
341
|
+
<p>
|
342
|
+
This function allows taking stack dumps in an efficient manner.
|
343
|
+
<a href="#profile_dump">See above</a> for a description of <tt>fmt</tt>
|
344
|
+
and <tt>depth</tt>.
|
345
|
+
</p>
|
346
|
+
<p>
|
347
|
+
This function returns a <tt>const char *</tt> pointing to a
|
348
|
+
private string buffer of the profiler. The <tt>int *len</tt>
|
349
|
+
argument returns the length of the output string. The buffer is
|
350
|
+
overwritten on the next call and deallocated when the profiler stops.
|
351
|
+
You either need to consume the content immediately or copy it for later
|
352
|
+
use.
|
353
|
+
</p>
|
354
|
+
<br class="flush">
|
355
|
+
</div>
|
356
|
+
<div id="foot">
|
357
|
+
<hr class="hide">
|
358
|
+
Copyright © 2005-2015 Mike Pall
|
359
|
+
<span class="noprint">
|
360
|
+
·
|
361
|
+
<a href="contact.html">Contact</a>
|
362
|
+
</span>
|
363
|
+
</div>
|
364
|
+
</body>
|
365
|
+
</html>
|