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.
Files changed (454) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +0 -27
  3. data/ext/immunio/Rakefile +9 -0
  4. data/lib/immunio/plugins/active_record.rb +1 -1
  5. data/lib/immunio/plugins/active_record_relation.rb +1 -1
  6. data/lib/immunio/plugins/environment_reporter.rb +20 -0
  7. data/lib/immunio/rufus_lua_ext/ref.rb +1 -3
  8. data/lib/immunio/version.rb +1 -1
  9. data/lib/immunio/vm.rb +1 -2
  10. data/lua-hooks/Makefile +97 -0
  11. data/lua-hooks/ext/all.c +41 -52
  12. data/lua-hooks/ext/all.o +0 -0
  13. data/lua-hooks/ext/libinjection/libinjection_html5.o +0 -0
  14. data/lua-hooks/ext/libinjection/libinjection_sqli.o +0 -0
  15. data/lua-hooks/ext/libinjection/libinjection_xss.o +0 -0
  16. data/lua-hooks/ext/libinjection/lualib.c +2 -2
  17. data/lua-hooks/ext/lpeg/lpcap.c +2 -2
  18. data/lua-hooks/ext/lpeg/lpcap.o +0 -0
  19. data/lua-hooks/ext/lpeg/lpcode.c +2 -2
  20. data/lua-hooks/ext/lpeg/lpcode.h +1 -1
  21. data/lua-hooks/ext/lpeg/lpcode.o +0 -0
  22. data/lua-hooks/ext/lpeg/lpprint.o +0 -0
  23. data/lua-hooks/ext/lpeg/lptree.c +2 -2
  24. data/lua-hooks/ext/lpeg/lptypes.h +1 -1
  25. data/lua-hooks/ext/lpeg/lpvm.c +2 -2
  26. data/lua-hooks/ext/lpeg/lpvm.o +0 -0
  27. data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +16 -3
  28. data/lua-hooks/ext/lua-snapshot/snapshot.c +14 -7
  29. data/lua-hooks/ext/luajit/COPYRIGHT +56 -0
  30. data/lua-hooks/ext/luajit/Makefile +159 -0
  31. data/lua-hooks/ext/luajit/README +16 -0
  32. data/lua-hooks/ext/luajit/doc/bluequad-print.css +166 -0
  33. data/lua-hooks/ext/luajit/doc/bluequad.css +325 -0
  34. data/lua-hooks/ext/luajit/doc/changes.html +804 -0
  35. data/lua-hooks/ext/luajit/doc/contact.html +104 -0
  36. data/lua-hooks/ext/luajit/doc/ext_c_api.html +189 -0
  37. data/lua-hooks/ext/luajit/doc/ext_ffi.html +332 -0
  38. data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +570 -0
  39. data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +1261 -0
  40. data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +603 -0
  41. data/lua-hooks/ext/luajit/doc/ext_jit.html +201 -0
  42. data/lua-hooks/ext/luajit/doc/ext_profiler.html +365 -0
  43. data/lua-hooks/ext/luajit/doc/extensions.html +448 -0
  44. data/lua-hooks/ext/luajit/doc/faq.html +186 -0
  45. data/lua-hooks/ext/luajit/doc/img/contact.png +0 -0
  46. data/lua-hooks/ext/luajit/doc/install.html +659 -0
  47. data/lua-hooks/ext/luajit/doc/luajit.html +236 -0
  48. data/lua-hooks/ext/luajit/doc/running.html +309 -0
  49. data/lua-hooks/ext/luajit/doc/status.html +118 -0
  50. data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +456 -0
  51. data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1125 -0
  52. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +518 -0
  53. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1166 -0
  54. data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +416 -0
  55. data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +953 -0
  56. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +419 -0
  57. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1919 -0
  58. data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +83 -0
  59. data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +12 -0
  60. data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +471 -0
  61. data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +1945 -0
  62. data/lua-hooks/ext/luajit/dynasm/dynasm.lua +1094 -0
  63. data/lua-hooks/ext/luajit/etc/luajit.1 +88 -0
  64. data/lua-hooks/ext/luajit/etc/luajit.pc +25 -0
  65. data/lua-hooks/ext/luajit/src/Makefile +697 -0
  66. data/lua-hooks/ext/luajit/src/Makefile.dep +244 -0
  67. data/lua-hooks/ext/luajit/src/host/README +4 -0
  68. data/lua-hooks/ext/luajit/src/host/buildvm +0 -0
  69. data/lua-hooks/ext/luajit/src/host/buildvm.c +518 -0
  70. data/lua-hooks/ext/luajit/src/host/buildvm.h +105 -0
  71. data/lua-hooks/ext/luajit/src/host/buildvm.o +0 -0
  72. data/lua-hooks/ext/luajit/src/host/buildvm_arch.h +7449 -0
  73. data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +345 -0
  74. data/lua-hooks/ext/luajit/src/host/buildvm_asm.o +0 -0
  75. data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +229 -0
  76. data/lua-hooks/ext/luajit/src/host/buildvm_fold.o +0 -0
  77. data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +457 -0
  78. data/lua-hooks/ext/luajit/src/host/buildvm_lib.o +0 -0
  79. data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +45 -0
  80. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +368 -0
  81. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.o +0 -0
  82. data/lua-hooks/ext/luajit/src/host/genlibbc.lua +197 -0
  83. data/lua-hooks/ext/luajit/src/host/genminilua.lua +428 -0
  84. data/lua-hooks/ext/luajit/src/host/minilua +0 -0
  85. data/lua-hooks/ext/luajit/src/host/minilua.c +7770 -0
  86. data/lua-hooks/ext/luajit/src/host/minilua.o +0 -0
  87. data/lua-hooks/ext/luajit/src/jit/bc.lua +190 -0
  88. data/lua-hooks/ext/luajit/src/jit/bcsave.lua +661 -0
  89. data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +689 -0
  90. data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +428 -0
  91. data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +17 -0
  92. data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +591 -0
  93. data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +17 -0
  94. data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +838 -0
  95. data/lua-hooks/ext/luajit/src/jit/dump.lua +706 -0
  96. data/lua-hooks/ext/luajit/src/jit/p.lua +310 -0
  97. data/lua-hooks/ext/luajit/src/jit/v.lua +170 -0
  98. data/lua-hooks/ext/luajit/src/jit/vmdef.lua +362 -0
  99. data/lua-hooks/ext/luajit/src/jit/zone.lua +45 -0
  100. data/lua-hooks/ext/{lua → luajit/src}/lauxlib.h +10 -17
  101. data/lua-hooks/ext/luajit/src/lib_aux.c +356 -0
  102. data/lua-hooks/ext/luajit/src/lib_aux.o +0 -0
  103. data/lua-hooks/ext/luajit/src/lib_aux_dyn.o +0 -0
  104. data/lua-hooks/ext/luajit/src/lib_base.c +664 -0
  105. data/lua-hooks/ext/luajit/src/lib_base.o +0 -0
  106. data/lua-hooks/ext/luajit/src/lib_base_dyn.o +0 -0
  107. data/lua-hooks/ext/luajit/src/lib_bit.c +180 -0
  108. data/lua-hooks/ext/luajit/src/lib_bit.o +0 -0
  109. data/lua-hooks/ext/luajit/src/lib_bit_dyn.o +0 -0
  110. data/lua-hooks/ext/luajit/src/lib_debug.c +405 -0
  111. data/lua-hooks/ext/luajit/src/lib_debug.o +0 -0
  112. data/lua-hooks/ext/luajit/src/lib_debug_dyn.o +0 -0
  113. data/lua-hooks/ext/luajit/src/lib_ffi.c +872 -0
  114. data/lua-hooks/ext/luajit/src/lib_ffi.o +0 -0
  115. data/lua-hooks/ext/luajit/src/lib_ffi_dyn.o +0 -0
  116. data/lua-hooks/ext/luajit/src/lib_init.c +55 -0
  117. data/lua-hooks/ext/luajit/src/lib_init.o +0 -0
  118. data/lua-hooks/ext/luajit/src/lib_init_dyn.o +0 -0
  119. data/lua-hooks/ext/luajit/src/lib_io.c +541 -0
  120. data/lua-hooks/ext/luajit/src/lib_io.o +0 -0
  121. data/lua-hooks/ext/luajit/src/lib_io_dyn.o +0 -0
  122. data/lua-hooks/ext/luajit/src/lib_jit.c +767 -0
  123. data/lua-hooks/ext/luajit/src/lib_jit.o +0 -0
  124. data/lua-hooks/ext/luajit/src/lib_jit_dyn.o +0 -0
  125. data/lua-hooks/ext/luajit/src/lib_math.c +230 -0
  126. data/lua-hooks/ext/luajit/src/lib_math.o +0 -0
  127. data/lua-hooks/ext/luajit/src/lib_math_dyn.o +0 -0
  128. data/lua-hooks/ext/luajit/src/lib_os.c +292 -0
  129. data/lua-hooks/ext/luajit/src/lib_os.o +0 -0
  130. data/lua-hooks/ext/luajit/src/lib_os_dyn.o +0 -0
  131. data/lua-hooks/ext/luajit/src/lib_package.c +610 -0
  132. data/lua-hooks/ext/luajit/src/lib_package.o +0 -0
  133. data/lua-hooks/ext/luajit/src/lib_package_dyn.o +0 -0
  134. data/lua-hooks/ext/luajit/src/lib_string.c +752 -0
  135. data/lua-hooks/ext/luajit/src/lib_string.o +0 -0
  136. data/lua-hooks/ext/luajit/src/lib_string_dyn.o +0 -0
  137. data/lua-hooks/ext/luajit/src/lib_table.c +307 -0
  138. data/lua-hooks/ext/luajit/src/lib_table.o +0 -0
  139. data/lua-hooks/ext/luajit/src/lib_table_dyn.o +0 -0
  140. data/lua-hooks/ext/luajit/src/libluajit.a +0 -0
  141. data/lua-hooks/ext/luajit/src/libluajit.so +0 -0
  142. data/lua-hooks/ext/luajit/src/lj.supp +26 -0
  143. data/lua-hooks/ext/luajit/src/lj_alloc.c +1398 -0
  144. data/lua-hooks/ext/luajit/src/lj_alloc.h +17 -0
  145. data/lua-hooks/ext/luajit/src/lj_alloc.o +0 -0
  146. data/lua-hooks/ext/luajit/src/lj_alloc_dyn.o +0 -0
  147. data/lua-hooks/ext/luajit/src/lj_api.c +1210 -0
  148. data/lua-hooks/ext/luajit/src/lj_api.o +0 -0
  149. data/lua-hooks/ext/luajit/src/lj_api_dyn.o +0 -0
  150. data/lua-hooks/ext/luajit/src/lj_arch.h +509 -0
  151. data/lua-hooks/ext/luajit/src/lj_asm.c +2278 -0
  152. data/lua-hooks/ext/luajit/src/lj_asm.h +17 -0
  153. data/lua-hooks/ext/luajit/src/lj_asm.o +0 -0
  154. data/lua-hooks/ext/luajit/src/lj_asm_arm.h +2217 -0
  155. data/lua-hooks/ext/luajit/src/lj_asm_dyn.o +0 -0
  156. data/lua-hooks/ext/luajit/src/lj_asm_mips.h +1833 -0
  157. data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +2015 -0
  158. data/lua-hooks/ext/luajit/src/lj_asm_x86.h +2634 -0
  159. data/lua-hooks/ext/luajit/src/lj_bc.c +14 -0
  160. data/lua-hooks/ext/luajit/src/lj_bc.h +265 -0
  161. data/lua-hooks/ext/luajit/src/lj_bc.o +0 -0
  162. data/lua-hooks/ext/luajit/src/lj_bc_dyn.o +0 -0
  163. data/lua-hooks/ext/luajit/src/lj_bcdef.h +220 -0
  164. data/lua-hooks/ext/luajit/src/lj_bcdump.h +68 -0
  165. data/lua-hooks/ext/luajit/src/lj_bcread.c +457 -0
  166. data/lua-hooks/ext/luajit/src/lj_bcread.o +0 -0
  167. data/lua-hooks/ext/luajit/src/lj_bcread_dyn.o +0 -0
  168. data/lua-hooks/ext/luajit/src/lj_bcwrite.c +361 -0
  169. data/lua-hooks/ext/luajit/src/lj_bcwrite.o +0 -0
  170. data/lua-hooks/ext/luajit/src/lj_bcwrite_dyn.o +0 -0
  171. data/lua-hooks/ext/luajit/src/lj_buf.c +234 -0
  172. data/lua-hooks/ext/luajit/src/lj_buf.h +105 -0
  173. data/lua-hooks/ext/luajit/src/lj_buf.o +0 -0
  174. data/lua-hooks/ext/luajit/src/lj_buf_dyn.o +0 -0
  175. data/lua-hooks/ext/luajit/src/lj_carith.c +429 -0
  176. data/lua-hooks/ext/luajit/src/lj_carith.h +37 -0
  177. data/lua-hooks/ext/luajit/src/lj_carith.o +0 -0
  178. data/lua-hooks/ext/luajit/src/lj_carith_dyn.o +0 -0
  179. data/lua-hooks/ext/luajit/src/lj_ccall.c +984 -0
  180. data/lua-hooks/ext/luajit/src/lj_ccall.h +178 -0
  181. data/lua-hooks/ext/luajit/src/lj_ccall.o +0 -0
  182. data/lua-hooks/ext/luajit/src/lj_ccall_dyn.o +0 -0
  183. data/lua-hooks/ext/luajit/src/lj_ccallback.c +712 -0
  184. data/lua-hooks/ext/luajit/src/lj_ccallback.h +25 -0
  185. data/lua-hooks/ext/luajit/src/lj_ccallback.o +0 -0
  186. data/lua-hooks/ext/luajit/src/lj_ccallback_dyn.o +0 -0
  187. data/lua-hooks/ext/luajit/src/lj_cconv.c +752 -0
  188. data/lua-hooks/ext/luajit/src/lj_cconv.h +70 -0
  189. data/lua-hooks/ext/luajit/src/lj_cconv.o +0 -0
  190. data/lua-hooks/ext/luajit/src/lj_cconv_dyn.o +0 -0
  191. data/lua-hooks/ext/luajit/src/lj_cdata.c +288 -0
  192. data/lua-hooks/ext/luajit/src/lj_cdata.h +76 -0
  193. data/lua-hooks/ext/luajit/src/lj_cdata.o +0 -0
  194. data/lua-hooks/ext/luajit/src/lj_cdata_dyn.o +0 -0
  195. data/lua-hooks/ext/luajit/src/lj_char.c +43 -0
  196. data/lua-hooks/ext/luajit/src/lj_char.h +42 -0
  197. data/lua-hooks/ext/luajit/src/lj_char.o +0 -0
  198. data/lua-hooks/ext/luajit/src/lj_char_dyn.o +0 -0
  199. data/lua-hooks/ext/luajit/src/lj_clib.c +418 -0
  200. data/lua-hooks/ext/luajit/src/lj_clib.h +29 -0
  201. data/lua-hooks/ext/luajit/src/lj_clib.o +0 -0
  202. data/lua-hooks/ext/luajit/src/lj_clib_dyn.o +0 -0
  203. data/lua-hooks/ext/luajit/src/lj_cparse.c +1862 -0
  204. data/lua-hooks/ext/luajit/src/lj_cparse.h +65 -0
  205. data/lua-hooks/ext/luajit/src/lj_cparse.o +0 -0
  206. data/lua-hooks/ext/luajit/src/lj_cparse_dyn.o +0 -0
  207. data/lua-hooks/ext/luajit/src/lj_crecord.c +1834 -0
  208. data/lua-hooks/ext/luajit/src/lj_crecord.h +38 -0
  209. data/lua-hooks/ext/luajit/src/lj_crecord.o +0 -0
  210. data/lua-hooks/ext/luajit/src/lj_crecord_dyn.o +0 -0
  211. data/lua-hooks/ext/luajit/src/lj_ctype.c +635 -0
  212. data/lua-hooks/ext/luajit/src/lj_ctype.h +461 -0
  213. data/lua-hooks/ext/luajit/src/lj_ctype.o +0 -0
  214. data/lua-hooks/ext/luajit/src/lj_ctype_dyn.o +0 -0
  215. data/lua-hooks/ext/luajit/src/lj_debug.c +699 -0
  216. data/lua-hooks/ext/luajit/src/lj_debug.h +65 -0
  217. data/lua-hooks/ext/luajit/src/lj_debug.o +0 -0
  218. data/lua-hooks/ext/luajit/src/lj_debug_dyn.o +0 -0
  219. data/lua-hooks/ext/luajit/src/lj_def.h +365 -0
  220. data/lua-hooks/ext/luajit/src/lj_dispatch.c +557 -0
  221. data/lua-hooks/ext/luajit/src/lj_dispatch.h +138 -0
  222. data/lua-hooks/ext/luajit/src/lj_dispatch.o +0 -0
  223. data/lua-hooks/ext/luajit/src/lj_dispatch_dyn.o +0 -0
  224. data/lua-hooks/ext/luajit/src/lj_emit_arm.h +356 -0
  225. data/lua-hooks/ext/luajit/src/lj_emit_mips.h +211 -0
  226. data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +238 -0
  227. data/lua-hooks/ext/luajit/src/lj_emit_x86.h +462 -0
  228. data/lua-hooks/ext/luajit/src/lj_err.c +794 -0
  229. data/lua-hooks/ext/luajit/src/lj_err.h +41 -0
  230. data/lua-hooks/ext/luajit/src/lj_err.o +0 -0
  231. data/lua-hooks/ext/luajit/src/lj_err_dyn.o +0 -0
  232. data/lua-hooks/ext/luajit/src/lj_errmsg.h +190 -0
  233. data/lua-hooks/ext/luajit/src/lj_ff.h +18 -0
  234. data/lua-hooks/ext/luajit/src/lj_ffdef.h +209 -0
  235. data/lua-hooks/ext/luajit/src/lj_ffrecord.c +1247 -0
  236. data/lua-hooks/ext/luajit/src/lj_ffrecord.h +24 -0
  237. data/lua-hooks/ext/luajit/src/lj_ffrecord.o +0 -0
  238. data/lua-hooks/ext/luajit/src/lj_ffrecord_dyn.o +0 -0
  239. data/lua-hooks/ext/luajit/src/lj_folddef.h +1138 -0
  240. data/lua-hooks/ext/luajit/src/lj_frame.h +259 -0
  241. data/lua-hooks/ext/luajit/src/lj_func.c +185 -0
  242. data/lua-hooks/ext/luajit/src/lj_func.h +24 -0
  243. data/lua-hooks/ext/luajit/src/lj_func.o +0 -0
  244. data/lua-hooks/ext/luajit/src/lj_func_dyn.o +0 -0
  245. data/lua-hooks/ext/luajit/src/lj_gc.c +845 -0
  246. data/lua-hooks/ext/luajit/src/lj_gc.h +134 -0
  247. data/lua-hooks/ext/luajit/src/lj_gc.o +0 -0
  248. data/lua-hooks/ext/luajit/src/lj_gc_dyn.o +0 -0
  249. data/lua-hooks/ext/luajit/src/lj_gdbjit.c +787 -0
  250. data/lua-hooks/ext/luajit/src/lj_gdbjit.h +22 -0
  251. data/lua-hooks/ext/luajit/src/lj_gdbjit.o +0 -0
  252. data/lua-hooks/ext/luajit/src/lj_gdbjit_dyn.o +0 -0
  253. data/lua-hooks/ext/luajit/src/lj_ir.c +505 -0
  254. data/lua-hooks/ext/luajit/src/lj_ir.h +577 -0
  255. data/lua-hooks/ext/luajit/src/lj_ir.o +0 -0
  256. data/lua-hooks/ext/luajit/src/lj_ir_dyn.o +0 -0
  257. data/lua-hooks/ext/luajit/src/lj_ircall.h +321 -0
  258. data/lua-hooks/ext/luajit/src/lj_iropt.h +161 -0
  259. data/lua-hooks/ext/luajit/src/lj_jit.h +440 -0
  260. data/lua-hooks/ext/luajit/src/lj_lex.c +482 -0
  261. data/lua-hooks/ext/luajit/src/lj_lex.h +86 -0
  262. data/lua-hooks/ext/luajit/src/lj_lex.o +0 -0
  263. data/lua-hooks/ext/luajit/src/lj_lex_dyn.o +0 -0
  264. data/lua-hooks/ext/luajit/src/lj_lib.c +303 -0
  265. data/lua-hooks/ext/luajit/src/lj_lib.h +115 -0
  266. data/lua-hooks/ext/luajit/src/lj_lib.o +0 -0
  267. data/lua-hooks/ext/luajit/src/lj_lib_dyn.o +0 -0
  268. data/lua-hooks/ext/luajit/src/lj_libdef.h +414 -0
  269. data/lua-hooks/ext/luajit/src/lj_load.c +168 -0
  270. data/lua-hooks/ext/luajit/src/lj_load.o +0 -0
  271. data/lua-hooks/ext/luajit/src/lj_load_dyn.o +0 -0
  272. data/lua-hooks/ext/luajit/src/lj_mcode.c +386 -0
  273. data/lua-hooks/ext/luajit/src/lj_mcode.h +30 -0
  274. data/lua-hooks/ext/luajit/src/lj_mcode.o +0 -0
  275. data/lua-hooks/ext/luajit/src/lj_mcode_dyn.o +0 -0
  276. data/lua-hooks/ext/luajit/src/lj_meta.c +477 -0
  277. data/lua-hooks/ext/luajit/src/lj_meta.h +38 -0
  278. data/lua-hooks/ext/luajit/src/lj_meta.o +0 -0
  279. data/lua-hooks/ext/luajit/src/lj_meta_dyn.o +0 -0
  280. data/lua-hooks/ext/luajit/src/lj_obj.c +50 -0
  281. data/lua-hooks/ext/luajit/src/lj_obj.h +976 -0
  282. data/lua-hooks/ext/luajit/src/lj_obj.o +0 -0
  283. data/lua-hooks/ext/luajit/src/lj_obj_dyn.o +0 -0
  284. data/lua-hooks/ext/luajit/src/lj_opt_dce.c +78 -0
  285. data/lua-hooks/ext/luajit/src/lj_opt_dce.o +0 -0
  286. data/lua-hooks/ext/luajit/src/lj_opt_dce_dyn.o +0 -0
  287. data/lua-hooks/ext/luajit/src/lj_opt_fold.c +2488 -0
  288. data/lua-hooks/ext/luajit/src/lj_opt_fold.o +0 -0
  289. data/lua-hooks/ext/luajit/src/lj_opt_fold_dyn.o +0 -0
  290. data/lua-hooks/ext/luajit/src/lj_opt_loop.c +449 -0
  291. data/lua-hooks/ext/luajit/src/lj_opt_loop.o +0 -0
  292. data/lua-hooks/ext/luajit/src/lj_opt_loop_dyn.o +0 -0
  293. data/lua-hooks/ext/luajit/src/lj_opt_mem.c +935 -0
  294. data/lua-hooks/ext/luajit/src/lj_opt_mem.o +0 -0
  295. data/lua-hooks/ext/luajit/src/lj_opt_mem_dyn.o +0 -0
  296. data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +652 -0
  297. data/lua-hooks/ext/luajit/src/lj_opt_narrow.o +0 -0
  298. data/lua-hooks/ext/luajit/src/lj_opt_narrow_dyn.o +0 -0
  299. data/lua-hooks/ext/luajit/src/lj_opt_sink.c +245 -0
  300. data/lua-hooks/ext/luajit/src/lj_opt_sink.o +0 -0
  301. data/lua-hooks/ext/luajit/src/lj_opt_sink_dyn.o +0 -0
  302. data/lua-hooks/ext/luajit/src/lj_opt_split.c +856 -0
  303. data/lua-hooks/ext/luajit/src/lj_opt_split.o +0 -0
  304. data/lua-hooks/ext/luajit/src/lj_opt_split_dyn.o +0 -0
  305. data/lua-hooks/ext/luajit/src/lj_parse.c +2725 -0
  306. data/lua-hooks/ext/luajit/src/lj_parse.h +18 -0
  307. data/lua-hooks/ext/luajit/src/lj_parse.o +0 -0
  308. data/lua-hooks/ext/luajit/src/lj_parse_dyn.o +0 -0
  309. data/lua-hooks/ext/luajit/src/lj_profile.c +368 -0
  310. data/lua-hooks/ext/luajit/src/lj_profile.h +21 -0
  311. data/lua-hooks/ext/luajit/src/lj_profile.o +0 -0
  312. data/lua-hooks/ext/luajit/src/lj_profile_dyn.o +0 -0
  313. data/lua-hooks/ext/luajit/src/lj_recdef.h +270 -0
  314. data/lua-hooks/ext/luajit/src/lj_record.c +2554 -0
  315. data/lua-hooks/ext/luajit/src/lj_record.h +45 -0
  316. data/lua-hooks/ext/luajit/src/lj_record.o +0 -0
  317. data/lua-hooks/ext/luajit/src/lj_record_dyn.o +0 -0
  318. data/lua-hooks/ext/luajit/src/lj_snap.c +870 -0
  319. data/lua-hooks/ext/luajit/src/lj_snap.h +34 -0
  320. data/lua-hooks/ext/luajit/src/lj_snap.o +0 -0
  321. data/lua-hooks/ext/luajit/src/lj_snap_dyn.o +0 -0
  322. data/lua-hooks/ext/luajit/src/lj_state.c +300 -0
  323. data/lua-hooks/ext/luajit/src/lj_state.h +35 -0
  324. data/lua-hooks/ext/luajit/src/lj_state.o +0 -0
  325. data/lua-hooks/ext/luajit/src/lj_state_dyn.o +0 -0
  326. data/lua-hooks/ext/luajit/src/lj_str.c +197 -0
  327. data/lua-hooks/ext/luajit/src/lj_str.h +27 -0
  328. data/lua-hooks/ext/luajit/src/lj_str.o +0 -0
  329. data/lua-hooks/ext/luajit/src/lj_str_dyn.o +0 -0
  330. data/lua-hooks/ext/luajit/src/lj_strfmt.c +554 -0
  331. data/lua-hooks/ext/luajit/src/lj_strfmt.h +125 -0
  332. data/lua-hooks/ext/luajit/src/lj_strfmt.o +0 -0
  333. data/lua-hooks/ext/luajit/src/lj_strfmt_dyn.o +0 -0
  334. data/lua-hooks/ext/luajit/src/lj_strscan.c +547 -0
  335. data/lua-hooks/ext/luajit/src/lj_strscan.h +39 -0
  336. data/lua-hooks/ext/luajit/src/lj_strscan.o +0 -0
  337. data/lua-hooks/ext/luajit/src/lj_strscan_dyn.o +0 -0
  338. data/lua-hooks/ext/luajit/src/lj_tab.c +666 -0
  339. data/lua-hooks/ext/luajit/src/lj_tab.h +73 -0
  340. data/lua-hooks/ext/luajit/src/lj_tab.o +0 -0
  341. data/lua-hooks/ext/luajit/src/lj_tab_dyn.o +0 -0
  342. data/lua-hooks/ext/luajit/src/lj_target.h +164 -0
  343. data/lua-hooks/ext/luajit/src/lj_target_arm.h +270 -0
  344. data/lua-hooks/ext/luajit/src/lj_target_arm64.h +97 -0
  345. data/lua-hooks/ext/luajit/src/lj_target_mips.h +260 -0
  346. data/lua-hooks/ext/luajit/src/lj_target_ppc.h +280 -0
  347. data/lua-hooks/ext/luajit/src/lj_target_x86.h +345 -0
  348. data/lua-hooks/ext/luajit/src/lj_trace.c +859 -0
  349. data/lua-hooks/ext/luajit/src/lj_trace.h +54 -0
  350. data/lua-hooks/ext/luajit/src/lj_trace.o +0 -0
  351. data/lua-hooks/ext/luajit/src/lj_trace_dyn.o +0 -0
  352. data/lua-hooks/ext/luajit/src/lj_traceerr.h +63 -0
  353. data/lua-hooks/ext/luajit/src/lj_udata.c +34 -0
  354. data/lua-hooks/ext/luajit/src/lj_udata.h +14 -0
  355. data/lua-hooks/ext/luajit/src/lj_udata.o +0 -0
  356. data/lua-hooks/ext/luajit/src/lj_udata_dyn.o +0 -0
  357. data/lua-hooks/ext/luajit/src/lj_vm.S +2730 -0
  358. data/lua-hooks/ext/luajit/src/lj_vm.h +114 -0
  359. data/lua-hooks/ext/luajit/src/lj_vm.o +0 -0
  360. data/lua-hooks/ext/luajit/src/lj_vm_dyn.o +0 -0
  361. data/lua-hooks/ext/luajit/src/lj_vmevent.c +58 -0
  362. data/lua-hooks/ext/luajit/src/lj_vmevent.h +59 -0
  363. data/lua-hooks/ext/luajit/src/lj_vmevent.o +0 -0
  364. data/lua-hooks/ext/luajit/src/lj_vmevent_dyn.o +0 -0
  365. data/lua-hooks/ext/luajit/src/lj_vmmath.c +152 -0
  366. data/lua-hooks/ext/luajit/src/lj_vmmath.o +0 -0
  367. data/lua-hooks/ext/luajit/src/lj_vmmath_dyn.o +0 -0
  368. data/lua-hooks/ext/luajit/src/ljamalg.c +96 -0
  369. data/lua-hooks/ext/{lua → luajit/src}/lua.h +12 -7
  370. data/lua-hooks/ext/luajit/src/lua.hpp +9 -0
  371. data/lua-hooks/ext/luajit/src/luaconf.h +156 -0
  372. data/lua-hooks/ext/luajit/src/luajit +0 -0
  373. data/lua-hooks/ext/luajit/src/luajit.c +570 -0
  374. data/lua-hooks/ext/luajit/src/luajit.h +79 -0
  375. data/lua-hooks/ext/luajit/src/luajit.o +0 -0
  376. data/lua-hooks/ext/luajit/src/lualib.h +43 -0
  377. data/lua-hooks/ext/luajit/src/msvcbuild.bat +114 -0
  378. data/lua-hooks/ext/luajit/src/ps4build.bat +103 -0
  379. data/lua-hooks/ext/luajit/src/psvitabuild.bat +93 -0
  380. data/lua-hooks/ext/luajit/src/vm_arm.dasc +4585 -0
  381. data/lua-hooks/ext/luajit/src/vm_arm64.dasc +3764 -0
  382. data/lua-hooks/ext/luajit/src/vm_mips.dasc +4355 -0
  383. data/lua-hooks/ext/luajit/src/vm_ppc.dasc +5252 -0
  384. data/lua-hooks/ext/luajit/src/vm_x64.dasc +4902 -0
  385. data/lua-hooks/ext/luajit/src/vm_x86.dasc +5710 -0
  386. data/lua-hooks/ext/luajit/src/xb1build.bat +101 -0
  387. data/lua-hooks/ext/luajit/src/xedkbuild.bat +92 -0
  388. data/lua-hooks/ext/luautf8/lutf8lib.c +3 -3
  389. data/lua-hooks/lib/boot.lua +37 -2
  390. metadata +372 -69
  391. data/lua-hooks/ext/bitop/README +0 -22
  392. data/lua-hooks/ext/bitop/bit.c +0 -189
  393. data/lua-hooks/ext/extconf.rb +0 -38
  394. data/lua-hooks/ext/lua/COPYRIGHT +0 -34
  395. data/lua-hooks/ext/lua/lapi.c +0 -1087
  396. data/lua-hooks/ext/lua/lapi.h +0 -16
  397. data/lua-hooks/ext/lua/lauxlib.c +0 -652
  398. data/lua-hooks/ext/lua/lbaselib.c +0 -659
  399. data/lua-hooks/ext/lua/lcode.c +0 -831
  400. data/lua-hooks/ext/lua/lcode.h +0 -76
  401. data/lua-hooks/ext/lua/ldblib.c +0 -398
  402. data/lua-hooks/ext/lua/ldebug.c +0 -638
  403. data/lua-hooks/ext/lua/ldebug.h +0 -33
  404. data/lua-hooks/ext/lua/ldo.c +0 -519
  405. data/lua-hooks/ext/lua/ldo.h +0 -57
  406. data/lua-hooks/ext/lua/ldump.c +0 -164
  407. data/lua-hooks/ext/lua/lfunc.c +0 -174
  408. data/lua-hooks/ext/lua/lfunc.h +0 -34
  409. data/lua-hooks/ext/lua/lgc.c +0 -710
  410. data/lua-hooks/ext/lua/lgc.h +0 -110
  411. data/lua-hooks/ext/lua/linit.c +0 -38
  412. data/lua-hooks/ext/lua/liolib.c +0 -556
  413. data/lua-hooks/ext/lua/llex.c +0 -463
  414. data/lua-hooks/ext/lua/llex.h +0 -81
  415. data/lua-hooks/ext/lua/llimits.h +0 -128
  416. data/lua-hooks/ext/lua/lmathlib.c +0 -263
  417. data/lua-hooks/ext/lua/lmem.c +0 -86
  418. data/lua-hooks/ext/lua/lmem.h +0 -49
  419. data/lua-hooks/ext/lua/loadlib.c +0 -705
  420. data/lua-hooks/ext/lua/loadlib_rel.c +0 -760
  421. data/lua-hooks/ext/lua/lobject.c +0 -214
  422. data/lua-hooks/ext/lua/lobject.h +0 -381
  423. data/lua-hooks/ext/lua/lopcodes.c +0 -102
  424. data/lua-hooks/ext/lua/lopcodes.h +0 -268
  425. data/lua-hooks/ext/lua/loslib.c +0 -243
  426. data/lua-hooks/ext/lua/lparser.c +0 -1339
  427. data/lua-hooks/ext/lua/lparser.h +0 -82
  428. data/lua-hooks/ext/lua/lstate.c +0 -214
  429. data/lua-hooks/ext/lua/lstate.h +0 -169
  430. data/lua-hooks/ext/lua/lstring.c +0 -111
  431. data/lua-hooks/ext/lua/lstring.h +0 -31
  432. data/lua-hooks/ext/lua/lstrlib.c +0 -871
  433. data/lua-hooks/ext/lua/ltable.c +0 -588
  434. data/lua-hooks/ext/lua/ltable.h +0 -40
  435. data/lua-hooks/ext/lua/ltablib.c +0 -287
  436. data/lua-hooks/ext/lua/ltm.c +0 -75
  437. data/lua-hooks/ext/lua/ltm.h +0 -54
  438. data/lua-hooks/ext/lua/lua.c +0 -392
  439. data/lua-hooks/ext/lua/lua.def +0 -131
  440. data/lua-hooks/ext/lua/lua.rc +0 -28
  441. data/lua-hooks/ext/lua/lua_dll.rc +0 -26
  442. data/lua-hooks/ext/lua/luac.c +0 -200
  443. data/lua-hooks/ext/lua/luac.rc +0 -1
  444. data/lua-hooks/ext/lua/luaconf.h +0 -763
  445. data/lua-hooks/ext/lua/luaconf.h.in +0 -724
  446. data/lua-hooks/ext/lua/luaconf.h.orig +0 -763
  447. data/lua-hooks/ext/lua/lualib.h +0 -53
  448. data/lua-hooks/ext/lua/lundump.c +0 -227
  449. data/lua-hooks/ext/lua/lundump.h +0 -36
  450. data/lua-hooks/ext/lua/lvm.c +0 -767
  451. data/lua-hooks/ext/lua/lvm.h +0 -36
  452. data/lua-hooks/ext/lua/lzio.c +0 -82
  453. data/lua-hooks/ext/lua/lzio.h +0 -67
  454. data/lua-hooks/ext/lua/print.c +0 -227
