immunio 1.2.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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.