Magnus Norddahl
|
64387abcce
|
- add vm_jit cvar to control JIT compilation
|
2019-04-15 14:37:05 +02:00 |
|
Magnus Norddahl
|
87744b22ab
|
- update JIT PARAM handling to match the VM instruction change
|
2019-04-15 14:37:04 +02:00 |
|
Magnus Norddahl
|
43a6fc7227
|
- RUNTIME_FUNCTION only exists in 64-bit Windows
|
2019-04-15 14:37:02 +02:00 |
|
Magnus Norddahl
|
a54dbec73a
|
- fix wrong shift direction
|
2019-04-15 14:37:01 +02:00 |
|
Magnus Norddahl
|
bd1f529574
|
- build enough of the unwind opcodes for visual studio's debugger to produce the correct call stack
|
2019-04-15 14:36:59 +02:00 |
|
Magnus Norddahl
|
ea8725f03b
|
- construct our own runtime as the one provided by asmjit is too primitive
|
2019-04-15 14:36:58 +02:00 |
|
Magnus Norddahl
|
89bf3f0455
|
- add more names to asmjit objects
|
2019-04-15 14:36:56 +02:00 |
|
Magnus Norddahl
|
7e9e823674
|
- remove the frameX registers as they were just constant offsets to vmframe that could be merged into other constant offsets
|
2019-04-15 14:36:55 +02:00 |
|
Magnus Norddahl
|
475510c8ea
|
- give the remaining virtual registers names
|
2019-04-15 14:36:53 +02:00 |
|
Magnus Norddahl
|
68c05a424b
|
- give temp registers names and reuse the FString object for formatting names
|
2019-04-15 14:36:52 +02:00 |
|
Magnus Norddahl
|
d48738437b
|
- skip RESULT opcodes when outputting assembly
|
2019-04-15 14:36:51 +02:00 |
|
Magnus Norddahl
|
77850c1ec5
|
- clean up assembly output slightly by only generating labels for the opcodes jumped to
|
2019-04-15 14:36:49 +02:00 |
|
Magnus Norddahl
|
316010378d
|
- fix CASTB opcode implementation
|
2019-04-15 14:36:48 +02:00 |
|
Magnus Norddahl
|
2c89d1e694
|
- fix missing convert from float to double in LSP and LSP_R opcodes
- fix missing convert from double to float in SSP and SSP_R opcodes
|
2019-04-15 14:36:46 +02:00 |
|
Magnus Norddahl
|
9b9113d0c4
|
- fix debug build compile error
|
2019-04-15 14:36:44 +02:00 |
|
Magnus Norddahl
|
7230974c1e
|
- remove the need to do any VARF_Native runtime checks by making native functions use the same calling convention as the script version
|
2019-04-15 14:36:43 +02:00 |
|
Magnus Norddahl
|
ae6c7e541c
|
- do script calls directly from asmjit without using a lambda wrapper
- do VARF_Native check at compile time when possible
|
2019-04-15 14:36:41 +02:00 |
|
Magnus Norddahl
|
37dfbba232
|
- add -dumpjit command line parameter that dumps the JIT log for all functions to dumpjit.txt
# Conflicts:
# src/scripting/backend/vmbuilder.cpp
|
2019-04-15 14:36:39 +02:00 |
|
Magnus Norddahl
|
a60ac7b47d
|
- fix return warning
|
2019-04-15 14:33:49 +02:00 |
|
Magnus Norddahl
|
e7f0b7a0bd
|
- switch to using setjmp/longjmp for exception handling
|
2019-04-15 14:33:47 +02:00 |
|
Magnus Norddahl
|
b24ec1f9cc
|
- add disabled code that attempts to load registers directly from function arguments
|
2019-04-15 14:33:46 +02:00 |
|
Magnus Norddahl
|
04ba3ede16
|
- add missing include statement
|
2019-04-15 14:33:44 +02:00 |
|
Magnus Norddahl
|
6db9b1394c
|
- allocate VMFrame on the stack for simple functions with no strings
|
2019-04-15 14:33:43 +02:00 |
|
Magnus Norddahl
|
84d2de34f0
|
- remove argument not used anymore
|
2019-04-15 14:33:41 +02:00 |
|
Magnus Norddahl
|
f0c059678b
|
- move VM creation into the jitted function. this will allow the jit compiler to skip vm frame creation when possible
|
2019-04-15 14:33:39 +02:00 |
|
Magnus Norddahl
|
baaed0920a
|
- create ScriptCall function pointer on VMScriptFunction
|
2019-04-15 14:33:37 +02:00 |
|
Magnus Norddahl
|
03689cf004
|
- modify the VM calling convention so that the callee sets up its own VM frame
|
2019-04-15 14:33:35 +02:00 |
|
Magnus Norddahl
|
992c097ad1
|
- fix wrong registers getting saved when passing parameters by reference
|
2019-04-15 14:33:34 +02:00 |
|
Magnus Norddahl
|
19ae43be17
|
- removed CanJit as all opcodes are now implemented
- fix some store bugs
|
2019-04-15 14:33:32 +02:00 |
|
Magnus Norddahl
|
b3aeb37189
|
- fix 32 bit compile errors
|
2019-04-15 14:33:31 +02:00 |
|
Magnus Norddahl
|
e2dcca611c
|
- catch and rethrow c++ exceptions
|
2019-04-15 14:33:29 +02:00 |
|
Magnus Norddahl
|
22e60d74ad
|
- reuse temp virtual registers
|
2019-04-15 14:33:28 +02:00 |
|
Magnus Norddahl
|
80cda43370
|
- workaround bug in asmjit's register allocator for calls where the return register is already allocated in a physical register needed by one of the call arguments
|
2019-04-15 14:33:26 +02:00 |
|
Magnus Norddahl
|
bb3d0021d6
|
- switch ToMemAddress to imm_ptr where allowed
|
2019-04-15 14:33:25 +02:00 |
|
Magnus Norddahl
|
f90019561d
|
- switch from ASMJIT_ARCH_X64 to ASMJIT_ARCH_64BIT when checking if we need to use 64-bit pointers
|
2019-04-15 14:33:23 +02:00 |
|
Magnus Norddahl
|
e0f0511d29
|
- create a very basic OP_IJMP implementation
|
2019-04-15 14:33:22 +02:00 |
|
Magnus Norddahl
|
812a4290b1
|
- create CreateCall helper to get rid of a lot of the cc.call boilerplate
|
2019-04-15 14:33:20 +02:00 |
|
Magnus Norddahl
|
ff6317d6f4
|
- implement OP_TAIL and OP_TAIL_K
|
2019-04-15 14:33:19 +02:00 |
|
Magnus Norddahl
|
be6637dd17
|
- use the ParamOpcodes array for finding the OP_PARAM's used by a call
|
2019-04-15 14:33:17 +02:00 |
|
Magnus Norddahl
|
f1f2dca792
|
- implement string version of OP_CAST
|
2019-04-15 14:33:16 +02:00 |
|
Magnus Norddahl
|
0cf5f3704b
|
- implement string part of OP_CASTB
|
2019-04-15 14:33:14 +02:00 |
|
Magnus Norddahl
|
097de74510
|
- implement OP_LFP
|
2019-04-15 14:33:13 +02:00 |
|
Magnus Norddahl
|
7f996b5334
|
- read the parameters and registers directly off the stack
|
2019-04-15 14:33:11 +02:00 |
|
Jonathan Russell
|
ff421eda63
|
- changed a bunch of manual address additions in string opcodes to leas
|
2019-04-15 14:33:10 +02:00 |
|
Magnus Norddahl
|
b6521467f3
|
- more load fixes
|
2019-04-15 14:33:08 +02:00 |
|
Magnus Norddahl
|
e28389ad12
|
- fix truncated load addresses due to a bug in asmjit
- change ToMemAddress to use uint64_t
|
2019-04-15 14:33:06 +02:00 |
|
Magnus Norddahl
|
db0c516693
|
- avoid certain x86::ptr overloads as the last argument is not always an offset
|
2019-04-15 14:33:05 +02:00 |
|
Jonathan Russell
|
0da351bfea
|
- fixed typo in last commit
|
2019-04-15 14:33:03 +02:00 |
|
Jonathan Russell
|
2dd2344e80
|
- implemented SS_R, LCS_R, and LKS_R
|
2019-04-15 14:33:02 +02:00 |
|
Magnus Norddahl
|
fb7df75011
|
- fix bug in LKF_R
|
2019-04-15 14:33:00 +02:00 |
|
Magnus Norddahl
|
d74cc3e49e
|
- fixed OP_VTBL bug
|
2019-04-15 14:32:59 +02:00 |
|
Magnus Norddahl
|
e93d9570dc
|
- fix crash in OP_RET handling
|
2019-04-15 14:32:57 +02:00 |
|
Magnus Norddahl
|
378e58731a
|
- simplify some code
|
2019-04-15 14:32:56 +02:00 |
|
Jonathan Russell
|
b342dbc8db
|
- added string PARAM and RET
|
2019-04-15 14:32:54 +02:00 |
|
Magnus Norddahl
|
608f49a4a8
|
- fix clang errors and warnings
|
2019-04-15 14:32:53 +02:00 |
|
Jonathan Russell
|
06780bf228
|
- added OP_MOVES, OP_CONCAT, OP_LENS, OP_CMPS
|
2019-04-15 14:32:52 +02:00 |
|
Magnus Norddahl
|
a4b3536caf
|
- fix opcodes not being listed in jit debug assembly
|
2019-04-15 14:32:50 +02:00 |
|
Magnus Norddahl
|
c328f9c85c
|
- move EmitRESULT to jit_call
|
2019-04-15 14:32:49 +02:00 |
|
Magnus Norddahl
|
ff8d21b2ec
|
- minor cleanups in header file
|
2019-04-15 14:32:47 +02:00 |
|
Magnus Norddahl
|
9d970a1acb
|
- split JitCompiler into multiple files
|
2019-04-15 14:32:46 +02:00 |
|
Jonathan Russell
|
8905701df7
|
- added strings and a few string opcodes
|
2019-04-15 14:32:44 +02:00 |
|
Magnus Norddahl
|
f3ca96373a
|
- fix CALL_K and disable CALL
|
2019-04-15 14:32:43 +02:00 |
|
Magnus Norddahl
|
56fe7af9d3
|
- implement OP_CALL and OP_CALL_K
|
2019-04-15 14:32:41 +02:00 |
|
Magnus Norddahl
|
60ee2c91a4
|
- fix misc integer opcodes and remove mov statements when they have no effect
|
2019-04-15 14:32:40 +02:00 |
|
Jonathan Russell
|
279e97fcc9
|
- changed the way EmitComparisonOpcode works to get rid of the temporary register that was used previously
|
2019-04-15 14:32:38 +02:00 |
|
Magnus Norddahl
|
c248fad17f
|
- implement PARAM and PARAMI
|
2019-04-15 14:32:37 +02:00 |
|
Magnus Norddahl
|
53b11dd0d8
|
- fix missing zero extend
|
2019-04-15 14:32:36 +02:00 |
|
Magnus Norddahl
|
29f6258d33
|
- fix that the code for META and CLSS was swapped
|
2019-04-15 14:32:34 +02:00 |
|
Magnus Norddahl
|
c2669d3a03
|
- some jump fixes
|
2019-04-15 14:32:33 +02:00 |
|
Magnus Norddahl
|
f7dd6a1313
|
- fix jump direction in EmitComparisonOpcode
|
2019-04-15 14:32:31 +02:00 |
|
Jonathan Russell
|
9530a2e43c
|
- more spelling mistakes...
|
2019-04-15 14:32:29 +02:00 |
|
Jonathan Russell
|
a770b3af16
|
- fix minor spelling error
|
2019-04-15 14:32:28 +02:00 |
|
Jonathan Russell
|
821c336c5e
|
- add vector comparison opcodes
|
2019-04-15 14:32:26 +02:00 |
|
Magnus Norddahl
|
14d6aa8cac
|
- remove some macros and add functions checking if a register needs to be copied
|
2019-04-15 14:32:25 +02:00 |
|
Magnus Norddahl
|
35a8162022
|
- implemented LBIT, SBIT, VTBL, SCOPE, NEW, NEW_K, THROW, EQA_R and EQA_K
|
2019-04-15 14:32:23 +02:00 |
|
Magnus Norddahl
|
4cab630871
|
- implement emitter functions for LKP_R, META, CLSS, LO, LO_R, LP, LP_R, SO, SO_R, SP, SP_R
- add emit code for throwing exceptions on null pointers
|
2019-04-15 14:32:22 +02:00 |
|
Magnus Norddahl
|
2efaa7846d
|
- improve jit debug output slightly
|
2019-04-15 14:32:20 +02:00 |
|
Magnus Norddahl
|
f0dbc8414a
|
- fix offsetting bug when loading address registers
|
2019-04-15 14:32:19 +02:00 |
|
Magnus Norddahl
|
db78d02d79
|
- fix swapped operands in EmitSUBF_KR
|
2019-04-15 14:32:17 +02:00 |
|
Magnus Norddahl
|
ede8c6d86b
|
- implement MODF_RR, MODF_RK and MODF_KR
|
2019-04-15 14:32:16 +02:00 |
|
Magnus Norddahl
|
708362b31f
|
- fix mul using wrong instruction
|
2019-04-15 14:32:14 +02:00 |
|
Magnus Norddahl
|
c46a4d4483
|
- implement BOUND opcodes and add logging the resulting assembly code if asmjit throws an exception
|
2019-04-15 14:32:13 +02:00 |
|
Magnus Norddahl
|
c2938926a7
|
- implement a few more opcodes and fix some bugs
|
2019-04-15 14:32:11 +02:00 |
|
Magnus Norddahl
|
9427e22d7c
|
- implemented pow, min, max
|
2019-04-15 14:32:10 +02:00 |
|
Magnus Norddahl
|
f4181be6b8
|
- implement ATAN2 and FLOP
|
2019-04-15 14:32:08 +02:00 |
|
Magnus Norddahl
|
77fe376eca
|
- implement DYNCAST*, TEST, TESTN and JMP opcodes
|
2019-04-15 14:32:07 +02:00 |
|
Magnus Norddahl
|
9474a2554d
|
- convert JitCompile's switch into a class to enable easier code reuse
|
2019-04-15 14:32:05 +02:00 |
|
Magnus Norddahl
|
9889d2fbb6
|
- fix clang compile error
|
2019-04-15 14:32:03 +02:00 |
|
Magnus Norddahl
|
976a7fab3a
|
- implement throwing by storing exception information in a struct, then return from the jitted function and throw from c++
|
2019-04-15 14:32:02 +02:00 |
|
Jonathan Russell
|
45bc0d266e
|
- removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked
|
2019-04-15 14:32:00 +02:00 |
|
Jonathan Russell
|
197b20af5d
|
- add first draft of abort exceptions
|
2019-04-15 14:31:58 +02:00 |
|
Magnus Norddahl
|
c65b7076eb
|
- call play sqrt when calculating lengths
|
2019-04-15 14:31:57 +02:00 |
|
Magnus Norddahl
|
50d0049460
|
- fix 8 and 16 bit store
|
2019-04-15 14:31:55 +02:00 |
|
Magnus Norddahl
|
76c08bf725
|
- destroy the jit runtime when all script functions are destroyed
|
2019-04-15 14:31:54 +02:00 |
|
Magnus Norddahl
|
4820c32794
|
- disable all unimplemented opcodes in the switch to ensure 'Unknown VM opcode' fatal error is generated if CanJit has a bug
|
2019-04-15 14:31:52 +02:00 |
|
Magnus Norddahl
|
e9914f38af
|
Fix compile errors on macOS
|
2019-04-15 14:31:51 +02:00 |
|
Jonathan Russell
|
601c492cf2
|
- added remaining int arithmetic opcodes (and fixed float loading offset issue)
|
2019-04-15 14:31:49 +02:00 |
|
Jonathan Russell
|
e771064657
|
- forgot to turn off debug switch in last commit
|
2019-04-15 14:31:47 +02:00 |
|
Jonathan Russell
|
4228891da2
|
- made absMaskInt const
|
2019-04-15 14:31:46 +02:00 |
|
Jonathan Russell
|
8306815292
|
- implemented CMP_APPROX for OP_EQF_*, making ~== work for doubles
|
2019-04-15 14:31:44 +02:00 |
|