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,259 @@
1
+ /*
2
+ ** Stack frames.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_FRAME_H
7
+ #define _LJ_FRAME_H
8
+
9
+ #include "lj_obj.h"
10
+ #include "lj_bc.h"
11
+
12
+ /* -- Lua stack frame ----------------------------------------------------- */
13
+
14
+ /* Frame type markers in LSB of PC (4-byte aligned) or delta (8-byte aligned:
15
+ **
16
+ ** PC 00 Lua frame
17
+ ** delta 001 C frame
18
+ ** delta 010 Continuation frame
19
+ ** delta 011 Lua vararg frame
20
+ ** delta 101 cpcall() frame
21
+ ** delta 110 ff pcall() frame
22
+ ** delta 111 ff pcall() frame with active hook
23
+ */
24
+ enum {
25
+ FRAME_LUA, FRAME_C, FRAME_CONT, FRAME_VARG,
26
+ FRAME_LUAP, FRAME_CP, FRAME_PCALL, FRAME_PCALLH
27
+ };
28
+ #define FRAME_TYPE 3
29
+ #define FRAME_P 4
30
+ #define FRAME_TYPEP (FRAME_TYPE|FRAME_P)
31
+
32
+ /* Macros to access and modify Lua frames. */
33
+ #if LJ_FR2
34
+ /* Two-slot frame info, required for 64 bit PC/GCRef:
35
+ **
36
+ ** base-2 base-1 | base base+1 ...
37
+ ** [func PC/delta/ft] | [slots ...]
38
+ ** ^-- frame | ^-- base ^-- top
39
+ **
40
+ ** Continuation frames:
41
+ **
42
+ ** base-4 base-3 base-2 base-1 | base base+1 ...
43
+ ** [cont PC ] [func PC/delta/ft] | [slots ...]
44
+ ** ^-- frame | ^-- base ^-- top
45
+ */
46
+ #define frame_gc(f) (gcval((f)-1))
47
+ #define frame_ftsz(f) ((ptrdiff_t)(f)->ftsz)
48
+ #define frame_pc(f) ((const BCIns *)frame_ftsz(f))
49
+ #define setframe_gc(f, p, tp) (setgcVraw((f)-1, (p), (tp)))
50
+ #define setframe_ftsz(f, sz) ((f)->ftsz = (sz))
51
+ #define setframe_pc(f, pc) ((f)->ftsz = (int64_t)(intptr_t)(pc))
52
+ #else
53
+ /* One-slot frame info, sufficient for 32 bit PC/GCRef:
54
+ **
55
+ ** base-1 | base base+1 ...
56
+ ** lo hi |
57
+ ** [func | PC/delta/ft] | [slots ...]
58
+ ** ^-- frame | ^-- base ^-- top
59
+ **
60
+ ** Continuation frames:
61
+ **
62
+ ** base-2 base-1 | base base+1 ...
63
+ ** lo hi lo hi |
64
+ ** [cont | PC] [func | PC/delta/ft] | [slots ...]
65
+ ** ^-- frame | ^-- base ^-- top
66
+ */
67
+ #define frame_gc(f) (gcref((f)->fr.func))
68
+ #define frame_ftsz(f) ((ptrdiff_t)(f)->fr.tp.ftsz)
69
+ #define frame_pc(f) (mref((f)->fr.tp.pcr, const BCIns))
70
+ #define setframe_gc(f, p, tp) (setgcref((f)->fr.func, (p)), UNUSED(tp))
71
+ #define setframe_ftsz(f, sz) ((f)->fr.tp.ftsz = (int32_t)(sz))
72
+ #define setframe_pc(f, pc) (setmref((f)->fr.tp.pcr, (pc)))
73
+ #endif
74
+
75
+ #define frame_type(f) (frame_ftsz(f) & FRAME_TYPE)
76
+ #define frame_typep(f) (frame_ftsz(f) & FRAME_TYPEP)
77
+ #define frame_islua(f) (frame_type(f) == FRAME_LUA)
78
+ #define frame_isc(f) (frame_type(f) == FRAME_C)
79
+ #define frame_iscont(f) (frame_typep(f) == FRAME_CONT)
80
+ #define frame_isvarg(f) (frame_typep(f) == FRAME_VARG)
81
+ #define frame_ispcall(f) ((frame_ftsz(f) & 6) == FRAME_PCALL)
82
+
83
+ #define frame_func(f) (&frame_gc(f)->fn)
84
+ #define frame_delta(f) (frame_ftsz(f) >> 3)
85
+ #define frame_sized(f) (frame_ftsz(f) & ~FRAME_TYPEP)
86
+
87
+ enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
88
+
89
+ #if LJ_FR2
90
+ #define frame_contpc(f) (frame_pc((f)-2))
91
+ #define frame_contv(f) (((f)-3)->u64)
92
+ #else
93
+ #define frame_contpc(f) (frame_pc((f)-1))
94
+ #define frame_contv(f) (((f)-1)->u32.lo)
95
+ #endif
96
+ #if LJ_FR2
97
+ #define frame_contf(f) ((ASMFunction)(uintptr_t)((f)-3)->u64)
98
+ #elif LJ_64
99
+ #define frame_contf(f) \
100
+ ((ASMFunction)(void *)((intptr_t)lj_vm_asm_begin + \
101
+ (intptr_t)(int32_t)((f)-1)->u32.lo))
102
+ #else
103
+ #define frame_contf(f) ((ASMFunction)gcrefp(((f)-1)->gcr, void))
104
+ #endif
105
+ #define frame_iscont_fficb(f) \
106
+ (LJ_HASFFI && frame_contv(f) == LJ_CONT_FFI_CALLBACK)
107
+
108
+ #define frame_prevl(f) ((f) - (1+LJ_FR2+bc_a(frame_pc(f)[-1])))
109
+ #define frame_prevd(f) ((TValue *)((char *)(f) - frame_sized(f)))
110
+ #define frame_prev(f) (frame_islua(f)?frame_prevl(f):frame_prevd(f))
111
+ /* Note: this macro does not skip over FRAME_VARG. */
112
+
113
+ /* -- C stack frame ------------------------------------------------------- */
114
+
115
+ /* Macros to access and modify the C stack frame chain. */
116
+
117
+ /* These definitions must match with the arch-specific *.dasc files. */
118
+ #if LJ_TARGET_X86
119
+ #define CFRAME_OFS_ERRF (15*4)
120
+ #define CFRAME_OFS_NRES (14*4)
121
+ #define CFRAME_OFS_PREV (13*4)
122
+ #define CFRAME_OFS_L (12*4)
123
+ #define CFRAME_OFS_PC (6*4)
124
+ #define CFRAME_OFS_MULTRES (5*4)
125
+ #define CFRAME_SIZE (12*4)
126
+ #define CFRAME_SHIFT_MULTRES 0
127
+ #elif LJ_TARGET_X64
128
+ #if LJ_ABI_WIN
129
+ #define CFRAME_OFS_PREV (13*8)
130
+ #if LJ_GC64
131
+ #define CFRAME_OFS_PC (12*8)
132
+ #define CFRAME_OFS_L (11*8)
133
+ #define CFRAME_OFS_ERRF (21*4)
134
+ #define CFRAME_OFS_NRES (20*4)
135
+ #define CFRAME_OFS_MULTRES (8*4)
136
+ #else
137
+ #define CFRAME_OFS_PC (25*4)
138
+ #define CFRAME_OFS_L (24*4)
139
+ #define CFRAME_OFS_ERRF (23*4)
140
+ #define CFRAME_OFS_NRES (22*4)
141
+ #define CFRAME_OFS_MULTRES (21*4)
142
+ #endif
143
+ #define CFRAME_SIZE (10*8)
144
+ #define CFRAME_SIZE_JIT (CFRAME_SIZE + 9*16 + 4*8)
145
+ #define CFRAME_SHIFT_MULTRES 0
146
+ #else
147
+ #define CFRAME_OFS_PREV (4*8)
148
+ #if LJ_GC64
149
+ #define CFRAME_OFS_PC (3*8)
150
+ #define CFRAME_OFS_L (2*8)
151
+ #define CFRAME_OFS_ERRF (3*4)
152
+ #define CFRAME_OFS_NRES (2*4)
153
+ #define CFRAME_OFS_MULTRES (0*4)
154
+ #else
155
+ #define CFRAME_OFS_PC (7*4)
156
+ #define CFRAME_OFS_L (6*4)
157
+ #define CFRAME_OFS_ERRF (5*4)
158
+ #define CFRAME_OFS_NRES (4*4)
159
+ #define CFRAME_OFS_MULTRES (1*4)
160
+ #endif
161
+ #if LJ_NO_UNWIND
162
+ #define CFRAME_SIZE (12*8)
163
+ #else
164
+ #define CFRAME_SIZE (10*8)
165
+ #endif
166
+ #define CFRAME_SIZE_JIT (CFRAME_SIZE + 16)
167
+ #define CFRAME_SHIFT_MULTRES 0
168
+ #endif
169
+ #elif LJ_TARGET_ARM
170
+ #define CFRAME_OFS_ERRF 24
171
+ #define CFRAME_OFS_NRES 20
172
+ #define CFRAME_OFS_PREV 16
173
+ #define CFRAME_OFS_L 12
174
+ #define CFRAME_OFS_PC 8
175
+ #define CFRAME_OFS_MULTRES 4
176
+ #if LJ_ARCH_HASFPU
177
+ #define CFRAME_SIZE 128
178
+ #else
179
+ #define CFRAME_SIZE 64
180
+ #endif
181
+ #define CFRAME_SHIFT_MULTRES 3
182
+ #elif LJ_TARGET_ARM64
183
+ #define CFRAME_OFS_ERRF 196
184
+ #define CFRAME_OFS_NRES 200
185
+ #define CFRAME_OFS_PREV 160
186
+ #define CFRAME_OFS_L 176
187
+ #define CFRAME_OFS_PC 168
188
+ #define CFRAME_OFS_MULTRES 192
189
+ #define CFRAME_SIZE 208
190
+ #define CFRAME_SHIFT_MULTRES 3
191
+ #elif LJ_TARGET_PPC
192
+ #if LJ_TARGET_XBOX360
193
+ #define CFRAME_OFS_ERRF 424
194
+ #define CFRAME_OFS_NRES 420
195
+ #define CFRAME_OFS_PREV 400
196
+ #define CFRAME_OFS_L 416
197
+ #define CFRAME_OFS_PC 412
198
+ #define CFRAME_OFS_MULTRES 408
199
+ #define CFRAME_SIZE 384
200
+ #define CFRAME_SHIFT_MULTRES 3
201
+ #elif LJ_ARCH_PPC32ON64
202
+ #define CFRAME_OFS_ERRF 472
203
+ #define CFRAME_OFS_NRES 468
204
+ #define CFRAME_OFS_PREV 448
205
+ #define CFRAME_OFS_L 464
206
+ #define CFRAME_OFS_PC 460
207
+ #define CFRAME_OFS_MULTRES 456
208
+ #define CFRAME_SIZE 400
209
+ #define CFRAME_SHIFT_MULTRES 3
210
+ #else
211
+ #define CFRAME_OFS_ERRF 48
212
+ #define CFRAME_OFS_NRES 44
213
+ #define CFRAME_OFS_PREV 40
214
+ #define CFRAME_OFS_L 36
215
+ #define CFRAME_OFS_PC 32
216
+ #define CFRAME_OFS_MULTRES 28
217
+ #define CFRAME_SIZE 272
218
+ #define CFRAME_SHIFT_MULTRES 3
219
+ #endif
220
+ #elif LJ_TARGET_MIPS
221
+ #define CFRAME_OFS_ERRF 124
222
+ #define CFRAME_OFS_NRES 120
223
+ #define CFRAME_OFS_PREV 116
224
+ #define CFRAME_OFS_L 112
225
+ #define CFRAME_OFS_PC 20
226
+ #define CFRAME_OFS_MULTRES 16
227
+ #define CFRAME_SIZE 112
228
+ #define CFRAME_SHIFT_MULTRES 3
229
+ #else
230
+ #error "Missing CFRAME_* definitions for this architecture"
231
+ #endif
232
+
233
+ #ifndef CFRAME_SIZE_JIT
234
+ #define CFRAME_SIZE_JIT CFRAME_SIZE
235
+ #endif
236
+
237
+ #define CFRAME_RESUME 1
238
+ #define CFRAME_UNWIND_FF 2 /* Only used in unwinder. */
239
+ #define CFRAME_RAWMASK (~(intptr_t)(CFRAME_RESUME|CFRAME_UNWIND_FF))
240
+
241
+ #define cframe_errfunc(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_ERRF))
242
+ #define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES))
243
+ #define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV))
244
+ #define cframe_multres(cf) (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES))
245
+ #define cframe_multres_n(cf) (cframe_multres((cf)) >> CFRAME_SHIFT_MULTRES)
246
+ #define cframe_L(cf) \
247
+ (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
248
+ #define cframe_pc(cf) \
249
+ (mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns))
250
+ #define setcframe_L(cf, L) \
251
+ (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_L), (L)))
252
+ #define setcframe_pc(cf, pc) \
253
+ (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc)))
254
+ #define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME)
255
+ #define cframe_unwind_ff(cf) ((intptr_t)(cf) & CFRAME_UNWIND_FF)
256
+ #define cframe_raw(cf) ((void *)((intptr_t)(cf) & CFRAME_RAWMASK))
257
+ #define cframe_Lpc(L) cframe_pc(cframe_raw(L->cframe))
258
+
259
+ #endif
@@ -0,0 +1,185 @@
1
+ /*
2
+ ** Function handling (prototypes, functions and upvalues).
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ **
5
+ ** Portions taken verbatim or adapted from the Lua interpreter.
6
+ ** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h
7
+ */
8
+
9
+ #define lj_func_c
10
+ #define LUA_CORE
11
+
12
+ #include "lj_obj.h"
13
+ #include "lj_gc.h"
14
+ #include "lj_func.h"
15
+ #include "lj_trace.h"
16
+ #include "lj_vm.h"
17
+
18
+ /* -- Prototypes ---------------------------------------------------------- */
19
+
20
+ void LJ_FASTCALL lj_func_freeproto(global_State *g, GCproto *pt)
21
+ {
22
+ lj_mem_free(g, pt, pt->sizept);
23
+ }
24
+
25
+ /* -- Upvalues ------------------------------------------------------------ */
26
+
27
+ static void unlinkuv(GCupval *uv)
28
+ {
29
+ lua_assert(uvprev(uvnext(uv)) == uv && uvnext(uvprev(uv)) == uv);
30
+ setgcrefr(uvnext(uv)->prev, uv->prev);
31
+ setgcrefr(uvprev(uv)->next, uv->next);
32
+ }
33
+
34
+ /* Find existing open upvalue for a stack slot or create a new one. */
35
+ static GCupval *func_finduv(lua_State *L, TValue *slot)
36
+ {
37
+ global_State *g = G(L);
38
+ GCRef *pp = &L->openupval;
39
+ GCupval *p;
40
+ GCupval *uv;
41
+ /* Search the sorted list of open upvalues. */
42
+ while (gcref(*pp) != NULL && uvval((p = gco2uv(gcref(*pp)))) >= slot) {
43
+ lua_assert(!p->closed && uvval(p) != &p->tv);
44
+ if (uvval(p) == slot) { /* Found open upvalue pointing to same slot? */
45
+ if (isdead(g, obj2gco(p))) /* Resurrect it, if it's dead. */
46
+ flipwhite(obj2gco(p));
47
+ return p;
48
+ }
49
+ pp = &p->nextgc;
50
+ }
51
+ /* No matching upvalue found. Create a new one. */
52
+ uv = lj_mem_newt(L, sizeof(GCupval), GCupval);
53
+ newwhite(g, uv);
54
+ uv->gct = ~LJ_TUPVAL;
55
+ uv->closed = 0; /* Still open. */
56
+ setmref(uv->v, slot); /* Pointing to the stack slot. */
57
+ /* NOBARRIER: The GCupval is new (marked white) and open. */
58
+ setgcrefr(uv->nextgc, *pp); /* Insert into sorted list of open upvalues. */
59
+ setgcref(*pp, obj2gco(uv));
60
+ setgcref(uv->prev, obj2gco(&g->uvhead)); /* Insert into GC list, too. */
61
+ setgcrefr(uv->next, g->uvhead.next);
62
+ setgcref(uvnext(uv)->prev, obj2gco(uv));
63
+ setgcref(g->uvhead.next, obj2gco(uv));
64
+ lua_assert(uvprev(uvnext(uv)) == uv && uvnext(uvprev(uv)) == uv);
65
+ return uv;
66
+ }
67
+
68
+ /* Create an empty and closed upvalue. */
69
+ static GCupval *func_emptyuv(lua_State *L)
70
+ {
71
+ GCupval *uv = (GCupval *)lj_mem_newgco(L, sizeof(GCupval));
72
+ uv->gct = ~LJ_TUPVAL;
73
+ uv->closed = 1;
74
+ setnilV(&uv->tv);
75
+ setmref(uv->v, &uv->tv);
76
+ return uv;
77
+ }
78
+
79
+ /* Close all open upvalues pointing to some stack level or above. */
80
+ void LJ_FASTCALL lj_func_closeuv(lua_State *L, TValue *level)
81
+ {
82
+ GCupval *uv;
83
+ global_State *g = G(L);
84
+ while (gcref(L->openupval) != NULL &&
85
+ uvval((uv = gco2uv(gcref(L->openupval)))) >= level) {
86
+ GCobj *o = obj2gco(uv);
87
+ lua_assert(!isblack(o) && !uv->closed && uvval(uv) != &uv->tv);
88
+ setgcrefr(L->openupval, uv->nextgc); /* No longer in open list. */
89
+ if (isdead(g, o)) {
90
+ lj_func_freeuv(g, uv);
91
+ } else {
92
+ unlinkuv(uv);
93
+ lj_gc_closeuv(g, uv);
94
+ }
95
+ }
96
+ }
97
+
98
+ void LJ_FASTCALL lj_func_freeuv(global_State *g, GCupval *uv)
99
+ {
100
+ if (!uv->closed)
101
+ unlinkuv(uv);
102
+ lj_mem_freet(g, uv);
103
+ }
104
+
105
+ /* -- Functions (closures) ------------------------------------------------ */
106
+
107
+ GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env)
108
+ {
109
+ GCfunc *fn = (GCfunc *)lj_mem_newgco(L, sizeCfunc(nelems));
110
+ fn->c.gct = ~LJ_TFUNC;
111
+ fn->c.ffid = FF_C;
112
+ fn->c.nupvalues = (uint8_t)nelems;
113
+ /* NOBARRIER: The GCfunc is new (marked white). */
114
+ setmref(fn->c.pc, &G(L)->bc_cfunc_ext);
115
+ setgcref(fn->c.env, obj2gco(env));
116
+ return fn;
117
+ }
118
+
119
+ static GCfunc *func_newL(lua_State *L, GCproto *pt, GCtab *env)
120
+ {
121
+ uint32_t count;
122
+ GCfunc *fn = (GCfunc *)lj_mem_newgco(L, sizeLfunc((MSize)pt->sizeuv));
123
+ fn->l.gct = ~LJ_TFUNC;
124
+ fn->l.ffid = FF_LUA;
125
+ fn->l.nupvalues = 0; /* Set to zero until upvalues are initialized. */
126
+ /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */
127
+ setmref(fn->l.pc, proto_bc(pt));
128
+ setgcref(fn->l.env, obj2gco(env));
129
+ /* Saturating 3 bit counter (0..7) for created closures. */
130
+ count = (uint32_t)pt->flags + PROTO_CLCOUNT;
131
+ pt->flags = (uint8_t)(count - ((count >> PROTO_CLC_BITS) & PROTO_CLCOUNT));
132
+ return fn;
133
+ }
134
+
135
+ /* Create a new Lua function with empty upvalues. */
136
+ GCfunc *lj_func_newL_empty(lua_State *L, GCproto *pt, GCtab *env)
137
+ {
138
+ GCfunc *fn = func_newL(L, pt, env);
139
+ MSize i, nuv = pt->sizeuv;
140
+ /* NOBARRIER: The GCfunc is new (marked white). */
141
+ for (i = 0; i < nuv; i++) {
142
+ GCupval *uv = func_emptyuv(L);
143
+ uv->dhash = (uint32_t)(uintptr_t)pt ^ ((uint32_t)proto_uv(pt)[i] << 24);
144
+ setgcref(fn->l.uvptr[i], obj2gco(uv));
145
+ }
146
+ fn->l.nupvalues = (uint8_t)nuv;
147
+ return fn;
148
+ }
149
+
150
+ /* Do a GC check and create a new Lua function with inherited upvalues. */
151
+ GCfunc *lj_func_newL_gc(lua_State *L, GCproto *pt, GCfuncL *parent)
152
+ {
153
+ GCfunc *fn;
154
+ GCRef *puv;
155
+ MSize i, nuv;
156
+ TValue *base;
157
+ lj_gc_check_fixtop(L);
158
+ fn = func_newL(L, pt, tabref(parent->env));
159
+ /* NOBARRIER: The GCfunc is new (marked white). */
160
+ puv = parent->uvptr;
161
+ nuv = pt->sizeuv;
162
+ base = L->base;
163
+ for (i = 0; i < nuv; i++) {
164
+ uint32_t v = proto_uv(pt)[i];
165
+ GCupval *uv;
166
+ if ((v & PROTO_UV_LOCAL)) {
167
+ uv = func_finduv(L, base + (v & 0xff));
168
+ uv->immutable = ((v / PROTO_UV_IMMUTABLE) & 1);
169
+ uv->dhash = (uint32_t)(uintptr_t)mref(parent->pc, char) ^ (v << 24);
170
+ } else {
171
+ uv = &gcref(puv[v])->uv;
172
+ }
173
+ setgcref(fn->l.uvptr[i], obj2gco(uv));
174
+ }
175
+ fn->l.nupvalues = (uint8_t)nuv;
176
+ return fn;
177
+ }
178
+
179
+ void LJ_FASTCALL lj_func_free(global_State *g, GCfunc *fn)
180
+ {
181
+ MSize size = isluafunc(fn) ? sizeLfunc((MSize)fn->l.nupvalues) :
182
+ sizeCfunc((MSize)fn->c.nupvalues);
183
+ lj_mem_free(g, fn, size);
184
+ }
185
+
@@ -0,0 +1,24 @@
1
+ /*
2
+ ** Function handling (prototypes, functions and upvalues).
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_FUNC_H
7
+ #define _LJ_FUNC_H
8
+
9
+ #include "lj_obj.h"
10
+
11
+ /* Prototypes. */
12
+ LJ_FUNC void LJ_FASTCALL lj_func_freeproto(global_State *g, GCproto *pt);
13
+
14
+ /* Upvalues. */
15
+ LJ_FUNCA void LJ_FASTCALL lj_func_closeuv(lua_State *L, TValue *level);
16
+ LJ_FUNC void LJ_FASTCALL lj_func_freeuv(global_State *g, GCupval *uv);
17
+
18
+ /* Functions (closures). */
19
+ LJ_FUNC GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env);
20
+ LJ_FUNC GCfunc *lj_func_newL_empty(lua_State *L, GCproto *pt, GCtab *env);
21
+ LJ_FUNCA GCfunc *lj_func_newL_gc(lua_State *L, GCproto *pt, GCfuncL *parent);
22
+ LJ_FUNC void LJ_FASTCALL lj_func_free(global_State *g, GCfunc *c);
23
+
24
+ #endif