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,114 @@
1
+ /*
2
+ ** Assembler VM interface definitions.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_VM_H
7
+ #define _LJ_VM_H
8
+
9
+ #include "lj_obj.h"
10
+
11
+ /* Entry points for ASM parts of VM. */
12
+ LJ_ASMF void lj_vm_call(lua_State *L, TValue *base, int nres1);
13
+ LJ_ASMF int lj_vm_pcall(lua_State *L, TValue *base, int nres1, ptrdiff_t ef);
14
+ typedef TValue *(*lua_CPFunction)(lua_State *L, lua_CFunction func, void *ud);
15
+ LJ_ASMF int lj_vm_cpcall(lua_State *L, lua_CFunction func, void *ud,
16
+ lua_CPFunction cp);
17
+ LJ_ASMF int lj_vm_resume(lua_State *L, TValue *base, int nres1, ptrdiff_t ef);
18
+ LJ_ASMF_NORET void LJ_FASTCALL lj_vm_unwind_c(void *cframe, int errcode);
19
+ LJ_ASMF_NORET void LJ_FASTCALL lj_vm_unwind_ff(void *cframe);
20
+ LJ_ASMF void lj_vm_unwind_c_eh(void);
21
+ LJ_ASMF void lj_vm_unwind_ff_eh(void);
22
+ #if LJ_TARGET_X86ORX64
23
+ LJ_ASMF void lj_vm_unwind_rethrow(void);
24
+ #endif
25
+
26
+ /* Miscellaneous functions. */
27
+ #if LJ_TARGET_X86ORX64
28
+ LJ_ASMF int lj_vm_cpuid(uint32_t f, uint32_t res[4]);
29
+ #endif
30
+ #if LJ_TARGET_PPC
31
+ void lj_vm_cachesync(void *start, void *end);
32
+ #endif
33
+ LJ_ASMF double lj_vm_foldarith(double x, double y, int op);
34
+ #if LJ_HASJIT
35
+ LJ_ASMF double lj_vm_foldfpm(double x, int op);
36
+ #endif
37
+ #if !LJ_ARCH_HASFPU
38
+ /* Declared in lj_obj.h: LJ_ASMF int32_t lj_vm_tobit(double x); */
39
+ #endif
40
+
41
+ /* Dispatch targets for recording and hooks. */
42
+ LJ_ASMF void lj_vm_record(void);
43
+ LJ_ASMF void lj_vm_inshook(void);
44
+ LJ_ASMF void lj_vm_rethook(void);
45
+ LJ_ASMF void lj_vm_callhook(void);
46
+ LJ_ASMF void lj_vm_profhook(void);
47
+
48
+ /* Trace exit handling. */
49
+ LJ_ASMF void lj_vm_exit_handler(void);
50
+ LJ_ASMF void lj_vm_exit_interp(void);
51
+
52
+ /* Internal math helper functions. */
53
+ #if LJ_TARGET_PPC || LJ_TARGET_ARM64
54
+ #define lj_vm_floor floor
55
+ #define lj_vm_ceil ceil
56
+ #else
57
+ LJ_ASMF double lj_vm_floor(double);
58
+ LJ_ASMF double lj_vm_ceil(double);
59
+ #if LJ_TARGET_ARM
60
+ LJ_ASMF double lj_vm_floor_sf(double);
61
+ LJ_ASMF double lj_vm_ceil_sf(double);
62
+ #endif
63
+ #endif
64
+ #ifdef LUAJIT_NO_LOG2
65
+ LJ_ASMF double lj_vm_log2(double);
66
+ #else
67
+ #define lj_vm_log2 log2
68
+ #endif
69
+
70
+ #if LJ_HASJIT
71
+ #if LJ_TARGET_X86ORX64
72
+ LJ_ASMF void lj_vm_floor_sse(void);
73
+ LJ_ASMF void lj_vm_ceil_sse(void);
74
+ LJ_ASMF void lj_vm_trunc_sse(void);
75
+ LJ_ASMF void lj_vm_powi_sse(void);
76
+ #define lj_vm_powi NULL
77
+ #else
78
+ LJ_ASMF double lj_vm_powi(double, int32_t);
79
+ #endif
80
+ #if LJ_TARGET_PPC || LJ_TARGET_ARM64
81
+ #define lj_vm_trunc trunc
82
+ #else
83
+ LJ_ASMF double lj_vm_trunc(double);
84
+ #if LJ_TARGET_ARM
85
+ LJ_ASMF double lj_vm_trunc_sf(double);
86
+ #endif
87
+ #endif
88
+ #ifdef LUAJIT_NO_EXP2
89
+ LJ_ASMF double lj_vm_exp2(double);
90
+ #else
91
+ #define lj_vm_exp2 exp2
92
+ #endif
93
+ LJ_ASMF int32_t LJ_FASTCALL lj_vm_modi(int32_t, int32_t);
94
+ #if LJ_HASFFI
95
+ LJ_ASMF int lj_vm_errno(void);
96
+ #endif
97
+ #endif
98
+
99
+ /* Continuations for metamethods. */
100
+ LJ_ASMF void lj_cont_cat(void); /* Continue with concatenation. */
101
+ LJ_ASMF void lj_cont_ra(void); /* Store result in RA from instruction. */
102
+ LJ_ASMF void lj_cont_nop(void); /* Do nothing, just continue execution. */
103
+ LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
104
+ LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
105
+ LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
106
+ LJ_ASMF void lj_cont_stitch(void); /* Trace stitching. */
107
+
108
+ /* Start of the ASM code. */
109
+ LJ_ASMF char lj_vm_asm_begin[];
110
+
111
+ /* Bytecode offsets are relative to lj_vm_asm_begin. */
112
+ #define makeasmfunc(ofs) ((ASMFunction)(lj_vm_asm_begin + (ofs)))
113
+
114
+ #endif
@@ -0,0 +1,58 @@
1
+ /*
2
+ ** VM event handling.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #include <stdio.h>
7
+
8
+ #define lj_vmevent_c
9
+ #define LUA_CORE
10
+
11
+ #include "lj_obj.h"
12
+ #include "lj_str.h"
13
+ #include "lj_tab.h"
14
+ #include "lj_state.h"
15
+ #include "lj_dispatch.h"
16
+ #include "lj_vm.h"
17
+ #include "lj_vmevent.h"
18
+
19
+ ptrdiff_t lj_vmevent_prepare(lua_State *L, VMEvent ev)
20
+ {
21
+ global_State *g = G(L);
22
+ GCstr *s = lj_str_newlit(L, LJ_VMEVENTS_REGKEY);
23
+ cTValue *tv = lj_tab_getstr(tabV(registry(L)), s);
24
+ if (tvistab(tv)) {
25
+ int hash = VMEVENT_HASH(ev);
26
+ tv = lj_tab_getint(tabV(tv), hash);
27
+ if (tv && tvisfunc(tv)) {
28
+ lj_state_checkstack(L, LUA_MINSTACK);
29
+ setfuncV(L, L->top++, funcV(tv));
30
+ if (LJ_FR2) setnilV(L->top++);
31
+ return savestack(L, L->top);
32
+ }
33
+ }
34
+ g->vmevmask &= ~VMEVENT_MASK(ev); /* No handler: cache this fact. */
35
+ return 0;
36
+ }
37
+
38
+ void lj_vmevent_call(lua_State *L, ptrdiff_t argbase)
39
+ {
40
+ global_State *g = G(L);
41
+ uint8_t oldmask = g->vmevmask;
42
+ uint8_t oldh = hook_save(g);
43
+ int status;
44
+ g->vmevmask = 0; /* Disable all events. */
45
+ hook_vmevent(g);
46
+ status = lj_vm_pcall(L, restorestack(L, argbase), 0+1, 0);
47
+ if (LJ_UNLIKELY(status)) {
48
+ /* Really shouldn't use stderr here, but where else to complain? */
49
+ L->top--;
50
+ fputs("VM handler failed: ", stderr);
51
+ fputs(tvisstr(L->top) ? strVdata(L->top) : "?", stderr);
52
+ fputc('\n', stderr);
53
+ }
54
+ hook_restore(g, oldh);
55
+ if (g->vmevmask != VMEVENT_NOCACHE)
56
+ g->vmevmask = oldmask; /* Restore event mask, but not if not modified. */
57
+ }
58
+
@@ -0,0 +1,59 @@
1
+ /*
2
+ ** VM event handling.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_VMEVENT_H
7
+ #define _LJ_VMEVENT_H
8
+
9
+ #include "lj_obj.h"
10
+
11
+ /* Registry key for VM event handler table. */
12
+ #define LJ_VMEVENTS_REGKEY "_VMEVENTS"
13
+ #define LJ_VMEVENTS_HSIZE 4
14
+
15
+ #define VMEVENT_MASK(ev) ((uint8_t)1 << ((int)(ev) & 7))
16
+ #define VMEVENT_HASH(ev) ((int)(ev) & ~7)
17
+ #define VMEVENT_HASHIDX(h) ((int)(h) << 3)
18
+ #define VMEVENT_NOCACHE 255
19
+
20
+ #define VMEVENT_DEF(name, hash) \
21
+ LJ_VMEVENT_##name##_, \
22
+ LJ_VMEVENT_##name = ((LJ_VMEVENT_##name##_) & 7)|((hash) << 3)
23
+
24
+ /* VM event IDs. */
25
+ typedef enum {
26
+ VMEVENT_DEF(BC, 0x00003883),
27
+ VMEVENT_DEF(TRACE, 0xb2d91467),
28
+ VMEVENT_DEF(RECORD, 0x9284bf4f),
29
+ VMEVENT_DEF(TEXIT, 0xb29df2b0),
30
+ LJ_VMEVENT__MAX
31
+ } VMEvent;
32
+
33
+ #ifdef LUAJIT_DISABLE_VMEVENT
34
+ #define lj_vmevent_send(L, ev, args) UNUSED(L)
35
+ #define lj_vmevent_send_(L, ev, args, post) UNUSED(L)
36
+ #else
37
+ #define lj_vmevent_send(L, ev, args) \
38
+ if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \
39
+ ptrdiff_t argbase = lj_vmevent_prepare(L, LJ_VMEVENT_##ev); \
40
+ if (argbase) { \
41
+ args \
42
+ lj_vmevent_call(L, argbase); \
43
+ } \
44
+ }
45
+ #define lj_vmevent_send_(L, ev, args, post) \
46
+ if (G(L)->vmevmask & VMEVENT_MASK(LJ_VMEVENT_##ev)) { \
47
+ ptrdiff_t argbase = lj_vmevent_prepare(L, LJ_VMEVENT_##ev); \
48
+ if (argbase) { \
49
+ args \
50
+ lj_vmevent_call(L, argbase); \
51
+ post \
52
+ } \
53
+ }
54
+
55
+ LJ_FUNC ptrdiff_t lj_vmevent_prepare(lua_State *L, VMEvent ev);
56
+ LJ_FUNC void lj_vmevent_call(lua_State *L, ptrdiff_t argbase);
57
+ #endif
58
+
59
+ #endif
@@ -0,0 +1,152 @@
1
+ /*
2
+ ** Math helper functions for assembler VM.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #define lj_vmmath_c
7
+ #define LUA_CORE
8
+
9
+ #include <errno.h>
10
+ #include <math.h>
11
+
12
+ #include "lj_obj.h"
13
+ #include "lj_ir.h"
14
+ #include "lj_vm.h"
15
+
16
+ /* -- Wrapper functions --------------------------------------------------- */
17
+
18
+ #if LJ_TARGET_X86 && __ELF__ && __PIC__
19
+ /* Wrapper functions to deal with the ELF/x86 PIC disaster. */
20
+ LJ_FUNCA double lj_wrap_log(double x) { return log(x); }
21
+ LJ_FUNCA double lj_wrap_log10(double x) { return log10(x); }
22
+ LJ_FUNCA double lj_wrap_exp(double x) { return exp(x); }
23
+ LJ_FUNCA double lj_wrap_sin(double x) { return sin(x); }
24
+ LJ_FUNCA double lj_wrap_cos(double x) { return cos(x); }
25
+ LJ_FUNCA double lj_wrap_tan(double x) { return tan(x); }
26
+ LJ_FUNCA double lj_wrap_asin(double x) { return asin(x); }
27
+ LJ_FUNCA double lj_wrap_acos(double x) { return acos(x); }
28
+ LJ_FUNCA double lj_wrap_atan(double x) { return atan(x); }
29
+ LJ_FUNCA double lj_wrap_sinh(double x) { return sinh(x); }
30
+ LJ_FUNCA double lj_wrap_cosh(double x) { return cosh(x); }
31
+ LJ_FUNCA double lj_wrap_tanh(double x) { return tanh(x); }
32
+ LJ_FUNCA double lj_wrap_atan2(double x, double y) { return atan2(x, y); }
33
+ LJ_FUNCA double lj_wrap_pow(double x, double y) { return pow(x, y); }
34
+ LJ_FUNCA double lj_wrap_fmod(double x, double y) { return fmod(x, y); }
35
+ #endif
36
+
37
+ /* -- Helper functions for generated machine code ------------------------- */
38
+
39
+ double lj_vm_foldarith(double x, double y, int op)
40
+ {
41
+ switch (op) {
42
+ case IR_ADD - IR_ADD: return x+y; break;
43
+ case IR_SUB - IR_ADD: return x-y; break;
44
+ case IR_MUL - IR_ADD: return x*y; break;
45
+ case IR_DIV - IR_ADD: return x/y; break;
46
+ case IR_MOD - IR_ADD: return x-lj_vm_floor(x/y)*y; break;
47
+ case IR_POW - IR_ADD: return pow(x, y); break;
48
+ case IR_NEG - IR_ADD: return -x; break;
49
+ case IR_ABS - IR_ADD: return fabs(x); break;
50
+ #if LJ_HASJIT
51
+ case IR_ATAN2 - IR_ADD: return atan2(x, y); break;
52
+ case IR_LDEXP - IR_ADD: return ldexp(x, (int)y); break;
53
+ case IR_MIN - IR_ADD: return x > y ? y : x; break;
54
+ case IR_MAX - IR_ADD: return x < y ? y : x; break;
55
+ #endif
56
+ default: return x;
57
+ }
58
+ }
59
+
60
+ #if LJ_HASJIT
61
+
62
+ #ifdef LUAJIT_NO_LOG2
63
+ double lj_vm_log2(double a)
64
+ {
65
+ return log(a) * 1.4426950408889634074;
66
+ }
67
+ #endif
68
+
69
+ #ifdef LUAJIT_NO_EXP2
70
+ double lj_vm_exp2(double a)
71
+ {
72
+ return exp(a * 0.6931471805599453);
73
+ }
74
+ #endif
75
+
76
+ #if !(LJ_TARGET_ARM || LJ_TARGET_ARM64 || LJ_TARGET_PPC)
77
+ int32_t LJ_FASTCALL lj_vm_modi(int32_t a, int32_t b)
78
+ {
79
+ uint32_t y, ua, ub;
80
+ lua_assert(b != 0); /* This must be checked before using this function. */
81
+ ua = a < 0 ? (uint32_t)-a : (uint32_t)a;
82
+ ub = b < 0 ? (uint32_t)-b : (uint32_t)b;
83
+ y = ua % ub;
84
+ if (y != 0 && (a^b) < 0) y = y - ub;
85
+ if (((int32_t)y^b) < 0) y = (uint32_t)-(int32_t)y;
86
+ return (int32_t)y;
87
+ }
88
+ #endif
89
+
90
+ #if !LJ_TARGET_X86ORX64
91
+ /* Unsigned x^k. */
92
+ static double lj_vm_powui(double x, uint32_t k)
93
+ {
94
+ double y;
95
+ lua_assert(k != 0);
96
+ for (; (k & 1) == 0; k >>= 1) x *= x;
97
+ y = x;
98
+ if ((k >>= 1) != 0) {
99
+ for (;;) {
100
+ x *= x;
101
+ if (k == 1) break;
102
+ if (k & 1) y *= x;
103
+ k >>= 1;
104
+ }
105
+ y *= x;
106
+ }
107
+ return y;
108
+ }
109
+
110
+ /* Signed x^k. */
111
+ double lj_vm_powi(double x, int32_t k)
112
+ {
113
+ if (k > 1)
114
+ return lj_vm_powui(x, (uint32_t)k);
115
+ else if (k == 1)
116
+ return x;
117
+ else if (k == 0)
118
+ return 1.0;
119
+ else
120
+ return 1.0 / lj_vm_powui(x, (uint32_t)-k);
121
+ }
122
+ #endif
123
+
124
+ /* Computes fpm(x) for extended math functions. */
125
+ double lj_vm_foldfpm(double x, int fpm)
126
+ {
127
+ switch (fpm) {
128
+ case IRFPM_FLOOR: return lj_vm_floor(x);
129
+ case IRFPM_CEIL: return lj_vm_ceil(x);
130
+ case IRFPM_TRUNC: return lj_vm_trunc(x);
131
+ case IRFPM_SQRT: return sqrt(x);
132
+ case IRFPM_EXP: return exp(x);
133
+ case IRFPM_EXP2: return lj_vm_exp2(x);
134
+ case IRFPM_LOG: return log(x);
135
+ case IRFPM_LOG2: return lj_vm_log2(x);
136
+ case IRFPM_LOG10: return log10(x);
137
+ case IRFPM_SIN: return sin(x);
138
+ case IRFPM_COS: return cos(x);
139
+ case IRFPM_TAN: return tan(x);
140
+ default: lua_assert(0);
141
+ }
142
+ return 0;
143
+ }
144
+
145
+ #if LJ_HASFFI
146
+ int lj_vm_errno(void)
147
+ {
148
+ return errno;
149
+ }
150
+ #endif
151
+
152
+ #endif
@@ -0,0 +1,96 @@
1
+ /*
2
+ ** LuaJIT core and libraries amalgamation.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ /*
7
+ +--------------------------------------------------------------------------+
8
+ | WARNING: Compiling the amalgamation needs a lot of virtual memory |
9
+ | (around 300 MB with GCC 4.x)! If you don't have enough physical memory |
10
+ | your machine will start swapping to disk and the compile will not finish |
11
+ | within a reasonable amount of time. |
12
+ | So either compile on a bigger machine or use the non-amalgamated build. |
13
+ +--------------------------------------------------------------------------+
14
+ */
15
+
16
+ #define ljamalg_c
17
+ #define LUA_CORE
18
+
19
+ /* To get the mremap prototype. Must be defined before any system includes. */
20
+ #if defined(__linux__) && !defined(_GNU_SOURCE)
21
+ #define _GNU_SOURCE
22
+ #endif
23
+
24
+ #ifndef WINVER
25
+ #define WINVER 0x0501
26
+ #endif
27
+
28
+ #include "lua.h"
29
+ #include "lauxlib.h"
30
+
31
+ #include "lj_gc.c"
32
+ #include "lj_err.c"
33
+ #include "lj_char.c"
34
+ #include "lj_bc.c"
35
+ #include "lj_obj.c"
36
+ #include "lj_buf.c"
37
+ #include "lj_str.c"
38
+ #include "lj_tab.c"
39
+ #include "lj_func.c"
40
+ #include "lj_udata.c"
41
+ #include "lj_meta.c"
42
+ #include "lj_debug.c"
43
+ #include "lj_state.c"
44
+ #include "lj_dispatch.c"
45
+ #include "lj_vmevent.c"
46
+ #include "lj_vmmath.c"
47
+ #include "lj_strscan.c"
48
+ #include "lj_strfmt.c"
49
+ #include "lj_api.c"
50
+ #include "lj_profile.c"
51
+ #include "lj_lex.c"
52
+ #include "lj_parse.c"
53
+ #include "lj_bcread.c"
54
+ #include "lj_bcwrite.c"
55
+ #include "lj_load.c"
56
+ #include "lj_ctype.c"
57
+ #include "lj_cdata.c"
58
+ #include "lj_cconv.c"
59
+ #include "lj_ccall.c"
60
+ #include "lj_ccallback.c"
61
+ #include "lj_carith.c"
62
+ #include "lj_clib.c"
63
+ #include "lj_cparse.c"
64
+ #include "lj_lib.c"
65
+ #include "lj_ir.c"
66
+ #include "lj_opt_mem.c"
67
+ #include "lj_opt_fold.c"
68
+ #include "lj_opt_narrow.c"
69
+ #include "lj_opt_dce.c"
70
+ #include "lj_opt_loop.c"
71
+ #include "lj_opt_split.c"
72
+ #include "lj_opt_sink.c"
73
+ #include "lj_mcode.c"
74
+ #include "lj_snap.c"
75
+ #include "lj_record.c"
76
+ #include "lj_crecord.c"
77
+ #include "lj_ffrecord.c"
78
+ #include "lj_asm.c"
79
+ #include "lj_trace.c"
80
+ #include "lj_gdbjit.c"
81
+ #include "lj_alloc.c"
82
+
83
+ #include "lib_aux.c"
84
+ #include "lib_base.c"
85
+ #include "lib_math.c"
86
+ #include "lib_string.c"
87
+ #include "lib_table.c"
88
+ #include "lib_io.c"
89
+ #include "lib_os.c"
90
+ #include "lib_package.c"
91
+ #include "lib_debug.c"
92
+ #include "lib_bit.c"
93
+ #include "lib_jit.c"
94
+ #include "lib_ffi.c"
95
+ #include "lib_init.c"
96
+