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,70 @@
1
+ /*
2
+ ** C type conversions.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_CCONV_H
7
+ #define _LJ_CCONV_H
8
+
9
+ #include "lj_obj.h"
10
+ #include "lj_ctype.h"
11
+
12
+ #if LJ_HASFFI
13
+
14
+ /* Compressed C type index. ORDER CCX. */
15
+ enum {
16
+ CCX_B, /* Bool. */
17
+ CCX_I, /* Integer. */
18
+ CCX_F, /* Floating-point number. */
19
+ CCX_C, /* Complex. */
20
+ CCX_V, /* Vector. */
21
+ CCX_P, /* Pointer. */
22
+ CCX_A, /* Refarray. */
23
+ CCX_S /* Struct/union. */
24
+ };
25
+
26
+ /* Convert C type info to compressed C type index. ORDER CT. ORDER CCX. */
27
+ static LJ_AINLINE uint32_t cconv_idx(CTInfo info)
28
+ {
29
+ uint32_t idx = ((info >> 26) & 15u); /* Dispatch bits. */
30
+ lua_assert(ctype_type(info) <= CT_MAYCONVERT);
31
+ #if LJ_64
32
+ idx = ((uint32_t)(U64x(f436fff5,fff7f021) >> 4*idx) & 15u);
33
+ #else
34
+ idx = (((idx < 8 ? 0xfff7f021u : 0xf436fff5) >> 4*(idx & 7u)) & 15u);
35
+ #endif
36
+ lua_assert(idx < 8);
37
+ return idx;
38
+ }
39
+
40
+ #define cconv_idx2(dinfo, sinfo) \
41
+ ((cconv_idx((dinfo)) << 3) + cconv_idx((sinfo)))
42
+
43
+ #define CCX(dst, src) ((CCX_##dst << 3) + CCX_##src)
44
+
45
+ /* Conversion flags. */
46
+ #define CCF_CAST 0x00000001u
47
+ #define CCF_FROMTV 0x00000002u
48
+ #define CCF_SAME 0x00000004u
49
+ #define CCF_IGNQUAL 0x00000008u
50
+
51
+ #define CCF_ARG_SHIFT 8
52
+ #define CCF_ARG(n) ((n) << CCF_ARG_SHIFT)
53
+ #define CCF_GETARG(f) ((f) >> CCF_ARG_SHIFT)
54
+
55
+ LJ_FUNC int lj_cconv_compatptr(CTState *cts, CType *d, CType *s, CTInfo flags);
56
+ LJ_FUNC void lj_cconv_ct_ct(CTState *cts, CType *d, CType *s,
57
+ uint8_t *dp, uint8_t *sp, CTInfo flags);
58
+ LJ_FUNC int lj_cconv_tv_ct(CTState *cts, CType *s, CTypeID sid,
59
+ TValue *o, uint8_t *sp);
60
+ LJ_FUNC int lj_cconv_tv_bf(CTState *cts, CType *s, TValue *o, uint8_t *sp);
61
+ LJ_FUNC void lj_cconv_ct_tv(CTState *cts, CType *d,
62
+ uint8_t *dp, TValue *o, CTInfo flags);
63
+ LJ_FUNC void lj_cconv_bf_tv(CTState *cts, CType *d, uint8_t *dp, TValue *o);
64
+ LJ_FUNC int lj_cconv_multi_init(CTState *cts, CType *d, TValue *o);
65
+ LJ_FUNC void lj_cconv_ct_init(CTState *cts, CType *d, CTSize sz,
66
+ uint8_t *dp, TValue *o, MSize len);
67
+
68
+ #endif
69
+
70
+ #endif
@@ -0,0 +1,288 @@
1
+ /*
2
+ ** C data management.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #include "lj_obj.h"
7
+
8
+ #if LJ_HASFFI
9
+
10
+ #include "lj_gc.h"
11
+ #include "lj_err.h"
12
+ #include "lj_tab.h"
13
+ #include "lj_ctype.h"
14
+ #include "lj_cconv.h"
15
+ #include "lj_cdata.h"
16
+
17
+ /* -- C data allocation --------------------------------------------------- */
18
+
19
+ /* Allocate a new C data object holding a reference to another object. */
20
+ GCcdata *lj_cdata_newref(CTState *cts, const void *p, CTypeID id)
21
+ {
22
+ CTypeID refid = lj_ctype_intern(cts, CTINFO_REF(id), CTSIZE_PTR);
23
+ GCcdata *cd = lj_cdata_new(cts, refid, CTSIZE_PTR);
24
+ *(const void **)cdataptr(cd) = p;
25
+ return cd;
26
+ }
27
+
28
+ /* Allocate variable-sized or specially aligned C data object. */
29
+ GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align)
30
+ {
31
+ global_State *g;
32
+ MSize extra = sizeof(GCcdataVar) + sizeof(GCcdata) +
33
+ (align > CT_MEMALIGN ? (1u<<align) - (1u<<CT_MEMALIGN) : 0);
34
+ char *p = lj_mem_newt(L, extra + sz, char);
35
+ uintptr_t adata = (uintptr_t)p + sizeof(GCcdataVar) + sizeof(GCcdata);
36
+ uintptr_t almask = (1u << align) - 1u;
37
+ GCcdata *cd = (GCcdata *)(((adata + almask) & ~almask) - sizeof(GCcdata));
38
+ lua_assert((char *)cd - p < 65536);
39
+ cdatav(cd)->offset = (uint16_t)((char *)cd - p);
40
+ cdatav(cd)->extra = extra;
41
+ cdatav(cd)->len = sz;
42
+ g = G(L);
43
+ setgcrefr(cd->nextgc, g->gc.root);
44
+ setgcref(g->gc.root, obj2gco(cd));
45
+ newwhite(g, obj2gco(cd));
46
+ cd->marked |= 0x80;
47
+ cd->gct = ~LJ_TCDATA;
48
+ cd->ctypeid = id;
49
+ return cd;
50
+ }
51
+
52
+ /* Free a C data object. */
53
+ void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
54
+ {
55
+ if (LJ_UNLIKELY(cd->marked & LJ_GC_CDATA_FIN)) {
56
+ GCobj *root;
57
+ makewhite(g, obj2gco(cd));
58
+ markfinalized(obj2gco(cd));
59
+ if ((root = gcref(g->gc.mmudata)) != NULL) {
60
+ setgcrefr(cd->nextgc, root->gch.nextgc);
61
+ setgcref(root->gch.nextgc, obj2gco(cd));
62
+ setgcref(g->gc.mmudata, obj2gco(cd));
63
+ } else {
64
+ setgcref(cd->nextgc, obj2gco(cd));
65
+ setgcref(g->gc.mmudata, obj2gco(cd));
66
+ }
67
+ } else if (LJ_LIKELY(!cdataisv(cd))) {
68
+ CType *ct = ctype_raw(ctype_ctsG(g), cd->ctypeid);
69
+ CTSize sz = ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR;
70
+ lua_assert(ctype_hassize(ct->info) || ctype_isfunc(ct->info) ||
71
+ ctype_isextern(ct->info));
72
+ lj_mem_free(g, cd, sizeof(GCcdata) + sz);
73
+ } else {
74
+ lj_mem_free(g, memcdatav(cd), sizecdatav(cd));
75
+ }
76
+ }
77
+
78
+ void lj_cdata_setfin(lua_State *L, GCcdata *cd, GCobj *obj, uint32_t it)
79
+ {
80
+ GCtab *t = ctype_ctsG(G(L))->finalizer;
81
+ if (gcref(t->metatable)) {
82
+ /* Add cdata to finalizer table, if still enabled. */
83
+ TValue *tv, tmp;
84
+ setcdataV(L, &tmp, cd);
85
+ lj_gc_anybarriert(L, t);
86
+ tv = lj_tab_set(L, t, &tmp);
87
+ setgcV(L, tv, obj, it);
88
+ if (!tvisnil(tv))
89
+ cd->marked |= LJ_GC_CDATA_FIN;
90
+ else
91
+ cd->marked &= ~LJ_GC_CDATA_FIN;
92
+ }
93
+ }
94
+
95
+ /* -- C data indexing ----------------------------------------------------- */
96
+
97
+ /* Index C data by a TValue. Return CType and pointer. */
98
+ CType *lj_cdata_index(CTState *cts, GCcdata *cd, cTValue *key, uint8_t **pp,
99
+ CTInfo *qual)
100
+ {
101
+ uint8_t *p = (uint8_t *)cdataptr(cd);
102
+ CType *ct = ctype_get(cts, cd->ctypeid);
103
+ ptrdiff_t idx;
104
+
105
+ /* Resolve reference for cdata object. */
106
+ if (ctype_isref(ct->info)) {
107
+ lua_assert(ct->size == CTSIZE_PTR);
108
+ p = *(uint8_t **)p;
109
+ ct = ctype_child(cts, ct);
110
+ }
111
+
112
+ collect_attrib:
113
+ /* Skip attributes and collect qualifiers. */
114
+ while (ctype_isattrib(ct->info)) {
115
+ if (ctype_attrib(ct->info) == CTA_QUAL) *qual |= ct->size;
116
+ ct = ctype_child(cts, ct);
117
+ }
118
+ lua_assert(!ctype_isref(ct->info)); /* Interning rejects refs to refs. */
119
+
120
+ if (tvisint(key)) {
121
+ idx = (ptrdiff_t)intV(key);
122
+ goto integer_key;
123
+ } else if (tvisnum(key)) { /* Numeric key. */
124
+ #ifdef _MSC_VER
125
+ /* Workaround for MSVC bug. */
126
+ volatile
127
+ #endif
128
+ lua_Number n = numV(key);
129
+ idx = LJ_64 ? (ptrdiff_t)n : (ptrdiff_t)lj_num2int(n);
130
+ integer_key:
131
+ if (ctype_ispointer(ct->info)) {
132
+ CTSize sz = lj_ctype_size(cts, ctype_cid(ct->info)); /* Element size. */
133
+ if (sz == CTSIZE_INVALID)
134
+ lj_err_caller(cts->L, LJ_ERR_FFI_INVSIZE);
135
+ if (ctype_isptr(ct->info)) {
136
+ p = (uint8_t *)cdata_getptr(p, ct->size);
137
+ } else if ((ct->info & (CTF_VECTOR|CTF_COMPLEX))) {
138
+ if ((ct->info & CTF_COMPLEX)) idx &= 1;
139
+ *qual |= CTF_CONST; /* Valarray elements are constant. */
140
+ }
141
+ *pp = p + idx*(int32_t)sz;
142
+ return ct;
143
+ }
144
+ } else if (tviscdata(key)) { /* Integer cdata key. */
145
+ GCcdata *cdk = cdataV(key);
146
+ CType *ctk = ctype_raw(cts, cdk->ctypeid);
147
+ if (ctype_isenum(ctk->info)) ctk = ctype_child(cts, ctk);
148
+ if (ctype_isinteger(ctk->info)) {
149
+ lj_cconv_ct_ct(cts, ctype_get(cts, CTID_INT_PSZ), ctk,
150
+ (uint8_t *)&idx, cdataptr(cdk), 0);
151
+ goto integer_key;
152
+ }
153
+ } else if (tvisstr(key)) { /* String key. */
154
+ GCstr *name = strV(key);
155
+ if (ctype_isstruct(ct->info)) {
156
+ CTSize ofs;
157
+ CType *fct = lj_ctype_getfieldq(cts, ct, name, &ofs, qual);
158
+ if (fct) {
159
+ *pp = p + ofs;
160
+ return fct;
161
+ }
162
+ } else if (ctype_iscomplex(ct->info)) {
163
+ if (name->len == 2) {
164
+ *qual |= CTF_CONST; /* Complex fields are constant. */
165
+ if (strdata(name)[0] == 'r' && strdata(name)[1] == 'e') {
166
+ *pp = p;
167
+ return ct;
168
+ } else if (strdata(name)[0] == 'i' && strdata(name)[1] == 'm') {
169
+ *pp = p + (ct->size >> 1);
170
+ return ct;
171
+ }
172
+ }
173
+ } else if (cd->ctypeid == CTID_CTYPEID) {
174
+ /* Allow indexing a (pointer to) struct constructor to get constants. */
175
+ CType *sct = ctype_raw(cts, *(CTypeID *)p);
176
+ if (ctype_isptr(sct->info))
177
+ sct = ctype_rawchild(cts, sct);
178
+ if (ctype_isstruct(sct->info)) {
179
+ CTSize ofs;
180
+ CType *fct = lj_ctype_getfield(cts, sct, name, &ofs);
181
+ if (fct && ctype_isconstval(fct->info))
182
+ return fct;
183
+ }
184
+ ct = sct; /* Allow resolving metamethods for constructors, too. */
185
+ }
186
+ }
187
+ if (ctype_isptr(ct->info)) { /* Automatically perform '->'. */
188
+ if (ctype_isstruct(ctype_rawchild(cts, ct)->info)) {
189
+ p = (uint8_t *)cdata_getptr(p, ct->size);
190
+ ct = ctype_child(cts, ct);
191
+ goto collect_attrib;
192
+ }
193
+ }
194
+ *qual |= 1; /* Lookup failed. */
195
+ return ct; /* But return the resolved raw type. */
196
+ }
197
+
198
+ /* -- C data getters ------------------------------------------------------ */
199
+
200
+ /* Get constant value and convert to TValue. */
201
+ static void cdata_getconst(CTState *cts, TValue *o, CType *ct)
202
+ {
203
+ CType *ctt = ctype_child(cts, ct);
204
+ lua_assert(ctype_isinteger(ctt->info) && ctt->size <= 4);
205
+ /* Constants are already zero-extended/sign-extended to 32 bits. */
206
+ if ((ctt->info & CTF_UNSIGNED) && (int32_t)ct->size < 0)
207
+ setnumV(o, (lua_Number)(uint32_t)ct->size);
208
+ else
209
+ setintV(o, (int32_t)ct->size);
210
+ }
211
+
212
+ /* Get C data value and convert to TValue. */
213
+ int lj_cdata_get(CTState *cts, CType *s, TValue *o, uint8_t *sp)
214
+ {
215
+ CTypeID sid;
216
+
217
+ if (ctype_isconstval(s->info)) {
218
+ cdata_getconst(cts, o, s);
219
+ return 0; /* No GC step needed. */
220
+ } else if (ctype_isbitfield(s->info)) {
221
+ return lj_cconv_tv_bf(cts, s, o, sp);
222
+ }
223
+
224
+ /* Get child type of pointer/array/field. */
225
+ lua_assert(ctype_ispointer(s->info) || ctype_isfield(s->info));
226
+ sid = ctype_cid(s->info);
227
+ s = ctype_get(cts, sid);
228
+
229
+ /* Resolve reference for field. */
230
+ if (ctype_isref(s->info)) {
231
+ lua_assert(s->size == CTSIZE_PTR);
232
+ sp = *(uint8_t **)sp;
233
+ sid = ctype_cid(s->info);
234
+ s = ctype_get(cts, sid);
235
+ }
236
+
237
+ /* Skip attributes. */
238
+ while (ctype_isattrib(s->info))
239
+ s = ctype_child(cts, s);
240
+
241
+ return lj_cconv_tv_ct(cts, s, sid, o, sp);
242
+ }
243
+
244
+ /* -- C data setters ------------------------------------------------------ */
245
+
246
+ /* Convert TValue and set C data value. */
247
+ void lj_cdata_set(CTState *cts, CType *d, uint8_t *dp, TValue *o, CTInfo qual)
248
+ {
249
+ if (ctype_isconstval(d->info)) {
250
+ goto err_const;
251
+ } else if (ctype_isbitfield(d->info)) {
252
+ if (((d->info|qual) & CTF_CONST)) goto err_const;
253
+ lj_cconv_bf_tv(cts, d, dp, o);
254
+ return;
255
+ }
256
+
257
+ /* Get child type of pointer/array/field. */
258
+ lua_assert(ctype_ispointer(d->info) || ctype_isfield(d->info));
259
+ d = ctype_child(cts, d);
260
+
261
+ /* Resolve reference for field. */
262
+ if (ctype_isref(d->info)) {
263
+ lua_assert(d->size == CTSIZE_PTR);
264
+ dp = *(uint8_t **)dp;
265
+ d = ctype_child(cts, d);
266
+ }
267
+
268
+ /* Skip attributes and collect qualifiers. */
269
+ for (;;) {
270
+ if (ctype_isattrib(d->info)) {
271
+ if (ctype_attrib(d->info) == CTA_QUAL) qual |= d->size;
272
+ } else {
273
+ break;
274
+ }
275
+ d = ctype_child(cts, d);
276
+ }
277
+
278
+ lua_assert(ctype_hassize(d->info) && !ctype_isvoid(d->info));
279
+
280
+ if (((d->info|qual) & CTF_CONST)) {
281
+ err_const:
282
+ lj_err_caller(cts->L, LJ_ERR_FFI_WRCONST);
283
+ }
284
+
285
+ lj_cconv_ct_tv(cts, d, dp, o, 0);
286
+ }
287
+
288
+ #endif
@@ -0,0 +1,76 @@
1
+ /*
2
+ ** C data management.
3
+ ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
4
+ */
5
+
6
+ #ifndef _LJ_CDATA_H
7
+ #define _LJ_CDATA_H
8
+
9
+ #include "lj_obj.h"
10
+ #include "lj_gc.h"
11
+ #include "lj_ctype.h"
12
+
13
+ #if LJ_HASFFI
14
+
15
+ /* Get C data pointer. */
16
+ static LJ_AINLINE void *cdata_getptr(void *p, CTSize sz)
17
+ {
18
+ if (LJ_64 && sz == 4) { /* Support 32 bit pointers on 64 bit targets. */
19
+ return ((void *)(uintptr_t)*(uint32_t *)p);
20
+ } else {
21
+ lua_assert(sz == CTSIZE_PTR);
22
+ return *(void **)p;
23
+ }
24
+ }
25
+
26
+ /* Set C data pointer. */
27
+ static LJ_AINLINE void cdata_setptr(void *p, CTSize sz, const void *v)
28
+ {
29
+ if (LJ_64 && sz == 4) { /* Support 32 bit pointers on 64 bit targets. */
30
+ *(uint32_t *)p = (uint32_t)(uintptr_t)v;
31
+ } else {
32
+ lua_assert(sz == CTSIZE_PTR);
33
+ *(void **)p = (void *)v;
34
+ }
35
+ }
36
+
37
+ /* Allocate fixed-size C data object. */
38
+ static LJ_AINLINE GCcdata *lj_cdata_new(CTState *cts, CTypeID id, CTSize sz)
39
+ {
40
+ GCcdata *cd;
41
+ #ifdef LUA_USE_ASSERT
42
+ CType *ct = ctype_raw(cts, id);
43
+ lua_assert((ctype_hassize(ct->info) ? ct->size : CTSIZE_PTR) == sz);
44
+ #endif
45
+ cd = (GCcdata *)lj_mem_newgco(cts->L, sizeof(GCcdata) + sz);
46
+ cd->gct = ~LJ_TCDATA;
47
+ cd->ctypeid = ctype_check(cts, id);
48
+ return cd;
49
+ }
50
+
51
+ /* Variant which works without a valid CTState. */
52
+ static LJ_AINLINE GCcdata *lj_cdata_new_(lua_State *L, CTypeID id, CTSize sz)
53
+ {
54
+ GCcdata *cd = (GCcdata *)lj_mem_newgco(L, sizeof(GCcdata) + sz);
55
+ cd->gct = ~LJ_TCDATA;
56
+ cd->ctypeid = id;
57
+ return cd;
58
+ }
59
+
60
+ LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id);
61
+ LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz,
62
+ CTSize align);
63
+
64
+ LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd);
65
+ LJ_FUNC void lj_cdata_setfin(lua_State *L, GCcdata *cd, GCobj *obj,
66
+ uint32_t it);
67
+
68
+ LJ_FUNC CType *lj_cdata_index(CTState *cts, GCcdata *cd, cTValue *key,
69
+ uint8_t **pp, CTInfo *qual);
70
+ LJ_FUNC int lj_cdata_get(CTState *cts, CType *s, TValue *o, uint8_t *sp);
71
+ LJ_FUNC void lj_cdata_set(CTState *cts, CType *d, uint8_t *dp, TValue *o,
72
+ CTInfo qual);
73
+
74
+ #endif
75
+
76
+ #endif
@@ -0,0 +1,43 @@
1
+ /*
2
+ ** Character types.
3
+ ** Donated to the public domain.
4
+ **
5
+ ** This is intended to replace the problematic libc single-byte NLS functions.
6
+ ** These just don't make sense anymore with UTF-8 locales becoming the norm
7
+ ** on POSIX systems. It never worked too well on Windows systems since hardly
8
+ ** anyone bothered to call setlocale().
9
+ **
10
+ ** This table is hardcoded for ASCII. Identifiers include the characters
11
+ ** 128-255, too. This allows for the use of all non-ASCII chars as identifiers
12
+ ** in the lexer. This is a broad definition, but works well in practice
13
+ ** for both UTF-8 locales and most single-byte locales (such as ISO-8859-*).
14
+ **
15
+ ** If you really need proper character types for UTF-8 strings, please use
16
+ ** an add-on library such as slnunicode: http://luaforge.net/projects/sln/
17
+ */
18
+
19
+ #define lj_char_c
20
+ #define LUA_CORE
21
+
22
+ #include "lj_char.h"
23
+
24
+ LJ_DATADEF const uint8_t lj_char_bits[257] = {
25
+ 0,
26
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1,
27
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
28
+ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
29
+ 152,152,152,152,152,152,152,152,152,152, 4, 4, 4, 4, 4, 4,
30
+ 4,176,176,176,176,176,176,160,160,160,160,160,160,160,160,160,
31
+ 160,160,160,160,160,160,160,160,160,160,160, 4, 4, 4, 4,132,
32
+ 4,208,208,208,208,208,208,192,192,192,192,192,192,192,192,192,
33
+ 192,192,192,192,192,192,192,192,192,192,192, 4, 4, 4, 4, 1,
34
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
35
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
36
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
37
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
38
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
39
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
40
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
41
+ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128
42
+ };
43
+