immunio 1.2.1 → 2.0.2

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 (291) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -5
  3. data/ext/immunio/Rakefile +14 -6
  4. data/lib/immunio/context.rb +2 -0
  5. data/lib/immunio/plugins/action_view.rb +7 -668
  6. data/lib/immunio/plugins/action_view/action_view.rb +22 -0
  7. data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
  8. data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
  9. data/lib/immunio/plugins/action_view/erubi.rb +38 -0
  10. data/lib/immunio/plugins/action_view/erubis.rb +39 -0
  11. data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
  12. data/lib/immunio/plugins/action_view/haml.rb +46 -0
  13. data/lib/immunio/plugins/action_view/slim.rb +42 -0
  14. data/lib/immunio/plugins/action_view/template.rb +431 -0
  15. data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
  16. data/lib/immunio/plugins/http_tracker.rb +2 -0
  17. data/lib/immunio/plugins/io.rb +34 -0
  18. data/lib/immunio/version.rb +1 -1
  19. data/lua-hooks/Makefile +36 -9
  20. data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
  21. data/lua-hooks/ext/luajit/Makefile +22 -15
  22. data/lua-hooks/ext/luajit/README +2 -2
  23. data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
  24. data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
  25. data/lua-hooks/ext/luajit/doc/changes.html +69 -3
  26. data/lua-hooks/ext/luajit/doc/contact.html +10 -3
  27. data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
  28. data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
  29. data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
  30. data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
  31. data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
  32. data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
  33. data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
  34. data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
  35. data/lua-hooks/ext/luajit/doc/faq.html +2 -2
  36. data/lua-hooks/ext/luajit/doc/install.html +74 -45
  37. data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
  38. data/lua-hooks/ext/luajit/doc/running.html +3 -3
  39. data/lua-hooks/ext/luajit/doc/status.html +13 -8
  40. data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
  41. data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
  42. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
  43. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
  44. data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
  45. data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
  46. data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
  47. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
  48. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
  49. data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
  50. data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
  51. data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
  52. data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
  53. data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
  54. data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
  55. data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
  56. data/lua-hooks/ext/luajit/src/Makefile +15 -11
  57. data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
  58. data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
  59. data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
  60. data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
  61. data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
  62. data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
  63. data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
  64. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
  65. data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
  66. data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
  67. data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
  68. data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
  69. data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
  70. data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
  71. data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
  72. data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
  73. data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
  74. data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
  75. data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
  76. data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
  77. data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
  78. data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
  79. data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
  80. data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
  81. data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
  82. data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
  83. data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
  84. data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
  85. data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
  86. data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
  87. data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
  88. data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
  89. data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
  90. data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
  91. data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
  92. data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
  93. data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
  94. data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
  95. data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
  96. data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
  97. data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
  98. data/lua-hooks/ext/luajit/src/lj.supp +3 -3
  99. data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
  100. data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
  101. data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
  102. data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
  103. data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
  104. data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
  105. data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
  106. data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
  107. data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
  108. data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
  109. data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
  110. data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
  111. data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
  112. data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
  113. data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
  114. data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
  115. data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
  116. data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
  117. data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
  118. data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
  119. data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
  120. data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
  121. data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
  122. data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
  123. data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
  124. data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
  125. data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
  126. data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
  127. data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
  128. data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
  129. data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
  130. data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
  131. data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
  132. data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
  133. data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
  134. data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
  135. data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
  136. data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
  137. data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
  138. data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
  139. data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
  140. data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
  141. data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
  142. data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
  143. data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
  144. data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
  145. data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
  146. data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
  147. data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
  148. data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
  149. data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
  150. data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
  151. data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
  152. data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
  153. data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
  154. data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
  155. data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
  156. data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
  157. data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
  158. data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
  159. data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
  160. data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
  161. data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
  162. data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
  163. data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
  164. data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
  165. data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
  166. data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
  167. data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
  168. data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
  169. data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
  170. data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
  171. data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
  172. data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
  173. data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
  174. data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
  175. data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
  176. data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
  177. data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
  178. data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
  179. data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
  180. data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
  181. data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
  182. data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
  183. data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
  184. data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
  185. data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
  186. data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
  187. data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
  188. data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
  189. data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
  190. data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
  191. data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
  192. data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
  193. data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
  194. data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
  195. data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
  196. data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
  197. data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
  198. data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
  199. data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
  200. data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
  201. data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
  202. data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
  203. data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
  204. data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
  205. data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
  206. data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
  207. data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
  208. data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
  209. data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
  210. data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
  211. data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
  212. data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
  213. data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
  214. data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
  215. data/lua-hooks/ext/luajit/src/lua.h +9 -1
  216. data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
  217. data/lua-hooks/ext/luajit/src/luajit.c +69 -54
  218. data/lua-hooks/ext/luajit/src/luajit.h +4 -4
  219. data/lua-hooks/ext/luajit/src/lualib.h +1 -1
  220. data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
  221. data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
  222. data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
  223. data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
  224. data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
  225. data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
  226. data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
  227. data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
  228. data/lua-hooks/libluahooks.darwin.a +0 -0
  229. data/lua-hooks/libluahooks.linux.a +0 -0
  230. data/lua-hooks/options.mk +1 -1
  231. metadata +37 -77
  232. data/lua-hooks/ext/all.c +0 -69
  233. data/lua-hooks/ext/libinjection/COPYING +0 -37
  234. data/lua-hooks/ext/libinjection/libinjection.h +0 -65
  235. data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
  236. data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
  237. data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
  238. data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
  239. data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
  240. data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
  241. data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
  242. data/lua-hooks/ext/libinjection/lualib.c +0 -145
  243. data/lua-hooks/ext/libinjection/module.mk +0 -5
  244. data/lua-hooks/ext/lpeg/HISTORY +0 -96
  245. data/lua-hooks/ext/lpeg/lpcap.c +0 -537
  246. data/lua-hooks/ext/lpeg/lpcap.h +0 -56
  247. data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
  248. data/lua-hooks/ext/lpeg/lpcode.h +0 -40
  249. data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
  250. data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
  251. data/lua-hooks/ext/lpeg/lpprint.c +0 -244
  252. data/lua-hooks/ext/lpeg/lpprint.h +0 -36
  253. data/lua-hooks/ext/lpeg/lptree.c +0 -1303
  254. data/lua-hooks/ext/lpeg/lptree.h +0 -82
  255. data/lua-hooks/ext/lpeg/lptypes.h +0 -149
  256. data/lua-hooks/ext/lpeg/lpvm.c +0 -364
  257. data/lua-hooks/ext/lpeg/lpvm.h +0 -58
  258. data/lua-hooks/ext/lpeg/makefile +0 -55
  259. data/lua-hooks/ext/lpeg/module.mk +0 -6
  260. data/lua-hooks/ext/lpeg/re.html +0 -498
  261. data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
  262. data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
  263. data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
  264. data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
  265. data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
  266. data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
  267. data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
  268. data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
  269. data/lua-hooks/ext/lua-snapshot/README.md +0 -18
  270. data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
  271. data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
  272. data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
  273. data/lua-hooks/ext/luautf8/README.md +0 -152
  274. data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
  275. data/lua-hooks/ext/luautf8/module.mk +0 -2
  276. data/lua-hooks/ext/luautf8/unidata.h +0 -3064
  277. data/lua-hooks/ext/module.mk +0 -15
  278. data/lua-hooks/ext/modules.h +0 -17
  279. data/lua-hooks/ext/perf/luacpu.c +0 -114
  280. data/lua-hooks/ext/perf/lualoadavg.c +0 -40
  281. data/lua-hooks/ext/perf/luameminfo.c +0 -38
  282. data/lua-hooks/ext/perf/luaoslib.c +0 -203
  283. data/lua-hooks/ext/perf/module.mk +0 -5
  284. data/lua-hooks/ext/sha1/luasha1.c +0 -74
  285. data/lua-hooks/ext/sha1/module.mk +0 -5
  286. data/lua-hooks/ext/sha1/sha1.c +0 -145
  287. data/lua-hooks/ext/sha2/luasha256.c +0 -77
  288. data/lua-hooks/ext/sha2/module.mk +0 -5
  289. data/lua-hooks/ext/sha2/sha256.c +0 -196
  290. data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
  291. data/lua-hooks/ext/sysutils/module.mk +0 -2
