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,321 @@
1
+ /*
2
+ ** IR CALL* instruction definitions.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_IRCALL_H
7
+ #define _LJ_IRCALL_H
8
+
9
+ #include "lj_obj.h"
10
+ #include "lj_ir.h"
11
+ #include "lj_jit.h"
12
+
13
+ /* C call info for CALL* instructions. */
14
+ typedef struct CCallInfo {
15
+ ASMFunction func; /* Function pointer. */
16
+ uint32_t flags; /* Number of arguments and flags. */
17
+ } CCallInfo;
18
+
19
+ #define CCI_NARGS(ci) ((ci)->flags & 0xff) /* # of args. */
20
+ #define CCI_NARGS_MAX 32 /* Max. # of args. */
21
+
22
+ #define CCI_OTSHIFT 16
23
+ #define CCI_OPTYPE(ci) ((ci)->flags >> CCI_OTSHIFT) /* Get op/type. */
24
+ #define CCI_OPSHIFT 24
25
+ #define CCI_OP(ci) ((ci)->flags >> CCI_OPSHIFT) /* Get op. */
26
+
27
+ #define CCI_CALL_N (IR_CALLN << CCI_OPSHIFT)
28
+ #define CCI_CALL_A (IR_CALLA << CCI_OPSHIFT)
29
+ #define CCI_CALL_L (IR_CALLL << CCI_OPSHIFT)
30
+ #define CCI_CALL_S (IR_CALLS << CCI_OPSHIFT)
31
+ #define CCI_CALL_FN (CCI_CALL_N|CCI_CC_FASTCALL)
32
+ #define CCI_CALL_FL (CCI_CALL_L|CCI_CC_FASTCALL)
33
+ #define CCI_CALL_FS (CCI_CALL_S|CCI_CC_FASTCALL)
34
+
35
+ /* C call info flags. */
36
+ #define CCI_L 0x0100 /* Implicit L arg. */
37
+ #define CCI_CASTU64 0x0200 /* Cast u64 result to number. */
38
+ #define CCI_NOFPRCLOBBER 0x0400 /* Does not clobber any FPRs. */
39
+ #define CCI_VARARG 0x0800 /* Vararg function. */
40
+
41
+ #define CCI_CC_MASK 0x3000 /* Calling convention mask. */
42
+ #define CCI_CC_SHIFT 12
43
+ /* ORDER CC */
44
+ #define CCI_CC_CDECL 0x0000 /* Default cdecl calling convention. */
45
+ #define CCI_CC_THISCALL 0x1000 /* Thiscall calling convention. */
46
+ #define CCI_CC_FASTCALL 0x2000 /* Fastcall calling convention. */
47
+ #define CCI_CC_STDCALL 0x3000 /* Stdcall calling convention. */
48
+
49
+ /* Extra args for SOFTFP, SPLIT 64 bit. */
50
+ #define CCI_XARGS_SHIFT 14
51
+ #define CCI_XARGS(ci) (((ci)->flags >> CCI_XARGS_SHIFT) & 3)
52
+ #define CCI_XA (1u << CCI_XARGS_SHIFT)
53
+
54
+ #if LJ_SOFTFP || (LJ_32 && LJ_HASFFI)
55
+ #define CCI_XNARGS(ci) (CCI_NARGS((ci)) + CCI_XARGS((ci)))
56
+ #else
57
+ #define CCI_XNARGS(ci) CCI_NARGS((ci))
58
+ #endif
59
+
60
+ /* Helpers for conditional function definitions. */
61
+ #define IRCALLCOND_ANY(x) x
62
+
63
+ #if LJ_TARGET_X86ORX64
64
+ #define IRCALLCOND_FPMATH(x) NULL
65
+ #else
66
+ #define IRCALLCOND_FPMATH(x) x
67
+ #endif
68
+
69
+ #if LJ_SOFTFP
70
+ #define IRCALLCOND_SOFTFP(x) x
71
+ #if LJ_HASFFI
72
+ #define IRCALLCOND_SOFTFP_FFI(x) x
73
+ #else
74
+ #define IRCALLCOND_SOFTFP_FFI(x) NULL
75
+ #endif
76
+ #else
77
+ #define IRCALLCOND_SOFTFP(x) NULL
78
+ #define IRCALLCOND_SOFTFP_FFI(x) NULL
79
+ #endif
80
+
81
+ #define LJ_NEED_FP64 (LJ_TARGET_ARM || LJ_TARGET_PPC || LJ_TARGET_MIPS)
82
+
83
+ #if LJ_HASFFI && (LJ_SOFTFP || LJ_NEED_FP64)
84
+ #define IRCALLCOND_FP64_FFI(x) x
85
+ #else
86
+ #define IRCALLCOND_FP64_FFI(x) NULL
87
+ #endif
88
+
89
+ #if LJ_HASFFI
90
+ #define IRCALLCOND_FFI(x) x
91
+ #if LJ_32
92
+ #define IRCALLCOND_FFI32(x) x
93
+ #else
94
+ #define IRCALLCOND_FFI32(x) NULL
95
+ #endif
96
+ #else
97
+ #define IRCALLCOND_FFI(x) NULL
98
+ #define IRCALLCOND_FFI32(x) NULL
99
+ #endif
100
+
101
+ #if LJ_TARGET_X86
102
+ #define CCI_RANDFPR 0 /* Clang on OSX/x86 is overzealous. */
103
+ #else
104
+ #define CCI_RANDFPR CCI_NOFPRCLOBBER
105
+ #endif
106
+
107
+ #if LJ_SOFTFP
108
+ #define XA_FP CCI_XA
109
+ #define XA2_FP (CCI_XA+CCI_XA)
110
+ #else
111
+ #define XA_FP 0
112
+ #define XA2_FP 0
113
+ #endif
114
+
115
+ #if LJ_32
116
+ #define XA_64 CCI_XA
117
+ #define XA2_64 (CCI_XA+CCI_XA)
118
+ #else
119
+ #define XA_64 0
120
+ #define XA2_64 0
121
+ #endif
122
+
123
+ /* Function definitions for CALL* instructions. */
124
+ #define IRCALLDEF(_) \
125
+ _(ANY, lj_str_cmp, 2, FN, INT, CCI_NOFPRCLOBBER) \
126
+ _(ANY, lj_str_find, 4, N, P32, 0) \
127
+ _(ANY, lj_str_new, 3, S, STR, CCI_L) \
128
+ _(ANY, lj_strscan_num, 2, FN, INT, 0) \
129
+ _(ANY, lj_strfmt_int, 2, FN, STR, CCI_L) \
130
+ _(ANY, lj_strfmt_num, 2, FN, STR, CCI_L) \
131
+ _(ANY, lj_strfmt_char, 2, FN, STR, CCI_L) \
132
+ _(ANY, lj_strfmt_putint, 2, FL, P32, 0) \
133
+ _(ANY, lj_strfmt_putnum, 2, FL, P32, 0) \
134
+ _(ANY, lj_strfmt_putquoted, 2, FL, P32, 0) \
135
+ _(ANY, lj_strfmt_putfxint, 3, L, P32, XA_64) \
136
+ _(ANY, lj_strfmt_putfnum_int, 3, L, P32, XA_FP) \
137
+ _(ANY, lj_strfmt_putfnum_uint, 3, L, P32, XA_FP) \
138
+ _(ANY, lj_strfmt_putfnum, 3, L, P32, XA_FP) \
139
+ _(ANY, lj_strfmt_putfstr, 3, L, P32, 0) \
140
+ _(ANY, lj_strfmt_putfchar, 3, L, P32, 0) \
141
+ _(ANY, lj_buf_putmem, 3, S, P32, 0) \
142
+ _(ANY, lj_buf_putstr, 2, FL, P32, 0) \
143
+ _(ANY, lj_buf_putchar, 2, FL, P32, 0) \
144
+ _(ANY, lj_buf_putstr_reverse, 2, FL, P32, 0) \
145
+ _(ANY, lj_buf_putstr_lower, 2, FL, P32, 0) \
146
+ _(ANY, lj_buf_putstr_upper, 2, FL, P32, 0) \
147
+ _(ANY, lj_buf_putstr_rep, 3, L, P32, 0) \
148
+ _(ANY, lj_buf_puttab, 5, L, P32, 0) \
149
+ _(ANY, lj_buf_tostr, 1, FL, STR, 0) \
150
+ _(ANY, lj_tab_new_ah, 3, A, TAB, CCI_L) \
151
+ _(ANY, lj_tab_new1, 2, FS, TAB, CCI_L) \
152
+ _(ANY, lj_tab_dup, 2, FS, TAB, CCI_L) \
153
+ _(ANY, lj_tab_clear, 1, FS, NIL, 0) \
154
+ _(ANY, lj_tab_newkey, 3, S, P32, CCI_L) \
155
+ _(ANY, lj_tab_len, 1, FL, INT, 0) \
156
+ _(ANY, lj_gc_step_jit, 2, FS, NIL, CCI_L) \
157
+ _(ANY, lj_gc_barrieruv, 2, FS, NIL, 0) \
158
+ _(ANY, lj_mem_newgco, 2, FS, P32, CCI_L) \
159
+ _(ANY, lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_RANDFPR)\
160
+ _(ANY, lj_vm_modi, 2, FN, INT, 0) \
161
+ _(ANY, sinh, 1, N, NUM, XA_FP) \
162
+ _(ANY, cosh, 1, N, NUM, XA_FP) \
163
+ _(ANY, tanh, 1, N, NUM, XA_FP) \
164
+ _(ANY, fputc, 2, S, INT, 0) \
165
+ _(ANY, fwrite, 4, S, INT, 0) \
166
+ _(ANY, fflush, 1, S, INT, 0) \
167
+ /* ORDER FPM */ \
168
+ _(FPMATH, lj_vm_floor, 1, N, NUM, XA_FP) \
169
+ _(FPMATH, lj_vm_ceil, 1, N, NUM, XA_FP) \
170
+ _(FPMATH, lj_vm_trunc, 1, N, NUM, XA_FP) \
171
+ _(FPMATH, sqrt, 1, N, NUM, XA_FP) \
172
+ _(ANY, exp, 1, N, NUM, XA_FP) \
173
+ _(ANY, lj_vm_exp2, 1, N, NUM, XA_FP) \
174
+ _(ANY, log, 1, N, NUM, XA_FP) \
175
+ _(ANY, lj_vm_log2, 1, N, NUM, XA_FP) \
176
+ _(ANY, log10, 1, N, NUM, XA_FP) \
177
+ _(ANY, sin, 1, N, NUM, XA_FP) \
178
+ _(ANY, cos, 1, N, NUM, XA_FP) \
179
+ _(ANY, tan, 1, N, NUM, XA_FP) \
180
+ _(ANY, lj_vm_powi, 2, N, NUM, XA_FP) \
181
+ _(ANY, pow, 2, N, NUM, XA2_FP) \
182
+ _(ANY, atan2, 2, N, NUM, XA2_FP) \
183
+ _(ANY, ldexp, 2, N, NUM, XA_FP) \
184
+ _(SOFTFP, lj_vm_tobit, 2, N, INT, 0) \
185
+ _(SOFTFP, softfp_add, 4, N, NUM, 0) \
186
+ _(SOFTFP, softfp_sub, 4, N, NUM, 0) \
187
+ _(SOFTFP, softfp_mul, 4, N, NUM, 0) \
188
+ _(SOFTFP, softfp_div, 4, N, NUM, 0) \
189
+ _(SOFTFP, softfp_cmp, 4, N, NIL, 0) \
190
+ _(SOFTFP, softfp_i2d, 1, N, NUM, 0) \
191
+ _(SOFTFP, softfp_d2i, 2, N, INT, 0) \
192
+ _(SOFTFP_FFI, softfp_ui2d, 1, N, NUM, 0) \
193
+ _(SOFTFP_FFI, softfp_f2d, 1, N, NUM, 0) \
194
+ _(SOFTFP_FFI, softfp_d2ui, 2, N, INT, 0) \
195
+ _(SOFTFP_FFI, softfp_d2f, 2, N, FLOAT, 0) \
196
+ _(SOFTFP_FFI, softfp_i2f, 1, N, FLOAT, 0) \
197
+ _(SOFTFP_FFI, softfp_ui2f, 1, N, FLOAT, 0) \
198
+ _(SOFTFP_FFI, softfp_f2i, 1, N, INT, 0) \
199
+ _(SOFTFP_FFI, softfp_f2ui, 1, N, INT, 0) \
200
+ _(FP64_FFI, fp64_l2d, 1, N, NUM, XA_64) \
201
+ _(FP64_FFI, fp64_ul2d, 1, N, NUM, XA_64) \
202
+ _(FP64_FFI, fp64_l2f, 1, N, FLOAT, XA_64) \
203
+ _(FP64_FFI, fp64_ul2f, 1, N, FLOAT, XA_64) \
204
+ _(FP64_FFI, fp64_d2l, 1, N, I64, XA_FP) \
205
+ _(FP64_FFI, fp64_d2ul, 1, N, U64, XA_FP) \
206
+ _(FP64_FFI, fp64_f2l, 1, N, I64, 0) \
207
+ _(FP64_FFI, fp64_f2ul, 1, N, U64, 0) \
208
+ _(FFI, lj_carith_divi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
209
+ _(FFI, lj_carith_divu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
210
+ _(FFI, lj_carith_modi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
211
+ _(FFI, lj_carith_modu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
212
+ _(FFI, lj_carith_powi64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
213
+ _(FFI, lj_carith_powu64, 2, N, U64, XA2_64|CCI_NOFPRCLOBBER) \
214
+ _(FFI, lj_cdata_newv, 4, S, CDATA, CCI_L) \
215
+ _(FFI, lj_cdata_setfin, 4, S, NIL, CCI_L) \
216
+ _(FFI, strlen, 1, L, INTP, 0) \
217
+ _(FFI, memcpy, 3, S, PTR, 0) \
218
+ _(FFI, memset, 3, S, PTR, 0) \
219
+ _(FFI, lj_vm_errno, 0, S, INT, CCI_NOFPRCLOBBER) \
220
+ _(FFI32, lj_carith_mul64, 2, N, I64, XA2_64|CCI_NOFPRCLOBBER) \
221
+ _(FFI32, lj_carith_shl64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
222
+ _(FFI32, lj_carith_shr64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
223
+ _(FFI32, lj_carith_sar64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
224
+ _(FFI32, lj_carith_rol64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
225
+ _(FFI32, lj_carith_ror64, 2, N, U64, XA_64|CCI_NOFPRCLOBBER) \
226
+ \
227
+ /* End of list. */
228
+
229
+ typedef enum {
230
+ #define IRCALLENUM(cond, name, nargs, kind, type, flags) IRCALL_##name,
231
+ IRCALLDEF(IRCALLENUM)
232
+ #undef IRCALLENUM
233
+ IRCALL__MAX
234
+ } IRCallID;
235
+
236
+ LJ_FUNC TRef lj_ir_call(jit_State *J, IRCallID id, ...);
237
+
238
+ LJ_DATA const CCallInfo lj_ir_callinfo[IRCALL__MAX+1];
239
+
240
+ /* Soft-float declarations. */
241
+ #if LJ_SOFTFP
242
+ #if LJ_TARGET_ARM
243
+ #define softfp_add __aeabi_dadd
244
+ #define softfp_sub __aeabi_dsub
245
+ #define softfp_mul __aeabi_dmul
246
+ #define softfp_div __aeabi_ddiv
247
+ #define softfp_cmp __aeabi_cdcmple
248
+ #define softfp_i2d __aeabi_i2d
249
+ #define softfp_d2i __aeabi_d2iz
250
+ #define softfp_ui2d __aeabi_ui2d
251
+ #define softfp_f2d __aeabi_f2d
252
+ #define softfp_d2ui __aeabi_d2uiz
253
+ #define softfp_d2f __aeabi_d2f
254
+ #define softfp_i2f __aeabi_i2f
255
+ #define softfp_ui2f __aeabi_ui2f
256
+ #define softfp_f2i __aeabi_f2iz
257
+ #define softfp_f2ui __aeabi_f2uiz
258
+ #define fp64_l2d __aeabi_l2d
259
+ #define fp64_ul2d __aeabi_ul2d
260
+ #define fp64_l2f __aeabi_l2f
261
+ #define fp64_ul2f __aeabi_ul2f
262
+ #if LJ_TARGET_IOS
263
+ #define fp64_d2l __fixdfdi
264
+ #define fp64_d2ul __fixunsdfdi
265
+ #define fp64_f2l __fixsfdi
266
+ #define fp64_f2ul __fixunssfdi
267
+ #else
268
+ #define fp64_d2l __aeabi_d2lz
269
+ #define fp64_d2ul __aeabi_d2ulz
270
+ #define fp64_f2l __aeabi_f2lz
271
+ #define fp64_f2ul __aeabi_f2ulz
272
+ #endif
273
+ #else
274
+ #error "Missing soft-float definitions for target architecture"
275
+ #endif
276
+ extern double softfp_add(double a, double b);
277
+ extern double softfp_sub(double a, double b);
278
+ extern double softfp_mul(double a, double b);
279
+ extern double softfp_div(double a, double b);
280
+ extern void softfp_cmp(double a, double b);
281
+ extern double softfp_i2d(int32_t a);
282
+ extern int32_t softfp_d2i(double a);
283
+ #if LJ_HASFFI
284
+ extern double softfp_ui2d(uint32_t a);
285
+ extern double softfp_f2d(float a);
286
+ extern uint32_t softfp_d2ui(double a);
287
+ extern float softfp_d2f(double a);
288
+ extern float softfp_i2f(int32_t a);
289
+ extern float softfp_ui2f(uint32_t a);
290
+ extern int32_t softfp_f2i(float a);
291
+ extern uint32_t softfp_f2ui(float a);
292
+ #endif
293
+ #endif
294
+
295
+ #if LJ_HASFFI && LJ_NEED_FP64 && !(LJ_TARGET_ARM && LJ_SOFTFP)
296
+ #ifdef __GNUC__
297
+ #define fp64_l2d __floatdidf
298
+ #define fp64_ul2d __floatundidf
299
+ #define fp64_l2f __floatdisf
300
+ #define fp64_ul2f __floatundisf
301
+ #define fp64_d2l __fixdfdi
302
+ #define fp64_d2ul __fixunsdfdi
303
+ #define fp64_f2l __fixsfdi
304
+ #define fp64_f2ul __fixunssfdi
305
+ #else
306
+ #error "Missing fp64 helper definitions for this compiler"
307
+ #endif
308
+ #endif
309
+
310
+ #if LJ_HASFFI && (LJ_SOFTFP || LJ_NEED_FP64)
311
+ extern double fp64_l2d(int64_t a);
312
+ extern double fp64_ul2d(uint64_t a);
313
+ extern float fp64_l2f(int64_t a);
314
+ extern float fp64_ul2f(uint64_t a);
315
+ extern int64_t fp64_d2l(double a);
316
+ extern uint64_t fp64_d2ul(double a);
317
+ extern int64_t fp64_f2l(float a);
318
+ extern uint64_t fp64_f2ul(float a);
319
+ #endif
320
+
321
+ #endif
@@ -0,0 +1,161 @@
1
+ /*
2
+ ** Common header for IR emitter and optimizations.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_IROPT_H
7
+ #define _LJ_IROPT_H
8
+
9
+ #include <stdarg.h>
10
+
11
+ #include "lj_obj.h"
12
+ #include "lj_jit.h"
13
+
14
+ #if LJ_HASJIT
15
+ /* IR emitter. */
16
+ LJ_FUNC void LJ_FASTCALL lj_ir_growtop(jit_State *J);
17
+ LJ_FUNC TRef LJ_FASTCALL lj_ir_emit(jit_State *J);
18
+
19
+ /* Save current IR in J->fold.ins, but do not emit it (yet). */
20
+ static LJ_AINLINE void lj_ir_set_(jit_State *J, uint16_t ot, IRRef1 a, IRRef1 b)
21
+ {
22
+ J->fold.ins.ot = ot; J->fold.ins.op1 = a; J->fold.ins.op2 = b;
23
+ }
24
+
25
+ #define lj_ir_set(J, ot, a, b) \
26
+ lj_ir_set_(J, (uint16_t)(ot), (IRRef1)(a), (IRRef1)(b))
27
+
28
+ /* Get ref of next IR instruction and optionally grow IR.
29
+ ** Note: this may invalidate all IRIns*!
30
+ */
31
+ static LJ_AINLINE IRRef lj_ir_nextins(jit_State *J)
32
+ {
33
+ IRRef ref = J->cur.nins;
34
+ if (LJ_UNLIKELY(ref >= J->irtoplim)) lj_ir_growtop(J);
35
+ J->cur.nins = ref + 1;
36
+ return ref;
37
+ }
38
+
39
+ /* Interning of constants. */
40
+ LJ_FUNC TRef LJ_FASTCALL lj_ir_kint(jit_State *J, int32_t k);
41
+ LJ_FUNC void lj_ir_k64_freeall(jit_State *J);
42
+ LJ_FUNC TRef lj_ir_k64(jit_State *J, IROp op, cTValue *tv);
43
+ LJ_FUNC cTValue *lj_ir_k64_find(jit_State *J, uint64_t u64);
44
+ LJ_FUNC TRef lj_ir_knum_u64(jit_State *J, uint64_t u64);
45
+ LJ_FUNC TRef lj_ir_knumint(jit_State *J, lua_Number n);
46
+ LJ_FUNC TRef lj_ir_kint64(jit_State *J, uint64_t u64);
47
+ LJ_FUNC TRef lj_ir_kgc(jit_State *J, GCobj *o, IRType t);
48
+ LJ_FUNC TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr);
49
+ LJ_FUNC TRef lj_ir_knull(jit_State *J, IRType t);
50
+ LJ_FUNC TRef lj_ir_kslot(jit_State *J, TRef key, IRRef slot);
51
+
52
+ #if LJ_64
53
+ #define lj_ir_kintp(J, k) lj_ir_kint64(J, (uint64_t)(k))
54
+ #else
55
+ #define lj_ir_kintp(J, k) lj_ir_kint(J, (int32_t)(k))
56
+ #endif
57
+
58
+ static LJ_AINLINE TRef lj_ir_knum(jit_State *J, lua_Number n)
59
+ {
60
+ TValue tv;
61
+ tv.n = n;
62
+ return lj_ir_knum_u64(J, tv.u64);
63
+ }
64
+
65
+ #define lj_ir_kstr(J, str) lj_ir_kgc(J, obj2gco((str)), IRT_STR)
66
+ #define lj_ir_ktab(J, tab) lj_ir_kgc(J, obj2gco((tab)), IRT_TAB)
67
+ #define lj_ir_kfunc(J, func) lj_ir_kgc(J, obj2gco((func)), IRT_FUNC)
68
+ #define lj_ir_kptr(J, ptr) lj_ir_kptr_(J, IR_KPTR, (ptr))
69
+ #define lj_ir_kkptr(J, ptr) lj_ir_kptr_(J, IR_KKPTR, (ptr))
70
+
71
+ /* Special FP constants. */
72
+ #define lj_ir_knum_zero(J) lj_ir_knum_u64(J, U64x(00000000,00000000))
73
+ #define lj_ir_knum_one(J) lj_ir_knum_u64(J, U64x(3ff00000,00000000))
74
+ #define lj_ir_knum_tobit(J) lj_ir_knum_u64(J, U64x(43380000,00000000))
75
+
76
+ /* Special 128 bit SIMD constants. */
77
+ #define lj_ir_knum_abs(J) lj_ir_k64(J, IR_KNUM, LJ_KSIMD(J, LJ_KSIMD_ABS))
78
+ #define lj_ir_knum_neg(J) lj_ir_k64(J, IR_KNUM, LJ_KSIMD(J, LJ_KSIMD_NEG))
79
+
80
+ /* Access to constants. */
81
+ LJ_FUNC void lj_ir_kvalue(lua_State *L, TValue *tv, const IRIns *ir);
82
+
83
+ /* Convert IR operand types. */
84
+ LJ_FUNC TRef LJ_FASTCALL lj_ir_tonumber(jit_State *J, TRef tr);
85
+ LJ_FUNC TRef LJ_FASTCALL lj_ir_tonum(jit_State *J, TRef tr);
86
+ LJ_FUNC TRef LJ_FASTCALL lj_ir_tostr(jit_State *J, TRef tr);
87
+
88
+ /* Miscellaneous IR ops. */
89
+ LJ_FUNC int lj_ir_numcmp(lua_Number a, lua_Number b, IROp op);
90
+ LJ_FUNC int lj_ir_strcmp(GCstr *a, GCstr *b, IROp op);
91
+ LJ_FUNC void lj_ir_rollback(jit_State *J, IRRef ref);
92
+
93
+ /* Emit IR instructions with on-the-fly optimizations. */
94
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fold(jit_State *J);
95
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_cse(jit_State *J);
96
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_cselim(jit_State *J, IRRef lim);
97
+
98
+ /* Special return values for the fold functions. */
99
+ enum {
100
+ NEXTFOLD, /* Couldn't fold, pass on. */
101
+ RETRYFOLD, /* Retry fold with modified fins. */
102
+ KINTFOLD, /* Return ref for int constant in fins->i. */
103
+ FAILFOLD, /* Guard would always fail. */
104
+ DROPFOLD, /* Guard eliminated. */
105
+ MAX_FOLD
106
+ };
107
+
108
+ #define INTFOLD(k) ((J->fold.ins.i = (k)), (TRef)KINTFOLD)
109
+ #define INT64FOLD(k) (lj_ir_kint64(J, (k)))
110
+ #define CONDFOLD(cond) ((TRef)FAILFOLD + (TRef)(cond))
111
+ #define LEFTFOLD (J->fold.ins.op1)
112
+ #define RIGHTFOLD (J->fold.ins.op2)
113
+ #define CSEFOLD (lj_opt_cse(J))
114
+ #define EMITFOLD (lj_ir_emit(J))
115
+
116
+ /* Load/store forwarding. */
117
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_aload(jit_State *J);
118
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_hload(jit_State *J);
119
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_uload(jit_State *J);
120
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_fload(jit_State *J);
121
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_xload(jit_State *J);
122
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_tab_len(jit_State *J);
123
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_fwd_hrefk(jit_State *J);
124
+ LJ_FUNC int LJ_FASTCALL lj_opt_fwd_href_nokey(jit_State *J);
125
+ LJ_FUNC int LJ_FASTCALL lj_opt_fwd_tptr(jit_State *J, IRRef lim);
126
+ LJ_FUNC int lj_opt_fwd_wasnonnil(jit_State *J, IROpT loadop, IRRef xref);
127
+
128
+ /* Dead-store elimination. */
129
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_ahstore(jit_State *J);
130
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J);
131
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_fstore(jit_State *J);
132
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_dse_xstore(jit_State *J);
133
+
134
+ /* Narrowing. */
135
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_convert(jit_State *J);
136
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_index(jit_State *J, TRef key);
137
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_toint(jit_State *J, TRef tr);
138
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_tobit(jit_State *J, TRef tr);
139
+ #if LJ_HASFFI
140
+ LJ_FUNC TRef LJ_FASTCALL lj_opt_narrow_cindex(jit_State *J, TRef key);
141
+ #endif
142
+ LJ_FUNC TRef lj_opt_narrow_arith(jit_State *J, TRef rb, TRef rc,
143
+ TValue *vb, TValue *vc, IROp op);
144
+ LJ_FUNC TRef lj_opt_narrow_unm(jit_State *J, TRef rc, TValue *vc);
145
+ LJ_FUNC TRef lj_opt_narrow_mod(jit_State *J, TRef rb, TRef rc, TValue *vc);
146
+ LJ_FUNC TRef lj_opt_narrow_pow(jit_State *J, TRef rb, TRef rc, TValue *vc);
147
+ LJ_FUNC IRType lj_opt_narrow_forl(jit_State *J, cTValue *forbase);
148
+
149
+ /* Optimization passes. */
150
+ LJ_FUNC void lj_opt_dce(jit_State *J);
151
+ LJ_FUNC int lj_opt_loop(jit_State *J);
152
+ #if LJ_SOFTFP || (LJ_32 && LJ_HASFFI)
153
+ LJ_FUNC void lj_opt_split(jit_State *J);
154
+ #else
155
+ #define lj_opt_split(J) UNUSED(J)
156
+ #endif
157
+ LJ_FUNC void lj_opt_sink(jit_State *J);
158
+
159
+ #endif
160
+
161
+ #endif