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.
- checksums.yaml +4 -4
- data/README.md +13 -5
- data/ext/immunio/Rakefile +14 -6
- data/lib/immunio/context.rb +2 -0
- data/lib/immunio/plugins/action_view.rb +7 -668
- data/lib/immunio/plugins/action_view/action_view.rb +22 -0
- data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
- data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
- data/lib/immunio/plugins/action_view/erubi.rb +38 -0
- data/lib/immunio/plugins/action_view/erubis.rb +39 -0
- data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
- data/lib/immunio/plugins/action_view/haml.rb +46 -0
- data/lib/immunio/plugins/action_view/slim.rb +42 -0
- data/lib/immunio/plugins/action_view/template.rb +431 -0
- data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
- data/lib/immunio/plugins/http_tracker.rb +2 -0
- data/lib/immunio/plugins/io.rb +34 -0
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +36 -9
- data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
- data/lua-hooks/ext/luajit/Makefile +22 -15
- data/lua-hooks/ext/luajit/README +2 -2
- data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
- data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
- data/lua-hooks/ext/luajit/doc/changes.html +69 -3
- data/lua-hooks/ext/luajit/doc/contact.html +10 -3
- data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
- data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
- data/lua-hooks/ext/luajit/doc/faq.html +2 -2
- data/lua-hooks/ext/luajit/doc/install.html +74 -45
- data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
- data/lua-hooks/ext/luajit/doc/running.html +3 -3
- data/lua-hooks/ext/luajit/doc/status.html +13 -8
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
- data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
- data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
- data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
- data/lua-hooks/ext/luajit/src/Makefile +15 -11
- data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
- data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
- data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
- data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
- data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
- data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
- data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
- data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
- data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
- data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
- data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
- data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
- data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
- data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
- data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
- data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
- data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
- data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
- data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
- data/lua-hooks/ext/luajit/src/lj.supp +3 -3
- data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
- data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
- data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
- data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
- data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
- data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
- data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
- data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
- data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
- data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
- data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
- data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
- data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
- data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
- data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
- data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
- data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
- data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
- data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
- data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
- data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
- data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
- data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
- data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
- data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
- data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
- data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
- data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
- data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
- data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
- data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
- data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
- data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
- data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
- data/lua-hooks/ext/luajit/src/lua.h +9 -1
- data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
- data/lua-hooks/ext/luajit/src/luajit.c +69 -54
- data/lua-hooks/ext/luajit/src/luajit.h +4 -4
- data/lua-hooks/ext/luajit/src/lualib.h +1 -1
- data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
- data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
- data/lua-hooks/libluahooks.darwin.a +0 -0
- data/lua-hooks/libluahooks.linux.a +0 -0
- data/lua-hooks/options.mk +1 -1
- metadata +37 -77
- data/lua-hooks/ext/all.c +0 -69
- data/lua-hooks/ext/libinjection/COPYING +0 -37
- data/lua-hooks/ext/libinjection/libinjection.h +0 -65
- data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
- data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
- data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
- data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
- data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
- data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
- data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
- data/lua-hooks/ext/libinjection/lualib.c +0 -145
- data/lua-hooks/ext/libinjection/module.mk +0 -5
- data/lua-hooks/ext/lpeg/HISTORY +0 -96
- data/lua-hooks/ext/lpeg/lpcap.c +0 -537
- data/lua-hooks/ext/lpeg/lpcap.h +0 -56
- data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
- data/lua-hooks/ext/lpeg/lpcode.h +0 -40
- data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
- data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
- data/lua-hooks/ext/lpeg/lpprint.c +0 -244
- data/lua-hooks/ext/lpeg/lpprint.h +0 -36
- data/lua-hooks/ext/lpeg/lptree.c +0 -1303
- data/lua-hooks/ext/lpeg/lptree.h +0 -82
- data/lua-hooks/ext/lpeg/lptypes.h +0 -149
- data/lua-hooks/ext/lpeg/lpvm.c +0 -364
- data/lua-hooks/ext/lpeg/lpvm.h +0 -58
- data/lua-hooks/ext/lpeg/makefile +0 -55
- data/lua-hooks/ext/lpeg/module.mk +0 -6
- data/lua-hooks/ext/lpeg/re.html +0 -498
- data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
- data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
- data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
- data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
- data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
- data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
- data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
- data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
- data/lua-hooks/ext/lua-snapshot/README.md +0 -18
- data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
- data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
- data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
- data/lua-hooks/ext/luautf8/README.md +0 -152
- data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
- data/lua-hooks/ext/luautf8/module.mk +0 -2
- data/lua-hooks/ext/luautf8/unidata.h +0 -3064
- data/lua-hooks/ext/module.mk +0 -15
- data/lua-hooks/ext/modules.h +0 -17
- data/lua-hooks/ext/perf/luacpu.c +0 -114
- data/lua-hooks/ext/perf/lualoadavg.c +0 -40
- data/lua-hooks/ext/perf/luameminfo.c +0 -38
- data/lua-hooks/ext/perf/luaoslib.c +0 -203
- data/lua-hooks/ext/perf/module.mk +0 -5
- data/lua-hooks/ext/sha1/luasha1.c +0 -74
- data/lua-hooks/ext/sha1/module.mk +0 -5
- data/lua-hooks/ext/sha1/sha1.c +0 -145
- data/lua-hooks/ext/sha2/luasha256.c +0 -77
- data/lua-hooks/ext/sha2/module.mk +0 -5
- data/lua-hooks/ext/sha2/sha256.c +0 -196
- data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
- data/lua-hooks/ext/sysutils/module.mk +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
|
|
3
3
|
**
|
|
4
|
-
** Copyright (C) 2005-
|
|
4
|
+
** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
|
|
5
5
|
**
|
|
6
6
|
** Permission is hereby granted, free of charge, to any person obtaining
|
|
7
7
|
** a copy of this software and associated documentation files (the
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
|
|
31
31
|
#include "lua.h"
|
|
32
32
|
|
|
33
|
-
#define LUAJIT_VERSION "LuaJIT 2.1.0-
|
|
33
|
+
#define LUAJIT_VERSION "LuaJIT 2.1.0-beta3"
|
|
34
34
|
#define LUAJIT_VERSION_NUM 20100 /* Version 2.1.0 = 02.01.00. */
|
|
35
|
-
#define LUAJIT_VERSION_SYM
|
|
36
|
-
#define LUAJIT_COPYRIGHT "Copyright (C) 2005-
|
|
35
|
+
#define LUAJIT_VERSION_SYM luaJIT_version_2_1_0_beta3
|
|
36
|
+
#define LUAJIT_COPYRIGHT "Copyright (C) 2005-2017 Mike Pall"
|
|
37
37
|
#define LUAJIT_URL "http://luajit.org/"
|
|
38
38
|
|
|
39
39
|
/* Modes for luaJIT_setmode. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@rem Script to build LuaJIT with MSVC.
|
|
2
|
-
@rem Copyright (C) 2005-
|
|
2
|
+
@rem Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
|
3
3
|
@rem
|
|
4
4
|
@rem Either open a "Visual Studio .NET Command Prompt"
|
|
5
5
|
@rem (Note that the Express Edition does not contain an x64 compiler)
|
|
@@ -14,12 +14,13 @@
|
|
|
14
14
|
@if not defined INCLUDE goto :FAIL
|
|
15
15
|
|
|
16
16
|
@setlocal
|
|
17
|
-
@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE
|
|
17
|
+
@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline
|
|
18
18
|
@set LJLINK=link /nologo
|
|
19
19
|
@set LJMT=mt /nologo
|
|
20
20
|
@set LJLIB=lib /nologo /nodefaultlib
|
|
21
21
|
@set DASMDIR=..\dynasm
|
|
22
22
|
@set DASM=%DASMDIR%\dynasm.lua
|
|
23
|
+
@set DASC=vm_x86.dasc
|
|
23
24
|
@set LJDLLNAME=lua51.dll
|
|
24
25
|
@set LJLIBNAME=lua51.lib
|
|
25
26
|
@set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c
|
|
@@ -39,7 +40,12 @@ if exist minilua.exe.manifest^
|
|
|
39
40
|
@set LJARCH=x86
|
|
40
41
|
@set LJCOMPILE=%LJCOMPILE% /arch:SSE2
|
|
41
42
|
:X64
|
|
42
|
-
|
|
43
|
+
@if "%1" neq "gc64" goto :NOGC64
|
|
44
|
+
@shift
|
|
45
|
+
@set DASC=vm_x64.dasc
|
|
46
|
+
@set LJCOMPILE=%LJCOMPILE% /DLUAJIT_ENABLE_GC64
|
|
47
|
+
:NOGC64
|
|
48
|
+
minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h %DASC%
|
|
43
49
|
@if errorlevel 1 goto :BAD
|
|
44
50
|
|
|
45
51
|
%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c
|
|
@@ -67,7 +73,7 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c
|
|
|
67
73
|
@if "%1" neq "debug" goto :NODEBUG
|
|
68
74
|
@shift
|
|
69
75
|
@set LJCOMPILE=%LJCOMPILE% /Zi
|
|
70
|
-
@set LJLINK=%LJLINK% /debug
|
|
76
|
+
@set LJLINK=%LJLINK% /debug /opt:ref /opt:icf /incremental:no
|
|
71
77
|
:NODEBUG
|
|
72
78
|
@if "%1"=="amalg" goto :AMALGDLL
|
|
73
79
|
@if "%1"=="static" goto :STATIC
|
|
@@ -99,6 +105,8 @@ if exist luajit.exe.manifest^
|
|
|
99
105
|
%LJMT% -manifest luajit.exe.manifest -outputresource:luajit.exe
|
|
100
106
|
|
|
101
107
|
@del *.obj *.manifest minilua.exe buildvm.exe
|
|
108
|
+
@del host\buildvm_arch.h
|
|
109
|
+
@del lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h
|
|
102
110
|
@echo.
|
|
103
111
|
@echo === Successfully built LuaJIT for Windows/%LJARCH% ===
|
|
104
112
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|// Low-level VM code for ARM CPUs.
|
|
2
2
|
|// Bytecode interpreter, fast functions and helper functions.
|
|
3
|
-
|// Copyright (C) 2005-
|
|
3
|
+
|// Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
|
|
|
5
5
|
|.arch arm
|
|
6
6
|
|.section code_op, code_sub
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|// Low-level VM code for ARM64 CPUs.
|
|
2
2
|
|// Bytecode interpreter, fast functions and helper functions.
|
|
3
|
-
|// Copyright (C) 2005-
|
|
3
|
+
|// Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
|
4
4
|
|
|
|
5
5
|
|.arch arm64
|
|
6
6
|
|.section code_op, code_sub
|
|
@@ -151,6 +151,21 @@
|
|
|
151
151
|
|.define FRAME_FUNC, #-16
|
|
152
152
|
|.define FRAME_PC, #-8
|
|
153
153
|
|
|
|
154
|
+
|// Endian-specific defines.
|
|
155
|
+
|.if ENDIAN_LE
|
|
156
|
+
|.define LO, 0
|
|
157
|
+
|.define OFS_RD, 2
|
|
158
|
+
|.define OFS_RB, 3
|
|
159
|
+
|.define OFS_RA, 1
|
|
160
|
+
|.define OFS_OP, 0
|
|
161
|
+
|.else
|
|
162
|
+
|.define LO, 4
|
|
163
|
+
|.define OFS_RD, 0
|
|
164
|
+
|.define OFS_RB, 0
|
|
165
|
+
|.define OFS_RA, 2
|
|
166
|
+
|.define OFS_OP, 3
|
|
167
|
+
|.endif
|
|
168
|
+
|
|
|
154
169
|
|.macro decode_RA, dst, ins; ubfx dst, ins, #8, #8; .endmacro
|
|
155
170
|
|.macro decode_RB, dst, ins; ubfx dst, ins, #24, #8; .endmacro
|
|
156
171
|
|.macro decode_RC, dst, ins; ubfx dst, ins, #16, #8; .endmacro
|
|
@@ -236,12 +251,17 @@
|
|
|
236
251
|
|.macro mov_false, reg; movn reg, #0x8000, lsl #32; .endmacro
|
|
237
252
|
|.macro mov_true, reg; movn reg, #0x0001, lsl #48; .endmacro
|
|
238
253
|
|
|
|
239
|
-
#define GL_J(field) (
|
|
254
|
+
#define GL_J(field) (GG_G2J + (int)offsetof(jit_State, field))
|
|
240
255
|
|
|
|
241
256
|
#define PC2PROTO(field) ((int)offsetof(GCproto, field)-(int)sizeof(GCproto))
|
|
242
257
|
|
|
|
243
258
|
|.macro hotcheck, delta
|
|
244
|
-
|
|
|
259
|
+
| lsr CARG1, PC, #1
|
|
260
|
+
| and CARG1, CARG1, #126
|
|
261
|
+
| add CARG1, CARG1, #GG_G2DISP+GG_DISP2HOT
|
|
262
|
+
| ldrh CARG2w, [GL, CARG1]
|
|
263
|
+
| subs CARG2, CARG2, #delta
|
|
264
|
+
| strh CARG2w, [GL, CARG1]
|
|
245
265
|
|.endmacro
|
|
246
266
|
|
|
|
247
267
|
|.macro hotloop
|
|
@@ -712,7 +732,7 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
712
732
|
| cmp CRET1, #1
|
|
713
733
|
| bhi ->vmeta_binop
|
|
714
734
|
|4:
|
|
715
|
-
| ldrh RBw, [PC, #
|
|
735
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
716
736
|
| add PC, PC, #4
|
|
717
737
|
| add RB, PC, RB, lsl #2
|
|
718
738
|
| sub RB, RB, #0x20000
|
|
@@ -869,7 +889,7 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
869
889
|
| bl extern lj_meta_for // (lua_State *L, TValue *base)
|
|
870
890
|
| ldr INSw, [PC, #-4]
|
|
871
891
|
|.if JIT
|
|
872
|
-
| uxtb
|
|
892
|
+
| uxtb TMP0w, INSw
|
|
873
893
|
|.endif
|
|
874
894
|
| decode_RA RA, INS
|
|
875
895
|
| decode_RD RC, INS
|
|
@@ -1495,7 +1515,12 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1495
1515
|
| bne ->fff_fallback
|
|
1496
1516
|
| checkint CARG1, ->fff_fallback
|
|
1497
1517
|
| mov CARG3, #1
|
|
1498
|
-
|
|
|
1518
|
+
| // Point to the char inside the integer in the stack slot.
|
|
1519
|
+
|.if ENDIAN_LE
|
|
1520
|
+
| mov CARG2, BASE
|
|
1521
|
+
|.else
|
|
1522
|
+
| add CARG2, BASE, #7
|
|
1523
|
+
|.endif
|
|
1499
1524
|
|->fff_newstr:
|
|
1500
1525
|
| // CARG2 = str, CARG3 = len.
|
|
1501
1526
|
| str BASE, L->base
|
|
@@ -1698,7 +1723,7 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1698
1723
|
| ands TMP0, PC, #FRAME_TYPE
|
|
1699
1724
|
| and TMP1, PC, #~FRAME_TYPEP
|
|
1700
1725
|
| bne >3
|
|
1701
|
-
| ldrb RAw, [PC, #-
|
|
1726
|
+
| ldrb RAw, [PC, #-4+OFS_RA]
|
|
1702
1727
|
| lsl RA, RA, #3
|
|
1703
1728
|
| add TMP1, RA, #16
|
|
1704
1729
|
|3:
|
|
@@ -1732,7 +1757,20 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1732
1757
|
|//-----------------------------------------------------------------------
|
|
1733
1758
|
|
|
|
1734
1759
|
|->vm_record: // Dispatch target for recording phase.
|
|
1735
|
-
|
|
1760
|
+
|.if JIT
|
|
1761
|
+
| ldrb CARG1w, GL->hookmask
|
|
1762
|
+
| tst CARG1, #HOOK_VMEVENT // No recording while in vmevent.
|
|
1763
|
+
| bne >5
|
|
1764
|
+
| // Decrement the hookcount for consistency, but always do the call.
|
|
1765
|
+
| ldr CARG2w, GL->hookcount
|
|
1766
|
+
| tst CARG1, #HOOK_ACTIVE
|
|
1767
|
+
| bne >1
|
|
1768
|
+
| sub CARG2w, CARG2w, #1
|
|
1769
|
+
| tst CARG1, #LUA_MASKLINE|LUA_MASKCOUNT
|
|
1770
|
+
| beq >1
|
|
1771
|
+
| str CARG2w, GL->hookcount
|
|
1772
|
+
| b >1
|
|
1773
|
+
|.endif
|
|
1736
1774
|
|
|
|
1737
1775
|
|->vm_rethook: // Dispatch target for return hooks.
|
|
1738
1776
|
| ldrb TMP2w, GL->hookmask
|
|
@@ -1774,7 +1812,21 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1774
1812
|
| b <4
|
|
1775
1813
|
|
|
|
1776
1814
|
|->vm_hotloop: // Hot loop counter underflow.
|
|
1777
|
-
|
|
1815
|
+
|.if JIT
|
|
1816
|
+
| ldr LFUNC:CARG3, [BASE, FRAME_FUNC] // Same as curr_topL(L).
|
|
1817
|
+
| add CARG1, GL, #GG_G2DISP+GG_DISP2J
|
|
1818
|
+
| and LFUNC:CARG3, CARG3, #LJ_GCVMASK
|
|
1819
|
+
| str PC, SAVE_PC
|
|
1820
|
+
| ldr CARG3, LFUNC:CARG3->pc
|
|
1821
|
+
| mov CARG2, PC
|
|
1822
|
+
| str L, [GL, #GL_J(L)]
|
|
1823
|
+
| ldrb CARG3w, [CARG3, #PC2PROTO(framesize)]
|
|
1824
|
+
| str BASE, L->base
|
|
1825
|
+
| add CARG3, BASE, CARG3, lsl #3
|
|
1826
|
+
| str CARG3, L->top
|
|
1827
|
+
| bl extern lj_trace_hot // (jit_State *J, const BCIns *pc)
|
|
1828
|
+
| b <3
|
|
1829
|
+
|.endif
|
|
1778
1830
|
|
|
|
1779
1831
|
|->vm_callhook: // Dispatch target for call hooks.
|
|
1780
1832
|
| mov CARG2, PC
|
|
@@ -1804,7 +1856,54 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1804
1856
|
| br CRET1
|
|
1805
1857
|
|
|
|
1806
1858
|
|->cont_stitch: // Trace stitching.
|
|
1807
|
-
|
|
1859
|
+
|.if JIT
|
|
1860
|
+
| // RA = resultptr, CARG4 = meta base
|
|
1861
|
+
| ldr RBw, SAVE_MULTRES
|
|
1862
|
+
| ldr INSw, [PC, #-4]
|
|
1863
|
+
| ldr TRACE:CARG3, [CARG4, #-40] // Save previous trace.
|
|
1864
|
+
| subs RB, RB, #8
|
|
1865
|
+
| decode_RA RC, INS // Call base.
|
|
1866
|
+
| and CARG3, CARG3, #LJ_GCVMASK
|
|
1867
|
+
| beq >2
|
|
1868
|
+
|1: // Move results down.
|
|
1869
|
+
| ldr CARG1, [RA]
|
|
1870
|
+
| add RA, RA, #8
|
|
1871
|
+
| subs RB, RB, #8
|
|
1872
|
+
| str CARG1, [BASE, RC, lsl #3]
|
|
1873
|
+
| add RC, RC, #1
|
|
1874
|
+
| bne <1
|
|
1875
|
+
|2:
|
|
1876
|
+
| decode_RA RA, INS
|
|
1877
|
+
| decode_RB RB, INS
|
|
1878
|
+
| add RA, RA, RB
|
|
1879
|
+
|3:
|
|
1880
|
+
| cmp RA, RC
|
|
1881
|
+
| bhi >9 // More results wanted?
|
|
1882
|
+
|
|
|
1883
|
+
| ldrh RAw, TRACE:CARG3->traceno
|
|
1884
|
+
| ldrh RCw, TRACE:CARG3->link
|
|
1885
|
+
| cmp RCw, RAw
|
|
1886
|
+
| beq ->cont_nop // Blacklisted.
|
|
1887
|
+
| cmp RCw, #0
|
|
1888
|
+
| bne =>BC_JLOOP // Jump to stitched trace.
|
|
1889
|
+
|
|
|
1890
|
+
| // Stitch a new trace to the previous trace.
|
|
1891
|
+
| mov CARG1, #GL_J(exitno)
|
|
1892
|
+
| str RAw, [GL, CARG1]
|
|
1893
|
+
| mov CARG1, #GL_J(L)
|
|
1894
|
+
| str L, [GL, CARG1]
|
|
1895
|
+
| str BASE, L->base
|
|
1896
|
+
| add CARG1, GL, #GG_G2J
|
|
1897
|
+
| mov CARG2, PC
|
|
1898
|
+
| bl extern lj_dispatch_stitch // (jit_State *J, const BCIns *pc)
|
|
1899
|
+
| ldr BASE, L->base
|
|
1900
|
+
| b ->cont_nop
|
|
1901
|
+
|
|
|
1902
|
+
|9: // Fill up results with nil.
|
|
1903
|
+
| str TISNIL, [BASE, RC, lsl #3]
|
|
1904
|
+
| add RC, RC, #1
|
|
1905
|
+
| b <3
|
|
1906
|
+
|.endif
|
|
1808
1907
|
|
|
|
1809
1908
|
|->vm_profhook: // Dispatch target for profiler hook.
|
|
1810
1909
|
#if LJ_HASPROFILE
|
|
@@ -1822,10 +1921,122 @@ static void build_subroutines(BuildCtx *ctx)
|
|
|
1822
1921
|
|//-- Trace exit handler -------------------------------------------------
|
|
1823
1922
|
|//-----------------------------------------------------------------------
|
|
1824
1923
|
|
|
|
1924
|
+
|.macro savex_, a, b
|
|
1925
|
+
| stp d..a, d..b, [sp, #a*8]
|
|
1926
|
+
| stp x..a, x..b, [sp, #32*8+a*8]
|
|
1927
|
+
|.endmacro
|
|
1928
|
+
|
|
|
1825
1929
|
|->vm_exit_handler:
|
|
1826
|
-
|
|
1930
|
+
|.if JIT
|
|
1931
|
+
| sub sp, sp, #(64*8)
|
|
1932
|
+
| savex_, 0, 1
|
|
1933
|
+
| savex_, 2, 3
|
|
1934
|
+
| savex_, 4, 5
|
|
1935
|
+
| savex_, 6, 7
|
|
1936
|
+
| savex_, 8, 9
|
|
1937
|
+
| savex_, 10, 11
|
|
1938
|
+
| savex_, 12, 13
|
|
1939
|
+
| savex_, 14, 15
|
|
1940
|
+
| savex_, 16, 17
|
|
1941
|
+
| savex_, 18, 19
|
|
1942
|
+
| savex_, 20, 21
|
|
1943
|
+
| savex_, 22, 23
|
|
1944
|
+
| savex_, 24, 25
|
|
1945
|
+
| savex_, 26, 27
|
|
1946
|
+
| savex_, 28, 29
|
|
1947
|
+
| stp d30, d31, [sp, #30*8]
|
|
1948
|
+
| ldr CARG1, [sp, #64*8] // Load original value of lr.
|
|
1949
|
+
| add CARG3, sp, #64*8 // Recompute original value of sp.
|
|
1950
|
+
| mv_vmstate CARG4w, EXIT
|
|
1951
|
+
| stp xzr, CARG3, [sp, #62*8] // Store 0/sp in RID_LR/RID_SP.
|
|
1952
|
+
| sub CARG1, CARG1, lr
|
|
1953
|
+
| ldr L, GL->cur_L
|
|
1954
|
+
| lsr CARG1, CARG1, #2
|
|
1955
|
+
| ldr BASE, GL->jit_base
|
|
1956
|
+
| sub CARG1, CARG1, #2
|
|
1957
|
+
| ldr CARG2w, [lr] // Load trace number.
|
|
1958
|
+
| st_vmstate CARG4w
|
|
1959
|
+
|.if ENDIAN_BE
|
|
1960
|
+
| rev32 CARG2, CARG2
|
|
1961
|
+
|.endif
|
|
1962
|
+
| str BASE, L->base
|
|
1963
|
+
| ubfx CARG2w, CARG2w, #5, #16
|
|
1964
|
+
| str CARG1w, [GL, #GL_J(exitno)]
|
|
1965
|
+
| str CARG2w, [GL, #GL_J(parent)]
|
|
1966
|
+
| str L, [GL, #GL_J(L)]
|
|
1967
|
+
| str xzr, GL->jit_base
|
|
1968
|
+
| add CARG1, GL, #GG_G2J
|
|
1969
|
+
| mov CARG2, sp
|
|
1970
|
+
| bl extern lj_trace_exit // (jit_State *J, ExitState *ex)
|
|
1971
|
+
| // Returns MULTRES (unscaled) or negated error code.
|
|
1972
|
+
| ldr CARG2, L->cframe
|
|
1973
|
+
| ldr BASE, L->base
|
|
1974
|
+
| and sp, CARG2, #CFRAME_RAWMASK
|
|
1975
|
+
| ldr PC, SAVE_PC // Get SAVE_PC.
|
|
1976
|
+
| str L, SAVE_L // Set SAVE_L (on-trace resume/yield).
|
|
1977
|
+
| b >1
|
|
1978
|
+
|.endif
|
|
1979
|
+
|
|
|
1827
1980
|
|->vm_exit_interp:
|
|
1828
|
-
|
|
|
1981
|
+
| // CARG1 = MULTRES or negated error code, BASE, PC and GL set.
|
|
1982
|
+
|.if JIT
|
|
1983
|
+
| ldr L, SAVE_L
|
|
1984
|
+
|1:
|
|
1985
|
+
| cmp CARG1w, #0
|
|
1986
|
+
| blt >9 // Check for error from exit.
|
|
1987
|
+
| lsl RC, CARG1, #3
|
|
1988
|
+
| ldr LFUNC:CARG2, [BASE, FRAME_FUNC]
|
|
1989
|
+
| movz TISNUM, #(LJ_TISNUM>>1)&0xffff, lsl #48
|
|
1990
|
+
| movz TISNUMhi, #(LJ_TISNUM>>1)&0xffff, lsl #16
|
|
1991
|
+
| movn TISNIL, #0
|
|
1992
|
+
| and LFUNC:CARG2, CARG2, #LJ_GCVMASK
|
|
1993
|
+
| str RCw, SAVE_MULTRES
|
|
1994
|
+
| str BASE, L->base
|
|
1995
|
+
| ldr CARG2, LFUNC:CARG2->pc
|
|
1996
|
+
| str xzr, GL->jit_base
|
|
1997
|
+
| mv_vmstate CARG4w, INTERP
|
|
1998
|
+
| ldr KBASE, [CARG2, #PC2PROTO(k)]
|
|
1999
|
+
| // Modified copy of ins_next which handles function header dispatch, too.
|
|
2000
|
+
| ldrb RBw, [PC, # OFS_OP]
|
|
2001
|
+
| ldr INSw, [PC], #4
|
|
2002
|
+
| st_vmstate CARG4w
|
|
2003
|
+
| cmp RBw, #BC_FUNCC+2 // Fast function?
|
|
2004
|
+
| add TMP1, GL, INS, uxtb #3
|
|
2005
|
+
| bhs >4
|
|
2006
|
+
|2:
|
|
2007
|
+
| cmp RBw, #BC_FUNCF // Function header?
|
|
2008
|
+
| add TMP0, GL, RB, uxtb #3
|
|
2009
|
+
| ldr RB, [TMP0, #GG_G2DISP]
|
|
2010
|
+
| decode_RA RA, INS
|
|
2011
|
+
| lsr TMP0, INS, #16
|
|
2012
|
+
| csel RC, TMP0, RC, lo
|
|
2013
|
+
| blo >5
|
|
2014
|
+
| ldr CARG3, [BASE, FRAME_FUNC]
|
|
2015
|
+
| sub RC, RC, #8
|
|
2016
|
+
| add RA, BASE, RA, lsl #3 // Yes: RA = BASE+framesize*8, RC = nargs*8
|
|
2017
|
+
| and LFUNC:CARG3, CARG3, #LJ_GCVMASK
|
|
2018
|
+
|5:
|
|
2019
|
+
| br RB
|
|
2020
|
+
|
|
|
2021
|
+
|4: // Check frame below fast function.
|
|
2022
|
+
| ldr CARG1, [BASE, FRAME_PC]
|
|
2023
|
+
| ands CARG2, CARG1, #FRAME_TYPE
|
|
2024
|
+
| bne <2 // Trace stitching continuation?
|
|
2025
|
+
| // Otherwise set KBASE for Lua function below fast function.
|
|
2026
|
+
| ldr CARG3w, [CARG1, #-4]
|
|
2027
|
+
| decode_RA CARG1, CARG3
|
|
2028
|
+
| sub CARG2, BASE, CARG1, lsl #3
|
|
2029
|
+
| ldr LFUNC:CARG3, [CARG2, #-32]
|
|
2030
|
+
| and LFUNC:CARG3, CARG3, #LJ_GCVMASK
|
|
2031
|
+
| ldr CARG3, LFUNC:CARG3->pc
|
|
2032
|
+
| ldr KBASE, [CARG3, #PC2PROTO(k)]
|
|
2033
|
+
| b <2
|
|
2034
|
+
|
|
|
2035
|
+
|9: // Rethrow error from the right C frame.
|
|
2036
|
+
| neg CARG2, CARG1
|
|
2037
|
+
| mov CARG1, L
|
|
2038
|
+
| bl extern lj_err_throw // (lua_State *L, int errcode)
|
|
2039
|
+
|.endif
|
|
1829
2040
|
|
|
|
1830
2041
|
|//-----------------------------------------------------------------------
|
|
1831
2042
|
|//-- Math helper functions ----------------------------------------------
|
|
@@ -1965,7 +2176,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
1965
2176
|
case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
|
|
1966
2177
|
| // RA = src1, RC = src2, JMP with RC = target
|
|
1967
2178
|
| ldr CARG1, [BASE, RA, lsl #3]
|
|
1968
|
-
| ldrh RBw, [PC, #
|
|
2179
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
1969
2180
|
| ldr CARG2, [BASE, RC, lsl #3]
|
|
1970
2181
|
| add PC, PC, #4
|
|
1971
2182
|
| add RB, PC, RB, lsl #2
|
|
@@ -2022,7 +2233,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2022
2233
|
| // RA = src1, RC = src2, JMP with RC = target
|
|
2023
2234
|
| ldr CARG1, [BASE, RA, lsl #3]
|
|
2024
2235
|
| add RC, BASE, RC, lsl #3
|
|
2025
|
-
| ldrh RBw, [PC, #
|
|
2236
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
2026
2237
|
| ldr CARG3, [RC]
|
|
2027
2238
|
| add PC, PC, #4
|
|
2028
2239
|
| add RB, PC, RB, lsl #2
|
|
@@ -2083,7 +2294,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2083
2294
|
| // RA = src, RC = str_const (~), JMP with RC = target
|
|
2084
2295
|
| ldr CARG1, [BASE, RA, lsl #3]
|
|
2085
2296
|
| mvn RC, RC
|
|
2086
|
-
| ldrh RBw, [PC, #
|
|
2297
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
2087
2298
|
| ldr CARG2, [KBASE, RC, lsl #3]
|
|
2088
2299
|
| add PC, PC, #4
|
|
2089
2300
|
| movn TMP0, #~LJ_TSTR
|
|
@@ -2111,7 +2322,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2111
2322
|
| // RA = src, RC = num_const (~), JMP with RC = target
|
|
2112
2323
|
| ldr CARG1, [BASE, RA, lsl #3]
|
|
2113
2324
|
| add RC, KBASE, RC, lsl #3
|
|
2114
|
-
| ldrh RBw, [PC, #
|
|
2325
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
2115
2326
|
| ldr CARG3, [RC]
|
|
2116
2327
|
| add PC, PC, #4
|
|
2117
2328
|
| add RB, PC, RB, lsl #2
|
|
@@ -2171,7 +2382,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2171
2382
|
vk = op == BC_ISEQP;
|
|
2172
2383
|
| // RA = src, RC = primitive_type (~), JMP with RC = target
|
|
2173
2384
|
| ldr TMP0, [BASE, RA, lsl #3]
|
|
2174
|
-
| ldrh RBw, [PC, #
|
|
2385
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
2175
2386
|
| add PC, PC, #4
|
|
2176
2387
|
| add RC, RC, #1
|
|
2177
2388
|
| add RB, PC, RB, lsl #2
|
|
@@ -2196,7 +2407,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2196
2407
|
|
|
2197
2408
|
case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
|
|
2198
2409
|
| // RA = dst or unused, RC = src, JMP with RC = target
|
|
2199
|
-
| ldrh RBw, [PC, #
|
|
2410
|
+
| ldrh RBw, [PC, # OFS_RD]
|
|
2200
2411
|
| ldr TMP0, [BASE, RC, lsl #3]
|
|
2201
2412
|
| add PC, PC, #4
|
|
2202
2413
|
| mov_false TMP1
|
|
@@ -2443,7 +2654,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
2443
2654
|
| str PC, SAVE_PC
|
|
2444
2655
|
| bl extern lj_meta_cat // (lua_State *L, TValue *top, int left)
|
|
2445
2656
|
| // Returns NULL (finished) or TValue * (metamethod).
|
|
2446
|
-
| ldrb RBw, [PC, #-
|
|
2657
|
+
| ldrb RBw, [PC, #-4+OFS_RB]
|
|
2447
2658
|
| ldr BASE, L->base
|
|
2448
2659
|
| cbnz CRET1, ->vmeta_binop
|
|
2449
2660
|
| ldr TMP0, [BASE, RB, lsl #3]
|
|
@@ -3074,7 +3285,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3074
3285
|
| ins_callt
|
|
3075
3286
|
|
|
|
3076
3287
|
|5: // Tailcall to a fast function with a Lua frame below.
|
|
3077
|
-
| ldrb RAw, [PC, #-
|
|
3288
|
+
| ldrb RAw, [PC, #-4+OFS_RA]
|
|
3078
3289
|
| sub CARG1, BASE, RA, lsl #3
|
|
3079
3290
|
| ldr LFUNC:CARG1, [CARG1, #-32]
|
|
3080
3291
|
| and LFUNC:CARG1, CARG1, #LJ_GCVMASK
|
|
@@ -3115,8 +3326,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3115
3326
|
|.endif
|
|
3116
3327
|
| add RA, BASE, RA, lsl #3
|
|
3117
3328
|
| ldr TAB:RB, [RA, #-16]
|
|
3118
|
-
| ldrh TMP3w, [PC, #
|
|
3119
|
-
| ldr CARG1w, [RA, #-8] // Get index from control var.
|
|
3329
|
+
| ldrh TMP3w, [PC, # OFS_RD]
|
|
3330
|
+
| ldr CARG1w, [RA, #-8+LO] // Get index from control var.
|
|
3120
3331
|
| add PC, PC, #4
|
|
3121
3332
|
| add TMP3, PC, TMP3, lsl #2
|
|
3122
3333
|
| and TAB:RB, RB, #LJ_GCVMASK
|
|
@@ -3135,7 +3346,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3135
3346
|
| stp CARG1, TMP0, [RA]
|
|
3136
3347
|
| add CARG1, CARG1, #1
|
|
3137
3348
|
|3:
|
|
3138
|
-
| str CARG1w, [RA, #-8]
|
|
3349
|
+
| str CARG1w, [RA, #-8+LO] // Update control var.
|
|
3139
3350
|
| mov PC, TMP3
|
|
3140
3351
|
|4:
|
|
3141
3352
|
| ins_next
|
|
@@ -3181,8 +3392,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3181
3392
|
|5: // Despecialize bytecode if any of the checks fail.
|
|
3182
3393
|
| mov TMP0, #BC_JMP
|
|
3183
3394
|
| mov TMP1, #BC_ITERC
|
|
3184
|
-
| strb TMP0w, [PC, #-4]
|
|
3185
|
-
| strb TMP1w, [RC]
|
|
3395
|
+
| strb TMP0w, [PC, #-4+OFS_OP]
|
|
3396
|
+
| strb TMP1w, [RC, # OFS_OP]
|
|
3186
3397
|
| b <1
|
|
3187
3398
|
break;
|
|
3188
3399
|
|
|
@@ -3387,7 +3598,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3387
3598
|
if (op == BC_FORI) {
|
|
3388
3599
|
| csel PC, RC, PC, gt
|
|
3389
3600
|
} else if (op == BC_JFORI) {
|
|
3390
|
-
|
|
|
3601
|
+
| mov PC, RC
|
|
3602
|
+
| ldrh RCw, [RC, #-4+OFS_RD]
|
|
3391
3603
|
} else if (op == BC_IFORL) {
|
|
3392
3604
|
| csel PC, RC, PC, le
|
|
3393
3605
|
}
|
|
@@ -3428,7 +3640,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3428
3640
|
if (op == BC_FORI) {
|
|
3429
3641
|
| csel PC, RC, PC, hi
|
|
3430
3642
|
} else if (op == BC_JFORI) {
|
|
3431
|
-
| ldrh RCw, [RC, #-
|
|
3643
|
+
| ldrh RCw, [RC, #-4+OFS_RD]
|
|
3432
3644
|
| bls =>BC_JLOOP
|
|
3433
3645
|
} else if (op == BC_IFORL) {
|
|
3434
3646
|
| csel PC, RC, PC, ls
|
|
@@ -3488,7 +3700,16 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3488
3700
|
|
|
3489
3701
|
case BC_JLOOP:
|
|
3490
3702
|
|.if JIT
|
|
3491
|
-
|
|
|
3703
|
+
| // RA = base (ignored), RC = traceno
|
|
3704
|
+
| ldr CARG1, [GL, #GL_J(trace)]
|
|
3705
|
+
| mov CARG2w, #0 // Traces on ARM64 don't store the trace #, so use 0.
|
|
3706
|
+
| ldr TRACE:RC, [CARG1, RC, lsl #3]
|
|
3707
|
+
| st_vmstate CARG2w
|
|
3708
|
+
| ldr RA, TRACE:RC->mcode
|
|
3709
|
+
| str BASE, GL->jit_base
|
|
3710
|
+
| str L, GL->tmpbuf.L
|
|
3711
|
+
| sub sp, sp, #16 // See SPS_FIXED. Avoids sp adjust in every root trace.
|
|
3712
|
+
| br RA
|
|
3492
3713
|
|.endif
|
|
3493
3714
|
break;
|
|
3494
3715
|
|
|
@@ -3546,10 +3767,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|
|
3546
3767
|
case BC_IFUNCV:
|
|
3547
3768
|
| // BASE = new base, RA = BASE+framesize*8, CARG3 = LFUNC, RC = nargs*8
|
|
3548
3769
|
| ldr CARG1, L->maxstack
|
|
3770
|
+
| movn TMP0, #~LJ_TFUNC
|
|
3549
3771
|
| add TMP2, BASE, RC
|
|
3772
|
+
| add LFUNC:CARG3, CARG3, TMP0, lsl #47
|
|
3550
3773
|
| add RA, RA, RC
|
|
3551
3774
|
| add TMP0, RC, #16+FRAME_VARG
|
|
3552
|
-
| str LFUNC:CARG3, [TMP2], #8 // Store (
|
|
3775
|
+
| str LFUNC:CARG3, [TMP2], #8 // Store (tagged) copy of LFUNC.
|
|
3553
3776
|
| ldr KBASE, [PC, #-4+PC2PROTO(k)]
|
|
3554
3777
|
| cmp RA, CARG1
|
|
3555
3778
|
| str TMP0, [TMP2], #8 // Store delta + FRAME_VARG.
|
|
@@ -3736,8 +3959,8 @@ static void emit_asm_debug(BuildCtx *ctx)
|
|
|
3736
3959
|
"\t.uleb128 0x1\n"
|
|
3737
3960
|
"\t.sleb128 -8\n"
|
|
3738
3961
|
"\t.byte 30\n" /* Return address is in lr. */
|
|
3739
|
-
"\t.uleb128 1\n"
|
|
3740
|
-
"\t.byte 0x1b\n"
|
|
3962
|
+
"\t.uleb128 1\n" /* augmentation length */
|
|
3963
|
+
"\t.byte 0x1b\n" /* pcrel|sdata4 */
|
|
3741
3964
|
"\t.byte 0xc\n\t.uleb128 31\n\t.uleb128 0\n" /* def_cfa sp */
|
|
3742
3965
|
"\t.align 3\n"
|
|
3743
3966
|
".LECIE2:\n\n");
|
|
@@ -3748,7 +3971,7 @@ static void emit_asm_debug(BuildCtx *ctx)
|
|
|
3748
3971
|
"\t.long .LASFDE3-.Lframe2\n"
|
|
3749
3972
|
"\t.long lj_vm_ffi_call-.\n"
|
|
3750
3973
|
"\t.long %d\n"
|
|
3751
|
-
"\t.uleb128 0\n"
|
|
3974
|
+
"\t.uleb128 0\n" /* augmentation length */
|
|
3752
3975
|
"\t.byte 0xe\n\t.uleb128 32\n" /* def_cfa_offset */
|
|
3753
3976
|
"\t.byte 0x9d\n\t.uleb128 4\n" /* offset fp */
|
|
3754
3977
|
"\t.byte 0x9e\n\t.uleb128 3\n" /* offset lr */
|