@@ -4,7 +4,7 @@
4
4
  <title>LuaJIT</title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6
6
  <meta name="Author" content="Mike Pall">
7
- <meta name="Copyright" content="Copyright (C) 2005-2016, Mike Pall">
7
+ <meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
8
8
  <meta name="Language" content="en">
9
9
  <link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
10
10
  <link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
@@ -152,7 +152,7 @@ Lua is a powerful, dynamic and light-weight programming language.
152
152
  It may be embedded or used as a general-purpose, stand-alone language.
153
153
  </p>
154
154
  <p>
155
- LuaJIT is Copyright &copy; 2005-2016 Mike Pall, released under the
155
+ LuaJIT is Copyright &copy; 2005-2017 Mike Pall, released under the
156
156
  <a href="http://www.opensource.org/licenses/mit-license.php"><span class="ext">&raquo;</span>&nbsp;MIT open source license</a>.
157
157
  </p>
158
158
  <p>
@@ -169,10 +169,10 @@ LuaJIT is Copyright &copy; 2005-2016 Mike Pall, released under the
169
169
  <tr><td>PS3</td><td>PS4</td><td>PS Vita</td><td>Xbox 360</td><td>Xbox One</td></tr>
170
170
  </table>
171
171
  <table class="feature compiler">
172
- <tr><td>GCC</td><td>CLANG<br>LLVM</td><td>MSVC</td></tr>
172
+ <tr><td>GCC</td><td>Clang<br>LLVM</td><td>MSVC</td></tr>
173
173
  </table>
