immunio 1.2.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 */
|