@@ -0,0 +1,18 @@
1
+ /*
2
+ ** Lua parser (source code -> bytecode).
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_PARSE_H
7
+ #define _LJ_PARSE_H
8
+
9
+ #include "lj_obj.h"
10
+ #include "lj_lex.h"
11
+
12
+ LJ_FUNC GCproto *lj_parse(LexState *ls);
13
+ LJ_FUNC GCstr *lj_parse_keepstr(LexState *ls, const char *str, size_t l);
14
+ #if LJ_HASFFI
15
+ LJ_FUNC void lj_parse_keepcdata(LexState *ls, TValue *tv, GCcdata *cd);
16
+ #endif
17
+
18
+ #endif
@@ -0,0 +1,368 @@
1
+ /*
2
+ ** Low-overhead profiling.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #define lj_profile_c
7
+ #define LUA_CORE
8
+
9
+ #include "lj_obj.h"
10
+
11
+ #if LJ_HASPROFILE
12
+
13
+ #include "lj_buf.h"
14
+ #include "lj_frame.h"
15
+ #include "lj_debug.h"
16
+ #include "lj_dispatch.h"
17
+ #if LJ_HASJIT
18
+ #include "lj_jit.h"
19
+ #include "lj_trace.h"
20
+ #endif
21
+ #include "lj_profile.h"
22
+
23
+ #include "luajit.h"
24
+
25
+ #if LJ_PROFILE_SIGPROF
26
+
27
+ #include <sys/time.h>
28
+ #include <signal.h>
29
+ #define profile_lock(ps) UNUSED(ps)
30
+ #define profile_unlock(ps) UNUSED(ps)
31
+
32
+ #elif LJ_PROFILE_PTHREAD
33
+
34
+ #include <pthread.h>
35
+ #include <time.h>
36
+ #if LJ_TARGET_PS3
37
+ #include <sys/timer.h>
38
+ #endif
39
+ #define profile_lock(ps) pthread_mutex_lock(&ps->lock)
40
+ #define profile_unlock(ps) pthread_mutex_unlock(&ps->lock)
41
+
42
+ #elif LJ_PROFILE_WTHREAD
43
+
44
+ #define WIN32_LEAN_AND_MEAN
45
+ #if LJ_TARGET_XBOX360
46
+ #include <xtl.h>
47
+ #include <xbox.h>
48
+ #else
49
+ #include <windows.h>
50
+ #endif
51
+ typedef unsigned int (WINAPI *WMM_TPFUNC)(unsigned int);
52
+ #define profile_lock(ps) EnterCriticalSection(&ps->lock)
53
+ #define profile_unlock(ps) LeaveCriticalSection(&ps->lock)
54
+
55
+ #endif
56
+
57
+ /* Profiler state. */
58
+ typedef struct ProfileState {
59
+ global_State *g; /* VM state that started the profiler. */
60
+ luaJIT_profile_callback cb; /* Profiler callback. */
61
+ void *data; /* Profiler callback data. */
62
+ SBuf sb; /* String buffer for stack dumps. */
63
+ int interval; /* Sample interval in milliseconds. */
64
+ int samples; /* Number of samples for next callback. */
65
+ int vmstate; /* VM state when profile timer triggered. */
66
+ #if LJ_PROFILE_SIGPROF
67
+ struct sigaction oldsa; /* Previous SIGPROF state. */
68
+ #elif LJ_PROFILE_PTHREAD
69
+ pthread_mutex_t lock; /* g->hookmask update lock. */
70
+ pthread_t thread; /* Timer thread. */
71
+ int abort; /* Abort timer thread. */
72
+ #elif LJ_PROFILE_WTHREAD
73
+ #if LJ_TARGET_WINDOWS
74
+ HINSTANCE wmm; /* WinMM library handle. */
75
+ WMM_TPFUNC wmm_tbp; /* WinMM timeBeginPeriod function. */
76
+ WMM_TPFUNC wmm_tep; /* WinMM timeEndPeriod function. */
77
+ #endif
78
+ CRITICAL_SECTION lock; /* g->hookmask update lock. */
79
+ HANDLE thread; /* Timer thread. */
80
+ int abort; /* Abort timer thread. */
81
+ #endif
82
+ } ProfileState;
83
+
84
+ /* Sadly, we have to use a static profiler state.
85
+ **
86
+ ** The SIGPROF variant needs a static pointer to the global state, anyway.
87
+ ** And it would be hard to extend for multiple threads. You can still use
88
+ ** multiple VMs in multiple threads, but only profile one at a time.
89
+ */
90
+ static ProfileState profile_state;
91
+
92
+ /* Default sample interval in milliseconds. */
93
+ #define LJ_PROFILE_INTERVAL_DEFAULT 10
94
+
95
+ /* -- Profiler/hook interaction ------------------------------------------- */
96
+
97
+ #if !LJ_PROFILE_SIGPROF
98
+ void LJ_FASTCALL lj_profile_hook_enter(global_State *g)
99
+ {
100
+ ProfileState *ps = &profile_state;
101
+ if (ps->g) {
102
+ profile_lock(ps);
103
+ hook_enter(g);
104
+ profile_unlock(ps);
105
+ } else {
106
+ hook_enter(g);
107
+ }
108
+ }
109
+
110
+ void LJ_FASTCALL lj_profile_hook_leave(global_State *g)
111
+ {
112
+ ProfileState *ps = &profile_state;
113
+ if (ps->g) {
114
+ profile_lock(ps);
115
+ hook_leave(g);
116
+ profile_unlock(ps);
117
+ } else {
118
+ hook_leave(g);
119
+ }
120
+ }
121
+ #endif
122
+
123
+ /* -- Profile callbacks --------------------------------------------------- */
124
+
125
+ /* Callback from profile hook (HOOK_PROFILE already cleared). */
126
+ void LJ_FASTCALL lj_profile_interpreter(lua_State *L)
127
+ {
128
+ ProfileState *ps = &profile_state;
129
+ global_State *g = G(L);
130
+ uint8_t mask;
131
+ profile_lock(ps);
132
+ mask = (g->hookmask & ~HOOK_PROFILE);
133
+ if (!(mask & HOOK_VMEVENT)) {
134
+ int samples = ps->samples;
135
+ ps->samples = 0;
136
+ g->hookmask = HOOK_VMEVENT;
137
+ lj_dispatch_update(g);
138
+ profile_unlock(ps);
139
+ ps->cb(ps->data, L, samples, ps->vmstate); /* Invoke user callback. */
140
+ profile_lock(ps);
141
+ mask |= (g->hookmask & HOOK_PROFILE);
142
+ }
143
+ g->hookmask = mask;
144
+ lj_dispatch_update(g);
145
+ profile_unlock(ps);
146
+ }
147
+
148
+ /* Trigger profile hook. Asynchronous call from OS-specific profile timer. */
149
+ static void profile_trigger(ProfileState *ps)
150
+ {
151
+ global_State *g = ps->g;
152
+ uint8_t mask;
153
+ profile_lock(ps);
154
+ ps->samples++; /* Always increment number of samples. */
155
+ mask = g->hookmask;
156
+ if (!(mask & (HOOK_PROFILE|HOOK_VMEVENT))) { /* Set profile hook. */
157
+ int st = g->vmstate;
158
+ ps->vmstate = st >= 0 ? 'N' :
159
+ st == ~LJ_VMST_INTERP ? 'I' :
160
+ st == ~LJ_VMST_C ? 'C' :
161
+ st == ~LJ_VMST_GC ? 'G' : 'J';
162
+ g->hookmask = (mask | HOOK_PROFILE);
163
+ lj_dispatch_update(g);
164
+ }
165
+ profile_unlock(ps);
166
+ }
167
+
168
+ /* -- OS-specific profile timer handling ---------------------------------- */
169
+
170
+ #if LJ_PROFILE_SIGPROF
171
+
172
+ /* SIGPROF handler. */
173
+ static void profile_signal(int sig)
174
+ {
175
+ UNUSED(sig);
176
+ profile_trigger(&profile_state);
177
+ }
178
+
179
+ /* Start profiling timer. */
180
+ static void profile_timer_start(ProfileState *ps)
181
+ {
182
+ int interval = ps->interval;
183
+ struct itimerval tm;
184
+ struct sigaction sa;
185
+ tm.it_value.tv_sec = tm.it_interval.tv_sec = interval / 1000;
186
+ tm.it_value.tv_usec = tm.it_interval.tv_usec = (interval % 1000) * 1000;
187
+ setitimer(ITIMER_PROF, &tm, NULL);
188
+ sa.sa_flags = SA_RESTART;
189
+ sa.sa_handler = profile_signal;
190
+ sigemptyset(&sa.sa_mask);
191
+ sigaction(SIGPROF, &sa, &ps->oldsa);
192
+ }
193
+
194
+ /* Stop profiling timer. */
195
+ static void profile_timer_stop(ProfileState *ps)
196
+ {
197
+ struct itimerval tm;
198
+ tm.it_value.tv_sec = tm.it_interval.tv_sec = 0;
199
+ tm.it_value.tv_usec = tm.it_interval.tv_usec = 0;
200
+ setitimer(ITIMER_PROF, &tm, NULL);
201
+ sigaction(SIGPROF, &ps->oldsa, NULL);
202
+ }
203
+
204
+ #elif LJ_PROFILE_PTHREAD
205
+
206
+ /* POSIX timer thread. */
207
+ static void *profile_thread(ProfileState *ps)
208
+ {
209
+ int interval = ps->interval;
210
+ #if !LJ_TARGET_PS3
211
+ struct timespec ts;
212
+ ts.tv_sec = interval / 1000;
213
+ ts.tv_nsec = (interval % 1000) * 1000000;
214
+ #endif
215
+ while (1) {
216
+ #if LJ_TARGET_PS3
217
+ sys_timer_usleep(interval * 1000);
218
+ #else
219
+ nanosleep(&ts, NULL);
220
+ #endif
221
+ if (ps->abort) break;
222
+ profile_trigger(ps);
223
+ }
224
+ return NULL;
225
+ }
226
+
227
+ /* Start profiling timer thread. */
228
+ static void profile_timer_start(ProfileState *ps)
229
+ {
230
+ pthread_mutex_init(&ps->lock, 0);
231
+ ps->abort = 0;
232
+ pthread_create(&ps->thread, NULL, (void *(*)(void *))profile_thread, ps);
233
+ }
234
+
235
+ /* Stop profiling timer thread. */
236
+ static void profile_timer_stop(ProfileState *ps)
237
+ {
238
+ ps->abort = 1;
239
+ pthread_join(ps->thread, NULL);
240
+ pthread_mutex_destroy(&ps->lock);
241
+ }
242
+
243
+ #elif LJ_PROFILE_WTHREAD
244
+
245
+ /* Windows timer thread. */
246
+ static DWORD WINAPI profile_thread(void *psx)
247
+ {
248
+ ProfileState *ps = (ProfileState *)psx;
249
+ int interval = ps->interval;
250
+ #if LJ_TARGET_WINDOWS
251
+ ps->wmm_tbp(interval);
252
+ #endif
253
+ while (1) {
254
+ Sleep(interval);
255
+ if (ps->abort) break;
256
+ profile_trigger(ps);
257
+ }
258
+ #if LJ_TARGET_WINDOWS
259
+ ps->wmm_tep(interval);
260
+ #endif
261
+ return 0;
262
+ }
263
+
264
+ /* Start profiling timer thread. */
265
+ static void profile_timer_start(ProfileState *ps)
266
+ {
267
+ #if LJ_TARGET_WINDOWS
268
+ if (!ps->wmm) { /* Load WinMM library on-demand. */
269
+ ps->wmm = LoadLibraryExA("winmm.dll", NULL, 0);
270
+ if (ps->wmm) {
271
+ ps->wmm_tbp = (WMM_TPFUNC)GetProcAddress(ps->wmm, "timeBeginPeriod");
272
+ ps->wmm_tep = (WMM_TPFUNC)GetProcAddress(ps->wmm, "timeEndPeriod");
273
+ if (!ps->wmm_tbp || !ps->wmm_tep) {
274
+ ps->wmm = NULL;
275
+ return;
276
+ }
277
+ }
278
+ }
279
+ #endif
280
+ InitializeCriticalSection(&ps->lock);
281
+ ps->abort = 0;
282
+ ps->thread = CreateThread(NULL, 0, profile_thread, ps, 0, NULL);
283
+ }
284
+
285
+ /* Stop profiling timer thread. */
286
+ static void profile_timer_stop(ProfileState *ps)
287
+ {
288
+ ps->abort = 1;
289
+ WaitForSingleObject(ps->thread, INFINITE);
290
+ DeleteCriticalSection(&ps->lock);
291
+ }
292
+
293
+ #endif
294
+
295
+ /* -- Public profiling API ------------------------------------------------ */
296
+
297
+ /* Start profiling. */
298
+ LUA_API void luaJIT_profile_start(lua_State *L, const char *mode,
299
+ luaJIT_profile_callback cb, void *data)
300
+ {
301
+ ProfileState *ps = &profile_state;
302
+ int interval = LJ_PROFILE_INTERVAL_DEFAULT;
303
+ while (*mode) {
304
+ int m = *mode++;
305
+ switch (m) {
306
+ case 'i':
307
+ interval = 0;
308
+ while (*mode >= '0' && *mode <= '9')
309
+ interval = interval * 10 + (*mode++ - '0');
310
+ if (interval <= 0) interval = 1;
311
+ break;
312
+ #if LJ_HASJIT
313
+ case 'l': case 'f':
314
+ L2J(L)->prof_mode = m;
315
+ lj_trace_flushall(L);
316
+ break;
317
+ #endif
318
+ default: /* Ignore unknown mode chars. */
319
+ break;
320
+ }
321
+ }
322
+ if (ps->g) {
323
+ luaJIT_profile_stop(L);
324
+ if (ps->g) return; /* Profiler in use by another VM. */
325
+ }
326
+ ps->g = G(L);
327
+ ps->interval = interval;
328
+ ps->cb = cb;
329
+ ps->data = data;
330
+ ps->samples = 0;
331
+ lj_buf_init(L, &ps->sb);
332
+ profile_timer_start(ps);
333
+ }
334
+
335
+ /* Stop profiling. */
336
+ LUA_API void luaJIT_profile_stop(lua_State *L)
337
+ {
338
+ ProfileState *ps = &profile_state;
339
+ global_State *g = ps->g;
340
+ if (G(L) == g) { /* Only stop profiler if started by this VM. */
341
+ profile_timer_stop(ps);
342
+ g->hookmask &= ~HOOK_PROFILE;
343
+ lj_dispatch_update(g);
344
+ #if LJ_HASJIT
345
+ G2J(g)->prof_mode = 0;
346
+ lj_trace_flushall(L);
347
+ #endif
348
+ lj_buf_free(g, &ps->sb);
349
+ setmref(ps->sb.b, NULL);
350
+ setmref(ps->sb.e, NULL);
351
+ ps->g = NULL;
352
+ }
353
+ }
354
+
355
+ /* Return a compact stack dump. */
356
+ LUA_API const char *luaJIT_profile_dumpstack(lua_State *L, const char *fmt,
357
+ int depth, size_t *len)
358
+ {
359
+ ProfileState *ps = &profile_state;
360
+ SBuf *sb = &ps->sb;
361
+ setsbufL(sb, L);
362
+ lj_buf_reset(sb);
363
+ lj_debug_dumpstack(L, sb, fmt, depth);
364
+ *len = (size_t)sbuflen(sb);
365
+ return sbufB(sb);
366
+ }
367
+
368
+ #endif
@@ -0,0 +1,21 @@
1
+ /*
2
+ ** Low-overhead profiling.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_PROFILE_H
7
+ #define _LJ_PROFILE_H
8
+
9
+ #include "lj_obj.h"
10
+
11
+ #if LJ_HASPROFILE
12
+
13
+ LJ_FUNC void LJ_FASTCALL lj_profile_interpreter(lua_State *L);
14
+ #if !LJ_PROFILE_SIGPROF
15
+ LJ_FUNC void LJ_FASTCALL lj_profile_hook_enter(global_State *g);
16
+ LJ_FUNC void LJ_FASTCALL lj_profile_hook_leave(global_State *g);
17
+ #endif
18
+
19
+ #endif
20
+
21
+ #endif
@@ -0,0 +1,270 @@
1
+ /* This is a generated file. DO NOT EDIT! */
2
+
3
+ static const uint16_t recff_idmap[] = {
4
+ 0,
5
+ 0x0100,
6
+ 0x0200,
7
+ 0x0300,
8
+ 0,
9
+ 0x0400+(0),
10
+ 0x0500,
11
+ 0x0400+(1),
12
+ 0x0600,
13
+ 0x0700,
14
+ 0x0800,
15
+ 0,
16
+ 0x0900,
17
+ 0x0a00,
18
+ 0x0b00,
19
+ 0,
20
+ 0x0c00,
21
+ 0x0d00,
22
+ 0x0e00,
23
+ 0,
24
+ 0x0f00,
25
+ 0x1000,
26
+ 0,
27
+ 0,
28
+ 0,
29
+ 0,
30
+ 0,
31
+ 0,
32
+ 0,
33
+ 0,
34
+ 0,
35
+ 0,
36
+ 0,
37
+ 0,
38
+ 0,
39
+ 0,
40
+ 0,
41
+ 0x1100,
42
+ 0x1200+(IRFPM_FLOOR),
43
+ 0x1200+(IRFPM_CEIL),
44
+ 0x1300+(IRFPM_SQRT),
45
+ 0x1300+(IRFPM_LOG10),
46
+ 0x1300+(IRFPM_EXP),
47
+ 0x1300+(IRFPM_SIN),
48
+ 0x1300+(IRFPM_COS),
49
+ 0x1300+(IRFPM_TAN),
50
+ 0x1400+(FF_math_asin),
51
+ 0x1400+(FF_math_acos),
52
+ 0x1400+(FF_math_atan),
53
+ 0x1500+(IRCALL_sinh),
54
+ 0x1500+(IRCALL_cosh),
55
+ 0x1500+(IRCALL_tanh),
56
+ 0,
57
+ 0x1600,
58
+ 0x1700,
59
+ 0x1800,
60
+ 0x1900,
61
+ 0,
62
+ 0x1a00,
63
+ 0x1b00+(IR_MIN),
64
+ 0x1b00+(IR_MAX),
65
+ 0x1c00,
66
+ 0,
67
+ 0x1d00,
68
+ 0x1e00+(IR_BNOT),
69
+ 0x1e00+(IR_BSWAP),
70
+ 0x1f00+(IR_BSHL),
71
+ 0x1f00+(IR_BSHR),
72
+ 0x1f00+(IR_BSAR),
73
+ 0x1f00+(IR_BROL),
74
+ 0x1f00+(IR_BROR),
75
+ 0x2000+(IR_BAND),
76
+ 0x2000+(IR_BOR),
77
+ 0x2000+(IR_BXOR),
78
+ 0x2100,
79
+ 0x2200+(0),
80
+ 0x2300,
81
+ 0x2200+(1),
82
+ 0x2400,
83
+ 0x2500+(IRCALL_lj_buf_putstr_reverse),
84
+ 0x2500+(IRCALL_lj_buf_putstr_lower),
85
+ 0x2500+(IRCALL_lj_buf_putstr_upper),
86
+ 0,
87
+ 0x2600,
88
+ 0,
89
+ 0,
90
+ 0,
91
+ 0,
92
+ 0x2700,
93
+ 0,
94
+ 0x2800,
95
+ 0x2900,
96
+ 0,
97
+ 0x2a00,
98
+ 0x2b00,
99
+ 0,
100
+ 0,
101
+ 0x2c00+(0),
102
+ 0x2d00+(0),
103
+ 0,
104
+ 0,
105
+ 0,
106
+ 0,
107
+ 0,
108
+ 0,
109
+ 0,
110
+ 0,
111
+ 0,
112
+ 0,
113
+ 0x2c00+(GCROOT_IO_OUTPUT),
114
+ 0x2d00+(GCROOT_IO_OUTPUT),
115
+ 0,
116
+ 0,
117
+ 0,
118
+ 0,
119
+ 0,
120
+ 0,
121
+ 0,
122
+ 0,
123
+ 0,
124
+ 0,
125
+ 0,
126
+ 0,
127
+ 0,
128
+ 0,
129
+ 0,
130
+ 0,
131
+ 0x2e00,
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 0,
136
+ 0,
137
+ 0,
138
+ 0,
139
+ 0,
140
+ 0,
141
+ 0,
142
+ 0,
143
+ 0,
144
+ 0,
145
+ 0,
146
+ 0,
147
+ 0,
148
+ 0,
149
+ 0,
150
+ 0,
151
+ 0,
152
+ 0,
153
+ 0,
154
+ 0,
155
+ 0,
156
+ 0,
157
+ 0,
158
+ 0,
159
+ 0,
160
+ 0,
161
+ 0,
162
+ 0,
163
+ 0,
164
+ 0,
165
+ 0,
166
+ 0x2f00+(0),
167
+ 0x2f00+(1),
168
+ 0x3000+(MM_eq),
169
+ 0x3000+(MM_len),
170
+ 0x3000+(MM_lt),
171
+ 0x3000+(MM_le),
172
+ 0x3000+(MM_concat),
173
+ 0x3100,
174
+ 0x3000+(MM_add),
175
+ 0x3000+(MM_sub),
176
+ 0x3000+(MM_mul),
177
+ 0x3000+(MM_div),
178
+ 0x3000+(MM_mod),
179
+ 0x3000+(MM_pow),
180
+ 0x3000+(MM_unm),
181
+ 0,
182
+ 0,
183
+ 0,
184
+ 0x3200+(1),
185
+ 0x3200+(0),
186
+ 0,
187
+ 0,
188
+ 0,
189
+ 0,
190
+ 0x3300,
191
+ 0x3300,
192
+ 0x3400,
193
+ 0,
194
+ 0x3500,
195
+ 0x3600+(FF_ffi_sizeof),
196
+ 0x3600+(FF_ffi_alignof),
197
+ 0x3600+(FF_ffi_offsetof),
198
+ 0x3700,
199
+ 0x3800,
200
+ 0x3900,
201
+ 0x3a00,
202
+ 0x3b00,
203
+ 0,
204
+ 0x3c00
205
+ };
206
+
207
+ static const RecordFunc recff_func[] = {
208
+ recff_nyi,
209
+ recff_c,
210
+ recff_assert,
211
+ recff_type,
212
+ recff_xpairs,
213
+ recff_ipairs_aux,
214
+ recff_getmetatable,
215
+ recff_setmetatable,
216
+ recff_getfenv,
217
+ recff_rawget,
218
+ recff_rawset,
219
+ recff_rawequal,
220
+ recff_select,
221
+ recff_tonumber,
222
+ recff_tostring,
223
+ recff_pcall,
224
+ recff_xpcall,
225
+ recff_math_abs,
226
+ recff_math_round,
227
+ recff_math_unary,
228
+ recff_math_atrig,
229
+ recff_math_htrig,
230
+ recff_math_modf,
231
+ recff_math_log,
232
+ recff_math_atan2,
233
+ recff_math_pow,
234
+ recff_math_ldexp,
235
+ recff_math_minmax,
236
+ recff_math_random,
237
+ recff_bit_tobit,
238
+ recff_bit_unary,
239
+ recff_bit_shift,
240
+ recff_bit_nary,
241
+ recff_bit_tohex,
242
+ recff_string_range,
243
+ recff_string_char,
244
+ recff_string_rep,
245
+ recff_string_op,
246
+ recff_string_find,
247
+ recff_string_format,
248
+ recff_table_insert,
249
+ recff_table_concat,
250
+ recff_table_new,
251
+ recff_table_clear,
252
+ recff_io_write,
253
+ recff_io_flush,
254
+ recff_debug_getmetatable,
255
+ recff_cdata_index,
256
+ recff_cdata_arith,
257
+ recff_cdata_call,
258
+ recff_clib_index,
259
+ recff_ffi_new,
260
+ recff_ffi_typeof,
261
+ recff_ffi_istype,
262
+ recff_ffi_xof,
263
+ recff_ffi_errno,
264
+ recff_ffi_string,
265
+ recff_ffi_copy,
266
+ recff_ffi_fill,
267
+ recff_ffi_abi,
268
+ recff_ffi_gc
269
+ };
270
+