174
174
  <table class="feature cpu">
175
- <tr><td>x86</td><td>x64</td><td>ARM</td><td>ARM64</td><td>PPC</td><td>MIPS</td></tr>
175
+ <tr><td>x86<br>x64</td><td>ARM<br>ARM64</td><td>PPC</td><td>MIPS32<br>MIPS64</td></tr>
176
176
  </table>
177
177
  <table class="feature fcompat">
178
178
  <tr><td>Lua&nbsp;5.1<br>API+ABI</td><td>+&nbsp;JIT</td><td>+&nbsp;BitOp</td><td>+&nbsp;FFI</td><td>Drop-in<br>DLL/.so</td></tr>
@@ -226,7 +226,7 @@ Please select a sub-topic in the navigation bar to learn more about LuaJIT.
226
226
  </div>
227
227
  <div id="foot">
228
228
  <hr class="hide">
229
- Copyright &copy; 2005-2016 Mike Pall
229
+ Copyright &copy; 2005-2017 Mike Pall
230
230
  <span class="noprint">
231
231
  &middot;
232
232
  <a href="contact.html">Contact</a>
@@ -4,7 +4,7 @@
4
4
  <title>Running LuaJIT</title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6
6
  <meta name="Author" content="Mike Pall">
7
- <meta name="Copyright" content="Copyright (C) 2005-2016, Mike Pall">
7
+ <meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
8
8
  <meta name="Language" content="en">
9
9
  <link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
10
10
  <link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
@@ -189,7 +189,7 @@ itself. For a description of their options and output format, please
189
189
  read the comment block at the start of their source.
190
190
  They can be found in the <tt>lib</tt> directory of the source
191
191
  distribution or installed under the <tt>jit</tt> directory. By default
192
- this is <tt>/usr/local/share/luajit-2.0.4/jit</tt> on POSIX
192
+ this is <tt>/usr/local/share/luajit-2.0.5/jit</tt> on POSIX
193
193
  systems.
194
194
  </p>
195
195
 
@@ -299,7 +299,7 @@ Here are the parameters and their default settings:
299
299
  </div>
300
300
  <div id="foot">
301
301
  <hr class="hide">
