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,86 @@
1
+ /*
2
+ ** Lexical analyzer.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_LEX_H
7
+ #define _LJ_LEX_H
8
+
9
+ #include <stdarg.h>
10
+
11
+ #include "lj_obj.h"
12
+ #include "lj_err.h"
13
+
14
+ /* Lua lexer tokens. */
15
+ #define TKDEF(_, __) \
16
+ _(and) _(break) _(do) _(else) _(elseif) _(end) _(false) \
17
+ _(for) _(function) _(goto) _(if) _(in) _(local) _(nil) _(not) _(or) \
18
+ _(repeat) _(return) _(then) _(true) _(until) _(while) \
19
+ __(concat, ..) __(dots, ...) __(eq, ==) __(ge, >=) __(le, <=) __(ne, ~=) \
20
+ __(label, ::) __(number, <number>) __(name, <name>) __(string, <string>) \
21
+ __(eof, <eof>)
22
+
23
+ enum {
24
+ TK_OFS = 256,
25
+ #define TKENUM1(name) TK_##name,
26
+ #define TKENUM2(name, sym) TK_##name,
27
+ TKDEF(TKENUM1, TKENUM2)
28
+ #undef TKENUM1
29
+ #undef TKENUM2
30
+ TK_RESERVED = TK_while - TK_OFS
31
+ };
32
+
33
+ typedef int LexChar; /* Lexical character. Unsigned ext. from char. */
34
+ typedef int LexToken; /* Lexical token. */
35
+
36
+ /* Combined bytecode ins/line. Only used during bytecode generation. */
37
+ typedef struct BCInsLine {
38
+ BCIns ins; /* Bytecode instruction. */
39
+ BCLine line; /* Line number for this bytecode. */
40
+ } BCInsLine;
41
+
42
+ /* Info for local variables. Only used during bytecode generation. */
43
+ typedef struct VarInfo {
44
+ GCRef name; /* Local variable name or goto/label name. */
45
+ BCPos startpc; /* First point where the local variable is active. */
46
+ BCPos endpc; /* First point where the local variable is dead. */
47
+ uint8_t slot; /* Variable slot. */
48
+ uint8_t info; /* Variable/goto/label info. */
49
+ } VarInfo;
50
+
51
+ /* Lua lexer state. */
52
+ typedef struct LexState {
53
+ struct FuncState *fs; /* Current FuncState. Defined in lj_parse.c. */
54
+ struct lua_State *L; /* Lua state. */
55
+ TValue tokval; /* Current token value. */
56
+ TValue lookaheadval; /* Lookahead token value. */
57
+ const char *p; /* Current position in input buffer. */
58
+ const char *pe; /* End of input buffer. */
59
+ LexChar c; /* Current character. */
60
+ LexToken tok; /* Current token. */
61
+ LexToken lookahead; /* Lookahead token. */
62
+ SBuf sb; /* String buffer for tokens. */
63
+ lua_Reader rfunc; /* Reader callback. */
64
+ void *rdata; /* Reader callback data. */
65
+ BCLine linenumber; /* Input line counter. */
66
+ BCLine lastline; /* Line of last token. */
67
+ GCstr *chunkname; /* Current chunk name (interned string). */
68
+ const char *chunkarg; /* Chunk name argument. */
69
+ const char *mode; /* Allow loading bytecode (b) and/or source text (t). */
70
+ VarInfo *vstack; /* Stack for names and extents of local variables. */
71
+ MSize sizevstack; /* Size of variable stack. */
72
+ MSize vtop; /* Top of variable stack. */
73
+ BCInsLine *bcstack; /* Stack for bytecode instructions/line numbers. */
74
+ MSize sizebcstack; /* Size of bytecode stack. */
75
+ uint32_t level; /* Syntactical nesting level. */
76
+ } LexState;
77
+
78
+ LJ_FUNC int lj_lex_setup(lua_State *L, LexState *ls);
79
+ LJ_FUNC void lj_lex_cleanup(lua_State *L, LexState *ls);
80
+ LJ_FUNC void lj_lex_next(LexState *ls);
81
+ LJ_FUNC LexToken lj_lex_lookahead(LexState *ls);
82
+ LJ_FUNC const char *lj_lex_token2str(LexState *ls, LexToken tok);
83
+ LJ_FUNC_NORET void lj_lex_error(LexState *ls, LexToken tok, ErrMsg em, ...);
84
+ LJ_FUNC void lj_lex_init(lua_State *L);
85
+
86
+ #endif
@@ -0,0 +1,303 @@
1
+ /*
2
+ ** Library function support.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #define lj_lib_c
7
+ #define LUA_CORE
8
+
9
+ #include "lauxlib.h"
10
+
11
+ #include "lj_obj.h"
12
+ #include "lj_gc.h"
13
+ #include "lj_err.h"
14
+ #include "lj_str.h"
15
+ #include "lj_tab.h"
16
+ #include "lj_func.h"
17
+ #include "lj_bc.h"
18
+ #include "lj_dispatch.h"
19
+ #include "lj_vm.h"
20
+ #include "lj_strscan.h"
21
+ #include "lj_strfmt.h"
22
+ #include "lj_lex.h"
23
+ #include "lj_bcdump.h"
24
+ #include "lj_lib.h"
25
+
26
+ /* -- Library initialization ---------------------------------------------- */
27
+
28
+ static GCtab *lib_create_table(lua_State *L, const char *libname, int hsize)
29
+ {
30
+ if (libname) {
31
+ luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 16);
32
+ lua_getfield(L, -1, libname);
33
+ if (!tvistab(L->top-1)) {
34
+ L->top--;
35
+ if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, hsize) != NULL)
36
+ lj_err_callerv(L, LJ_ERR_BADMODN, libname);
37
+ settabV(L, L->top, tabV(L->top-1));
38
+ L->top++;
39
+ lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */
40
+ }
41
+ L->top--;
42
+ settabV(L, L->top-1, tabV(L->top));
43
+ } else {
44
+ lua_createtable(L, 0, hsize);
45
+ }
46
+ return tabV(L->top-1);
47
+ }
48
+
49
+ static const uint8_t *lib_read_lfunc(lua_State *L, const uint8_t *p, GCtab *tab)
50
+ {
51
+ int len = *p++;
52
+ GCstr *name = lj_str_new(L, (const char *)p, len);
53
+ LexState ls;
54
+ GCproto *pt;
55
+ GCfunc *fn;
56
+ memset(&ls, 0, sizeof(ls));
57
+ ls.L = L;
58
+ ls.p = (const char *)(p+len);
59
+ ls.pe = (const char *)~(uintptr_t)0;
60
+ ls.c = -1;
61
+ ls.level = (BCDUMP_F_STRIP|(LJ_BE*BCDUMP_F_BE));
62
+ ls.chunkname = name;
63
+ pt = lj_bcread_proto(&ls);
64
+ pt->firstline = ~(BCLine)0;
65
+ fn = lj_func_newL_empty(L, pt, tabref(L->env));
66
+ /* NOBARRIER: See below for common barrier. */
67
+ setfuncV(L, lj_tab_setstr(L, tab, name), fn);
68
+ return (const uint8_t *)ls.p;
69
+ }
70
+
71
+ void lj_lib_register(lua_State *L, const char *libname,
72
+ const uint8_t *p, const lua_CFunction *cf)
73
+ {
74
+ GCtab *env = tabref(L->env);
75
+ GCfunc *ofn = NULL;
76
+ int ffid = *p++;
77
+ BCIns *bcff = &L2GG(L)->bcff[*p++];
78
+ GCtab *tab = lib_create_table(L, libname, *p++);
79
+ ptrdiff_t tpos = L->top - L->base;
80
+
81
+ /* Avoid barriers further down. */
82
+ lj_gc_anybarriert(L, tab);
83
+ tab->nomm = 0;
84
+
85
+ for (;;) {
86
+ uint32_t tag = *p++;
87
+ MSize len = tag & LIBINIT_LENMASK;
88
+ tag &= LIBINIT_TAGMASK;
89
+ if (tag != LIBINIT_STRING) {
90
+ const char *name;
91
+ MSize nuv = (MSize)(L->top - L->base - tpos);
92
+ GCfunc *fn = lj_func_newC(L, nuv, env);
93
+ if (nuv) {
94
+ L->top = L->base + tpos;
95
+ memcpy(fn->c.upvalue, L->top, sizeof(TValue)*nuv);
96
+ }
97
+ fn->c.ffid = (uint8_t)(ffid++);
98
+ name = (const char *)p;
99
+ p += len;
100
+ if (tag == LIBINIT_CF)
101
+ setmref(fn->c.pc, &G(L)->bc_cfunc_int);
102
+ else
103
+ setmref(fn->c.pc, bcff++);
104
+ if (tag == LIBINIT_ASM_)
105
+ fn->c.f = ofn->c.f; /* Copy handler from previous function. */
106
+ else
107
+ fn->c.f = *cf++; /* Get cf or handler from C function table. */
108
+ if (len) {
109
+ /* NOBARRIER: See above for common barrier. */
110
+ setfuncV(L, lj_tab_setstr(L, tab, lj_str_new(L, name, len)), fn);
111
+ }
112
+ ofn = fn;
113
+ } else {
114
+ switch (tag | len) {
115
+ case LIBINIT_LUA:
116
+ p = lib_read_lfunc(L, p, tab);
117
+ break;
118
+ case LIBINIT_SET:
119
+ L->top -= 2;
120
+ if (tvisstr(L->top+1) && strV(L->top+1)->len == 0)
121
+ env = tabV(L->top);
122
+ else /* NOBARRIER: See above for common barrier. */
123
+ copyTV(L, lj_tab_set(L, tab, L->top+1), L->top);
124
+ break;
125
+ case LIBINIT_NUMBER:
126
+ memcpy(&L->top->n, p, sizeof(double));
127
+ L->top++;
128
+ p += sizeof(double);
129
+ break;
130
+ case LIBINIT_COPY:
131
+ copyTV(L, L->top, L->top - *p++);
132
+ L->top++;
133
+ break;
134
+ case LIBINIT_LASTCL:
135
+ setfuncV(L, L->top++, ofn);
136
+ break;
137
+ case LIBINIT_FFID:
138
+ ffid++;
139
+ break;
140
+ case LIBINIT_END:
141
+ return;
142
+ default:
143
+ setstrV(L, L->top++, lj_str_new(L, (const char *)p, len));
144
+ p += len;
145
+ break;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ /* Push internal function on the stack. */
152
+ GCfunc *lj_lib_pushcc(lua_State *L, lua_CFunction f, int id, int n)
153
+ {
154
+ GCfunc *fn;
155
+ lua_pushcclosure(L, f, n);
156
+ fn = funcV(L->top-1);
157
+ fn->c.ffid = (uint8_t)id;
158
+ setmref(fn->c.pc, &G(L)->bc_cfunc_int);
159
+ return fn;
160
+ }
161
+
162
+ void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f, GCtab *env)
163
+ {
164
+ luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD", 4);
165
+ lua_pushcfunction(L, f);
166
+ /* NOBARRIER: The function is new (marked white). */
167
+ setgcref(funcV(L->top-1)->c.env, obj2gco(env));
168
+ lua_setfield(L, -2, name);
169
+ L->top--;
170
+ }
171
+
172
+ int lj_lib_postreg(lua_State *L, lua_CFunction cf, int id, const char *name)
173
+ {
174
+ GCfunc *fn = lj_lib_pushcf(L, cf, id);
175
+ GCtab *t = tabref(curr_func(L)->c.env); /* Reference to parent table. */
176
+ setfuncV(L, lj_tab_setstr(L, t, lj_str_newz(L, name)), fn);
177
+ lj_gc_anybarriert(L, t);
178
+ setfuncV(L, L->top++, fn);
179
+ return 1;
180
+ }
181
+
182
+ /* -- Type checks --------------------------------------------------------- */
183
+
184
+ TValue *lj_lib_checkany(lua_State *L, int narg)
185
+ {
186
+ TValue *o = L->base + narg-1;
187
+ if (o >= L->top)
188
+ lj_err_arg(L, narg, LJ_ERR_NOVAL);
189
+ return o;
190
+ }
191
+
192
+ GCstr *lj_lib_checkstr(lua_State *L, int narg)
193
+ {
194
+ TValue *o = L->base + narg-1;
195
+ if (o < L->top) {
196
+ if (LJ_LIKELY(tvisstr(o))) {
197
+ return strV(o);
198
+ } else if (tvisnumber(o)) {
199
+ GCstr *s = lj_strfmt_number(L, o);
200
+ setstrV(L, o, s);
201
+ return s;
202
+ }
203
+ }
204
+ lj_err_argt(L, narg, LUA_TSTRING);
205
+ return NULL; /* unreachable */
206
+ }
207
+
208
+ GCstr *lj_lib_optstr(lua_State *L, int narg)
209
+ {
210
+ TValue *o = L->base + narg-1;
211
+ return (o < L->top && !tvisnil(o)) ? lj_lib_checkstr(L, narg) : NULL;
212
+ }
213
+
214
+ #if LJ_DUALNUM
215
+ void lj_lib_checknumber(lua_State *L, int narg)
216
+ {
217
+ TValue *o = L->base + narg-1;
218
+ if (!(o < L->top && lj_strscan_numberobj(o)))
219
+ lj_err_argt(L, narg, LUA_TNUMBER);
220
+ }
221
+ #endif
222
+
223
+ lua_Number lj_lib_checknum(lua_State *L, int narg)
224
+ {
225
+ TValue *o = L->base + narg-1;
226
+ if (!(o < L->top &&
227
+ (tvisnumber(o) || (tvisstr(o) && lj_strscan_num(strV(o), o)))))
228
+ lj_err_argt(L, narg, LUA_TNUMBER);
229
+ if (LJ_UNLIKELY(tvisint(o))) {
230
+ lua_Number n = (lua_Number)intV(o);
231
+ setnumV(o, n);
232
+ return n;
233
+ } else {
234
+ return numV(o);
235
+ }
236
+ }
237
+
238
+ int32_t lj_lib_checkint(lua_State *L, int narg)
239
+ {
240
+ TValue *o = L->base + narg-1;
241
+ if (!(o < L->top && lj_strscan_numberobj(o)))
242
+ lj_err_argt(L, narg, LUA_TNUMBER);
243
+ if (LJ_LIKELY(tvisint(o))) {
244
+ return intV(o);
245
+ } else {
246
+ int32_t i = lj_num2int(numV(o));
247
+ if (LJ_DUALNUM) setintV(o, i);
248
+ return i;
249
+ }
250
+ }
251
+
252
+ int32_t lj_lib_optint(lua_State *L, int narg, int32_t def)
253
+ {
254
+ TValue *o = L->base + narg-1;
255
+ return (o < L->top && !tvisnil(o)) ? lj_lib_checkint(L, narg) : def;
256
+ }
257
+
258
+ GCfunc *lj_lib_checkfunc(lua_State *L, int narg)
259
+ {
260
+ TValue *o = L->base + narg-1;
261
+ if (!(o < L->top && tvisfunc(o)))
262
+ lj_err_argt(L, narg, LUA_TFUNCTION);
263
+ return funcV(o);
264
+ }
265
+
266
+ GCtab *lj_lib_checktab(lua_State *L, int narg)
267
+ {
268
+ TValue *o = L->base + narg-1;
269
+ if (!(o < L->top && tvistab(o)))
270
+ lj_err_argt(L, narg, LUA_TTABLE);
271
+ return tabV(o);
272
+ }
273
+
274
+ GCtab *lj_lib_checktabornil(lua_State *L, int narg)
275
+ {
276
+ TValue *o = L->base + narg-1;
277
+ if (o < L->top) {
278
+ if (tvistab(o))
279
+ return tabV(o);
280
+ else if (tvisnil(o))
281
+ return NULL;
282
+ }
283
+ lj_err_arg(L, narg, LJ_ERR_NOTABN);
284
+ return NULL; /* unreachable */
285
+ }
286
+
287
+ int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst)
288
+ {
289
+ GCstr *s = def >= 0 ? lj_lib_optstr(L, narg) : lj_lib_checkstr(L, narg);
290
+ if (s) {
291
+ const char *opt = strdata(s);
292
+ MSize len = s->len;
293
+ int i;
294
+ for (i = 0; *(const uint8_t *)lst; i++) {
295
+ if (*(const uint8_t *)lst == len && memcmp(opt, lst+1, len) == 0)
296
+ return i;
297
+ lst += 1+*(const uint8_t *)lst;
298
+ }
299
+ lj_err_argv(L, narg, LJ_ERR_INVOPTM, opt);
300
+ }
301
+ return def;
302
+ }
303
+
@@ -0,0 +1,115 @@
1
+ /*
2
+ ** Library function support.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_LIB_H
7
+ #define _LJ_LIB_H
8
+
9
+ #include "lj_obj.h"
10
+
11
+ /*
12
+ ** A fallback handler is called by the assembler VM if the fast path fails:
13
+ **
14
+ ** - too few arguments: unrecoverable.
15
+ ** - wrong argument type: recoverable, if coercion succeeds.
16
+ ** - bad argument value: unrecoverable.
17
+ ** - stack overflow: recoverable, if stack reallocation succeeds.
18
+ ** - extra handling: recoverable.
19
+ **
20
+ ** The unrecoverable cases throw an error with lj_err_arg(), lj_err_argtype(),
21
+ ** lj_err_caller() or lj_err_callermsg().
22
+ ** The recoverable cases return 0 or the number of results + 1.
23
+ ** The assembler VM retries the fast path only if 0 is returned.
24
+ ** This time the fallback must not be called again or it gets stuck in a loop.
25
+ */
26
+
27
+ /* Return values from fallback handler. */
28
+ #define FFH_RETRY 0
29
+ #define FFH_UNREACHABLE FFH_RETRY
30
+ #define FFH_RES(n) ((n)+1)
31
+ #define FFH_TAILCALL (-1)
32
+
33
+ LJ_FUNC TValue *lj_lib_checkany(lua_State *L, int narg);
34
+ LJ_FUNC GCstr *lj_lib_checkstr(lua_State *L, int narg);
35
+ LJ_FUNC GCstr *lj_lib_optstr(lua_State *L, int narg);
36
+ #if LJ_DUALNUM
37
+ LJ_FUNC void lj_lib_checknumber(lua_State *L, int narg);
38
+ #else
39
+ #define lj_lib_checknumber(L, narg) lj_lib_checknum((L), (narg))
40
+ #endif
41
+ LJ_FUNC lua_Number lj_lib_checknum(lua_State *L, int narg);
42
+ LJ_FUNC int32_t lj_lib_checkint(lua_State *L, int narg);
43
+ LJ_FUNC int32_t lj_lib_optint(lua_State *L, int narg, int32_t def);
44
+ LJ_FUNC GCfunc *lj_lib_checkfunc(lua_State *L, int narg);
45
+ LJ_FUNC GCtab *lj_lib_checktab(lua_State *L, int narg);
46
+ LJ_FUNC GCtab *lj_lib_checktabornil(lua_State *L, int narg);
47
+ LJ_FUNC int lj_lib_checkopt(lua_State *L, int narg, int def, const char *lst);
48
+
49
+ /* Avoid including lj_frame.h. */
50
+ #if LJ_GC64
51
+ #define lj_lib_upvalue(L, n) \
52
+ (&gcval(L->base-2)->fn.c.upvalue[(n)-1])
53
+ #elif LJ_FR2
54
+ #define lj_lib_upvalue(L, n) \
55
+ (&gcref((L->base-2)->gcr)->fn.c.upvalue[(n)-1])
56
+ #else
57
+ #define lj_lib_upvalue(L, n) \
58
+ (&gcref((L->base-1)->fr.func)->fn.c.upvalue[(n)-1])
59
+ #endif
60
+
61
+ #if LJ_TARGET_WINDOWS
62
+ #define lj_lib_checkfpu(L) \
63
+ do { setnumV(L->top++, (lua_Number)1437217655); \
64
+ if (lua_tointeger(L, -1) != 1437217655) lj_err_caller(L, LJ_ERR_BADFPU); \
65
+ L->top--; } while (0)
66
+ #else
67
+ #define lj_lib_checkfpu(L) UNUSED(L)
68
+ #endif
69
+
70
+ LJ_FUNC GCfunc *lj_lib_pushcc(lua_State *L, lua_CFunction f, int id, int n);
71
+ #define lj_lib_pushcf(L, fn, id) (lj_lib_pushcc(L, (fn), (id), 0))
72
+
73
+ /* Library function declarations. Scanned by buildvm. */
74
+ #define LJLIB_CF(name) static int lj_cf_##name(lua_State *L)
75
+ #define LJLIB_ASM(name) static int lj_ffh_##name(lua_State *L)
76
+ #define LJLIB_ASM_(name)
77
+ #define LJLIB_LUA(name)
78
+ #define LJLIB_SET(name)
79
+ #define LJLIB_PUSH(arg)
80
+ #define LJLIB_REC(handler)
81
+ #define LJLIB_NOREGUV
82
+ #define LJLIB_NOREG
83
+
84
+ #define LJ_LIB_REG(L, regname, name) \
85
+ lj_lib_register(L, regname, lj_lib_init_##name, lj_lib_cf_##name)
86
+
87
+ LJ_FUNC void lj_lib_register(lua_State *L, const char *libname,
88
+ const uint8_t *init, const lua_CFunction *cf);
89
+ LJ_FUNC void lj_lib_prereg(lua_State *L, const char *name, lua_CFunction f,
90
+ GCtab *env);
91
+ LJ_FUNC int lj_lib_postreg(lua_State *L, lua_CFunction cf, int id,
92
+ const char *name);
93
+
94
+ /* Library init data tags. */
95
+ #define LIBINIT_LENMASK 0x3f
96
+ #define LIBINIT_TAGMASK 0xc0
97
+ #define LIBINIT_CF 0x00
98
+ #define LIBINIT_ASM 0x40
99
+ #define LIBINIT_ASM_ 0x80
100
+ #define LIBINIT_STRING 0xc0
101
+ #define LIBINIT_MAXSTR 0x38
102
+ #define LIBINIT_LUA 0xf9
103
+ #define LIBINIT_SET 0xfa
104
+ #define LIBINIT_NUMBER 0xfb
105
+ #define LIBINIT_COPY 0xfc
106
+ #define LIBINIT_LASTCL 0xfd
107
+ #define LIBINIT_FFID 0xfe
108
+ #define LIBINIT_END 0xff
109
+
110
+ /* Exported library functions. */
111
+
112
+ typedef struct RandomState RandomState;
113
+ LJ_FUNC uint64_t LJ_FASTCALL lj_math_random_step(RandomState *rs);
114
+
115
+ #endif