302
- Copyright &copy; 2005-2016 Mike Pall
302
+ Copyright &copy; 2005-2017 Mike Pall
303
303
  <span class="noprint">
304
304
  &middot;
305
305
  <a href="contact.html">Contact</a>
@@ -4,7 +4,7 @@
4
4
  <title>Status</title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6
6
  <meta name="Author" content="Mike Pall">
7
- <meta name="Copyright" content="Copyright (C) 2005-2016, Mike Pall">
7
+ <meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
8
8
  <meta name="Language" content="en">
9
9
  <link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
10
10
  <link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
@@ -91,24 +91,29 @@ hooks for non-Lua functions) and shows slightly different behavior
91
91
  in LuaJIT (no per-coroutine hooks, no tail call counting).
92
92
  </li>
93
93
  <li>
94
- Some checks are missing in the JIT-compiled code for obscure situations
95
- with <b>open upvalues aliasing</b> one of the SSA slots later on (or
96
- vice versa). Bonus points, if you can find a real world test case for
97
- this.
98
- </li>
99
- <li>
100
94
  Currently some <b>out-of-memory</b> errors from <b>on-trace code</b> are not
101
95
  handled correctly. The error may fall through an on-trace
102
96
  <tt>pcall</tt> or it may be passed on to the function set with
103
97
  <tt>lua_atpanic</tt> on x64. This issue will be fixed with the new
104
98
  garbage collector.
105
99
  </li>
100
+ <li>
101
+ LuaJIT on 64 bit systems provides a <b>limited range</b> of 47 bits for the
102
+ <b>legacy <tt>lightuserdata</tt></b> data type.
103
+ This is only relevant on x64 systems which use the negative part of the
104
+ virtual address space in user mode, e.g. Solaris/x64, and on ARM64 systems
105
+ configured with a 48 bit or 52 bit VA.
106
+ Avoid using <tt>lightuserdata</tt> to hold pointers that may point outside
107
+ of that range, e.g. variables on the stack. In general, avoid this data
108
+ type for new code and replace it with (much more performant) FFI bindings.
109
+ FFI cdata pointers can address the full 64 bit range.
110
+ </li>
106
111
  </ul>
107
112
  <br class="flush">
108
113
  </div>
109
114
  <div id="foot">
110
115
  <hr class="hide">
111
- Copyright &copy; 2005-2016 Mike Pall
116
+ Copyright &copy; 2005-2017 Mike Pall
112
117
  <span class="noprint">
113
118
  &middot;
114
119
  <a href="contact.html">Contact</a>
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** DynASM ARM encoding engine.
3
- ** Copyright (C) 2005-2016 Mike Pall. All rights reserved.
3
+ ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
4
4
  ** Released under the MIT license. See dynasm.lua for full copyright notice.
5
5
  */
6
6
 
@@ -1,7 +1,7 @@
1
1
  ------------------------------------------------------------------------------
2
2
  -- DynASM ARM module.
3
3
  --
4
- -- Copyright (C) 2005-2016 Mike Pall. All rights reserved.
4
+ -- Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
5
  -- See dynasm.lua for full copyright notice.
6
6
  ------------------------------------------------------------------------------
7
7
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** DynASM ARM64 encoding engine.
3
- ** Copyright (C) 2005-2016 Mike Pall. All rights reserved.
3
+ ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
4
4
  ** Released under the MIT license. See dynasm.lua for full copyright notice.
5
5
  */
6
6
 
@@ -1,7 +1,7 @@
1
1
  ------------------------------------------------------------------------------
2
2
  -- DynASM ARM64 module.
3
3
  --
4
- -- Copyright (C) 2005-2016 Mike Pall. All rights reserved.
4
+ -- Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
5
  -- See dynasm.lua for full copyright notice.
6
6
  ------------------------------------------------------------------------------
7
7
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** DynASM MIPS encoding engine.
3
- ** Copyright (C) 2005-2016 Mike Pall. All rights reserved.
3
+ ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
4
4
  ** Released under the MIT license. See dynasm.lua for full copyright notice.
5
5
  */
6
6
 
@@ -21,7 +21,7 @@ enum {
21
21
  /* The following actions need a buffer position. */
22
22
  DASM_ALIGN, DASM_REL_LG, DASM_LABEL_LG,
23
23
  /* The following actions also have an argument. */
24
- DASM_REL_PC, DASM_LABEL_PC, DASM_IMM,
24
+ DASM_REL_PC, DASM_LABEL_PC, DASM_IMM, DASM_IMMS,
25
25
  DASM__MAX
26
26
  };
27
27
 
@@ -231,7 +231,7 @@ void dasm_put(Dst_DECL, int start, ...)
231
231
  *pl = -pos; /* Label exists now. */
232
232
  b[pos++] = ofs; /* Store pass1 offset estimate. */
233
233
  break;
234
- case DASM_IMM:
234
+ case DASM_IMM: case DASM_IMMS:
235
235
  #ifdef DASM_CHECKS
236
236
  CK((n & ((1<<((ins>>10)&31))-1)) == 0, RANGE_I);
237
237
  #endif
@@ -299,7 +299,7 @@ int dasm_link(Dst_DECL, size_t *szp)
299
299
  case DASM_ALIGN: ofs -= (b[pos++] + ofs) & (ins & 255); break;
300
300
  case DASM_REL_LG: case DASM_REL_PC: pos++; break;
301
301
  case DASM_LABEL_LG: case DASM_LABEL_PC: b[pos++] += ofs; break;
302
- case DASM_IMM: pos++; break;
302
+ case DASM_IMM: case DASM_IMMS: pos++; break;
303
303
  }
304
304
  }
305
305
  stop: (void)0;
@@ -356,7 +356,7 @@ int dasm_encode(Dst_DECL, void *buffer)
356
356
  if (ins & 2048)
357
357
  n = n - (int)((char *)cp - base);
358
358
  else
359
- n = (n + (int)base) & 0x0fffffff;
359
+ n = (n + (int)(size_t)base) & 0x0fffffff;
360
360
  patchrel:
361
361
  CK((n & 3) == 0 &&
362
362
  ((n + ((ins & 2048) ? 0x00020000 : 0)) >>
@@ -367,6 +367,9 @@ int dasm_encode(Dst_DECL, void *buffer)
367
367
  ins &= 2047; if (ins >= 20) D->globals[ins-10] = (void *)(base + n);
368
368
  break;
369
369
  case DASM_LABEL_PC: break;
370
+ case DASM_IMMS:
371
+ cp[-1] |= ((n>>3) & 4); n &= 0x1f;
372
+ /* fallthrough */
370
373
  case DASM_IMM:
371
374
  cp[-1] |= (n & ((1<<((ins>>5)&31))-1)) << (ins&31);
372
375
  break;
@@ -1,17 +1,19 @@
1
1
  ------------------------------------------------------------------------------
2
- -- DynASM MIPS module.
2
+ -- DynASM MIPS32/MIPS64 module.
3
3
  --
4
- -- Copyright (C) 2005-2016 Mike Pall. All rights reserved.
4
+ -- Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
5
  -- See dynasm.lua for full copyright notice.
6
6
  ------------------------------------------------------------------------------
7
7
 
8
+ local mips64 = mips64
9
+
8
10
  -- Module information:
9
11
  local _info = {
10
- arch = "mips",
11
- description = "DynASM MIPS module",
12
+ arch = mips64 and "mips64" or "mips",
13
+ description = "DynASM MIPS32/MIPS64 module",
12
14
  version = "1.4.0",
13
15
  vernum = 10400,
14
- release = "2015-10-18",
16
+ release = "2016-05-24",
15
17
  author = "Mike Pall",
16
18
  license = "MIT",
17
19
  }
@@ -27,7 +29,8 @@ local sub, format, byte, char = _s.sub, _s.format, _s.byte, _s.char
27
29
  local match, gmatch = _s.match, _s.gmatch
28
30
  local concat, sort = table.concat, table.sort
29
31
  local bit = bit or require("bit")
30
- local band, shl, sar, tohex = bit.band, bit.lshift, bit.arshift, bit.tohex
32
+ local band, shl, shr, sar = bit.band, bit.lshift, bit.rshift, bit.arshift
33
+ local tohex = bit.tohex
31
34
 
32
35
  -- Inherited tables and callbacks.
33
36
  local g_opt, g_arch
@@ -38,7 +41,7 @@ local wline, werror, wfatal, wwarn
38
41
  local action_names = {
39
42
  "STOP", "SECTION", "ESC", "REL_EXT",
40
43
  "ALIGN", "REL_LG", "LABEL_LG",
41
- "REL_PC", "LABEL_PC", "IMM",
44
+ "REL_PC", "LABEL_PC", "IMM", "IMMS",
42
45
  }
43
46
 
44
47
  -- Maximum number of section buffer positions for dasm_put().
@@ -251,6 +254,10 @@ local map_op = {
251
254
  bnel_3 = "54000000STB",
252
255
  blezl_2 = "58000000SB",
253
256
  bgtzl_2 = "5c000000SB",
257
+ daddi_3 = mips64 and "60000000TSI",
258
+ daddiu_3 = mips64 and "64000000TSI",
259
+ ldl_2 = mips64 and "68000000TO",
260
+ ldr_2 = mips64 and "6c000000TO",
254
261
  lb_2 = "80000000TO",
255
262
  lh_2 = "84000000TO",
256
263
  lwl_2 = "88000000TO",
@@ -258,23 +265,30 @@ local map_op = {
258
265
  lbu_2 = "90000000TO",
259
266
  lhu_2 = "94000000TO",
260
267
  lwr_2 = "98000000TO",
268
+ lwu_2 = mips64 and "9c000000TO",
261
269
  sb_2 = "a0000000TO",
262
270
  sh_2 = "a4000000TO",
263
271
  swl_2 = "a8000000TO",
264
272
  sw_2 = "ac000000TO",
273
+ sdl_2 = mips64 and "b0000000TO",
274
+ sdr_2 = mips64 and "b1000000TO",
265
275
  swr_2 = "b8000000TO",
266
276
  cache_2 = "bc000000NO",
267
277
  ll_2 = "c0000000TO",
268
278
  lwc1_2 = "c4000000HO",
269
279
  pref_2 = "cc000000NO",
270
280
  ldc1_2 = "d4000000HO",
281
+ ld_2 = mips64 and "dc000000TO",
271
282
  sc_2 = "e0000000TO",
272
283
  swc1_2 = "e4000000HO",
284
+ scd_2 = mips64 and "f0000000TO",
273
285
  sdc1_2 = "f4000000HO",
286
+ sd_2 = mips64 and "fc000000TO",
274
287
 
275
288
  -- Opcode SPECIAL.
276
289
  nop_0 = "00000000",
277
290
  sll_3 = "00000000DTA",
291
+ sextw_2 = "00000000DT",
278
292
  movf_2 = "00000001DS",
279
293
  movf_3 = "00000001DSC",
280
294
  movt_2 = "00010001DS",
@@ -285,6 +299,7 @@ local map_op = {
285
299
  sllv_3 = "00000004DTS",
286
300
  srlv_3 = "00000006DTS",
287
301
  rotrv_3 = "00000046DTS",
302
+ drotrv_3 = mips64 and "00000056DTS",
288
303
  srav_3 = "00000007DTS",
289
304
  jr_1 = "00000008S",
290
305
  jalr_1 = "0000f809S",
@@ -300,15 +315,22 @@ local map_op = {
300
315
  mthi_1 = "00000011S",
301
316
  mflo_1 = "00000012D",
302
317
  mtlo_1 = "00000013S",
318
+ dsllv_3 = mips64 and "00000014DTS",
319
+ dsrlv_3 = mips64 and "00000016DTS",
320
+ dsrav_3 = mips64 and "00000017DTS",
303
321
  mult_2 = "00000018ST",
304
322
  multu_2 = "00000019ST",
305
323
  div_2 = "0000001aST",
306
324
  divu_2 = "0000001bST",
325
+ dmult_2 = mips64 and "0000001cST",
326
+ dmultu_2 = mips64 and "0000001dST",
327
+ ddiv_2 = mips64 and "0000001eST",
328
+ ddivu_2 = mips64 and "0000001fST",
307
329
  add_3 = "00000020DST",
308
- move_2 = "00000021DS",
330
+ move_2 = mips64 and "00000025DS" or "00000021DS",
309
331
  addu_3 = "00000021DST",
310
332
  sub_3 = "00000022DST",
311
- negu_2 = "00000023DT",
333
+ negu_2 = mips64 and "0000002fDT" or "00000023DT",
312
334
  subu_3 = "00000023DST",
313
335
  and_3 = "00000024DST",
314
336
  or_3 = "00000025DST",
@@ -317,6 +339,10 @@ local map_op = {
317
339
  nor_3 = "00000027DST",
318
340
  slt_3 = "0000002aDST",
319
341
  sltu_3 = "0000002bDST",
342
+ dadd_3 = mips64 and "0000002cDST",
343
+ daddu_3 = mips64 and "0000002dDST",
344
+ dsub_3 = mips64 and "0000002eDST",
345
+ dsubu_3 = mips64 and "0000002fDST",
320
346
  tge_2 = "00000030ST",
321
347
  tge_3 = "00000030STZ",
322
348
  tgeu_2 = "00000031ST",
@@ -329,6 +355,14 @@ local map_op = {
329
355
  teq_3 = "00000034STZ",
330
356
  tne_2 = "00000036ST",
331
357
  tne_3 = "00000036STZ",
358
+ dsll_3 = mips64 and "00000038DTa",
359
+ dsrl_3 = mips64 and "0000003aDTa",
360
+ drotr_3 = mips64 and "0020003aDTa",
361
+ dsra_3 = mips64 and "0000003bDTa",
362
+ dsll32_3 = mips64 and "0000003cDTA",
363
+ dsrl32_3 = mips64 and "0000003eDTA",
364
+ drotr32_3 = mips64 and "0020003eDTA",
365
+ dsra32_3 = mips64 and "0000003fDTA",
332
366
 
333
367
  -- Opcode REGIMM.
334
368
  bltz_2 = "04000000SB",
@@ -356,13 +390,24 @@ local map_op = {
356
390
  msubu_2 = "70000005ST",
357
391
  clz_2 = "70000020DS=",
358
392
  clo_2 = "70000021DS=",
393
+ dclz_2 = mips64 and "70000024DS=",
394
+ dclo_2 = mips64 and "70000025DS=",
359
395
  sdbbp_0 = "7000003f",
360
396
  sdbbp_1 = "7000003fY",
361
397
 
362
398
  -- Opcode SPECIAL3.
363
399
  ext_4 = "7c000000TSAM", -- Note: last arg is msbd = size-1
400
+ dextm_4 = mips64 and "7c000001TSAM", -- Args: pos | size-1-32
401
+ dextu_4 = mips64 and "7c000002TSAM", -- Args: pos-32 | size-1
402
+ dext_4 = mips64 and "7c000003TSAM", -- Args: pos | size-1
403
+ zextw_2 = mips64 and "7c00f803TS",
364
404
  ins_4 = "7c000004TSAM", -- Note: last arg is msb = pos+size-1
405
+ dinsm_4 = mips64 and "7c000005TSAM", -- Args: pos | pos+size-33
406
+ dinsu_4 = mips64 and "7c000006TSAM", -- Args: pos-32 | pos+size-33
407
+ dins_4 = mips64 and "7c000007TSAM", -- Args: pos | pos+size-1
365
408
  wsbh_2 = "7c0000a0DT",
409
+ dsbh_2 = mips64 and "7c0000a4DT",
410
+ dshd_2 = mips64 and "7c000164DT",
366
411
  seb_2 = "7c000420DT",
367
412
  seh_2 = "7c000620DT",
368
413
  rdhwr_2 = "7c00003bTD",
@@ -370,8 +415,12 @@ local map_op = {
370
415
  -- Opcode COP0.
371
416
  mfc0_2 = "40000000TD",
372
417
  mfc0_3 = "40000000TDW",
418
+ dmfc0_2 = mips64 and "40200000TD",
419
+ dmfc0_3 = mips64 and "40200000TDW",
373
420
  mtc0_2 = "40800000TD",
374
421
  mtc0_3 = "40800000TDW",
422
+ dmtc0_2 = mips64 and "40a00000TD",
423
+ dmtc0_3 = mips64 and "40a00000TDW",
375
424
  rdpgpr_2 = "41400000DT",
376
425
  di_0 = "41606000",
377
426
  di_1 = "41606000T",
@@ -388,9 +437,11 @@ local map_op = {
388
437
 
389
438
  -- Opcode COP1.
390
439
  mfc1_2 = "44000000TG",
440
+ dmfc1_2 = mips64 and "44200000TG",
391
441
  cfc1_2 = "44400000TG",
392
442
  mfhc1_2 = "44600000TG",
393
443
  mtc1_2 = "44800000TG",
444
+ dmtc1_2 = mips64 and "44a00000TG",
394
445
  ctc1_2 = "44c00000TG",
395
446
  mthc1_2 = "44e00000TG",
396
447
 
@@ -633,7 +684,7 @@ local function parse_fpr(expr)
633
684
  werror("bad register name `"..expr.."'")
634
685
  end
635
686
 
636
- local function parse_imm(imm, bits, shift, scale, signed)
687
+ local function parse_imm(imm, bits, shift, scale, signed, action)
637
688
  local n = tonumber(imm)
638
689
  if n then
639
690
  local m = sar(n, scale)
@@ -651,7 +702,8 @@ local function parse_imm(imm, bits, shift, scale, signed)
651
702
  match(imm, "^([%w_]+):([rf][1-3]?[0-9])$") then
652
703
  werror("expected immediate operand, got register")
653
704
  else
654
- waction("IMM", (signed and 32768 or 0)+scale*1024+bits*32+shift, imm)
705
+ waction(action or "IMM",
706
+ (signed and 32768 or 0)+shl(scale, 10)+shl(bits, 5)+shift, imm)
655
707
  return 0
656
708
  end
657
709
  end
@@ -763,6 +815,9 @@ map_op[".template__"] = function(params, template, nparams)
763
815
  n = n + 1
764
816
  elseif p == "A" then
765
817
  op = op + parse_imm(params[n], 5, 6, 0, false); n = n + 1
818
+ elseif p == "a" then
819
+ local m = parse_imm(params[n], 6, 6, 0, false, "IMMS"); n = n + 1
820
+ op = op + band(m, 0x7c0) + band(shr(m, 9), 4)
766
821
  elseif p == "M" then
767
822
  op = op + parse_imm(params[n], 5, 11, 0, false); n = n + 1
768
823
  elseif p == "N" then
@@ -0,0 +1,12 @@
1
+ ------------------------------------------------------------------------------
2
+ -- DynASM MIPS64 module.
3
+ --
4
+ -- Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
+ -- See dynasm.lua for full copyright notice.
6
+ ------------------------------------------------------------------------------
7
+ -- This module just sets 64 bit mode for the combined MIPS/MIPS64 module.
8
+ -- All the interesting stuff is there.
9
+ ------------------------------------------------------------------------------
10
+
11
+ mips64 = true -- Using a global is an ugly, but effective solution.
12
+ return require("dasm_mips")
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** DynASM PPC/PPC64 encoding engine.
3
- ** Copyright (C) 2005-2016 Mike Pall. All rights reserved.
3
+ ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
4
4
  ** Released under the MIT license. See dynasm.lua for full copyright notice.
5
5
  */
6
6
 
@@ -1,7 +1,7 @@
1
1
  ------------------------------------------------------------------------------
2
2
  -- DynASM PPC/PPC64 module.
3
3
  --
4
- -- Copyright (C) 2005-2016 Mike Pall. All rights reserved.
4
+ -- Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
5
  -- See dynasm.lua for full copyright notice.
6
6
  --
7
7
  -- Support for various extensions contributed by Caio Souza Oliveira.