Magnus Norddahl
|
b7c0cd5d05
|
- move VM creation into the jitted function. this will allow the jit compiler to skip vm frame creation when possible
|
2018-10-09 03:37:11 +02:00 |
|
Magnus Norddahl
|
e930dfaae7
|
- create ScriptCall function pointer on VMScriptFunction
|
2018-10-09 02:52:07 +02:00 |
|
Magnus Norddahl
|
137ef034d1
|
- modify the VM calling convention so that the callee sets up its own VM frame
|
2018-10-09 02:08:15 +02:00 |
|
Magnus Norddahl
|
367b60d88c
|
- fix wrong registers getting saved when passing parameters by reference
|
2018-10-08 23:44:54 +02:00 |
|
Magnus Norddahl
|
d643fbd077
|
- removed CanJit as all opcodes are now implemented
- fix some store bugs
|
2018-10-07 22:21:48 +02:00 |
|
Magnus Norddahl
|
47bcf318a5
|
- fix 32 bit compile errors
|
2018-10-07 20:55:06 +02:00 |
|
Magnus Norddahl
|
f321f64a05
|
- catch and rethrow c++ exceptions
|
2018-10-07 20:38:08 +02:00 |
|
Magnus Norddahl
|
47485194f4
|
- reuse temp virtual registers
|
2018-10-07 09:02:28 +02:00 |
|
Magnus Norddahl
|
d47988202a
|
- 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
|
2018-10-07 06:29:54 +02:00 |
|
Magnus Norddahl
|
5bf76523d6
|
- switch ToMemAddress to imm_ptr where allowed
|
2018-09-18 18:13:53 +02:00 |
|
Magnus Norddahl
|
05ac219ba6
|
- switch from ASMJIT_ARCH_X64 to ASMJIT_ARCH_64BIT when checking if we need to use 64-bit pointers
|
2018-09-18 18:05:53 +02:00 |
|
Magnus Norddahl
|
ad260aa971
|
- create a very basic OP_IJMP implementation
|
2018-09-17 21:52:21 +02:00 |
|
Magnus Norddahl
|
61735ddd8b
|
- create CreateCall helper to get rid of a lot of the cc.call boilerplate
|
2018-09-17 12:00:25 +02:00 |
|
Magnus Norddahl
|
f61df60240
|
- implement OP_TAIL and OP_TAIL_K
|
2018-09-17 09:02:23 +02:00 |
|
Magnus Norddahl
|
d032914c3d
|
- use the ParamOpcodes array for finding the OP_PARAM's used by a call
|
2018-09-17 00:31:25 +02:00 |
|
Magnus Norddahl
|
da040e818c
|
- implement string version of OP_CAST
|
2018-09-17 00:17:32 +02:00 |
|
Magnus Norddahl
|
102c00ce13
|
- implement string part of OP_CASTB
|
2018-09-16 22:39:48 +02:00 |
|
Magnus Norddahl
|
c8e4bf089c
|
- implement OP_LFP
|
2018-09-16 03:39:54 +02:00 |
|
Magnus Norddahl
|
ba4606c1d5
|
- read the parameters and registers directly off the stack
|
2018-09-16 03:20:56 +02:00 |
|
Jonathan Russell
|
69bc39914b
|
- changed a bunch of manual address additions in string opcodes to leas
|
2018-09-15 21:09:43 +01:00 |
|
Magnus Norddahl
|
3477b22714
|
- more load fixes
|
2018-09-15 18:08:01 +02:00 |
|
Magnus Norddahl
|
4364feea9a
|
- fix truncated load addresses due to a bug in asmjit
- change ToMemAddress to use uint64_t
|
2018-09-15 15:38:16 +02:00 |
|
Magnus Norddahl
|
06b54d3aaa
|
- avoid certain x86::ptr overloads as the last argument is not always an offset
|
2018-09-15 15:05:52 +02:00 |
|
Jonathan Russell
|
407418a92e
|
- fixed typo in last commit
|
2018-09-15 00:26:14 +01:00 |
|
Jonathan Russell
|
b83f4f48d6
|
- implemented SS_R, LCS_R, and LKS_R
|
2018-09-15 00:25:13 +01:00 |
|
Magnus Norddahl
|
ce9925d257
|
- fix bug in LKF_R
|
2018-09-15 01:06:48 +02:00 |
|
Magnus Norddahl
|
7e7bce4965
|
- fixed OP_VTBL bug
|
2018-09-15 00:28:34 +02:00 |
|
Magnus Norddahl
|
266f838de7
|
- fix crash in OP_RET handling
|
2018-09-15 00:12:12 +02:00 |
|
Magnus Norddahl
|
663e61a4fb
|
- simplify some code
|
2018-09-14 23:38:57 +02:00 |
|
Magnus Norddahl
|
90d8d4af24
|
Merge pull request #573 from Gutawer/asmjit
Added string PARAM and RET
|
2018-09-14 20:07:47 +02:00 |
|
Jonathan Russell
|
11fbd9a0a4
|
- added string PARAM and RET
|
2018-09-14 18:20:31 +01:00 |
|
Magnus Norddahl
|
4e85134d8e
|
Merge remote-tracking branch 'gzdoom/master' into asmjit
|
2018-09-14 02:09:17 +02:00 |
|
Magnus Norddahl
|
d09a377f12
|
- fix clang errors and warnings
|
2018-09-14 01:07:05 +02:00 |
|
Jonathan Russell
|
0b6c514067
|
- added OP_MOVES, OP_CONCAT, OP_LENS, OP_CMPS
|
2018-09-13 20:31:06 +01:00 |
|
Magnus Norddahl
|
c359601737
|
- fix opcodes not being listed in jit debug assembly
|
2018-09-13 19:03:30 +02:00 |
|
Magnus Norddahl
|
b92e5fbf2a
|
- move EmitRESULT to jit_call
|
2018-09-13 02:56:02 +02:00 |
|
Magnus Norddahl
|
fad8c9c7b4
|
- minor cleanups in header file
|
2018-09-13 02:38:51 +02:00 |
|
Magnus Norddahl
|
ef170883ef
|
- split JitCompiler into multiple files
|
2018-09-13 02:29:04 +02:00 |
|
Jonathan Russell
|
b8bdc3b4c8
|
- added strings and a few string opcodes
|
2018-09-12 23:56:04 +01:00 |
|
Magnus Norddahl
|
afc3c6b562
|
- fix CALL_K and disable CALL
|
2018-09-12 21:58:31 +02:00 |
|
Magnus Norddahl
|
ced793b791
|
- implement OP_CALL and OP_CALL_K
|
2018-09-12 01:37:30 +02:00 |
|
Magnus Norddahl
|
981950fef0
|
- fix misc integer opcodes and remove mov statements when they have no effect
|
2018-09-11 23:31:32 +02:00 |
|
Jonathan Russell
|
4d3c496121
|
- changed the way EmitComparisonOpcode works to get rid of the temporary register that was used previously
|
2018-09-11 21:48:02 +01:00 |
|
Magnus Norddahl
|
4d1cb258d6
|
- implement PARAM and PARAMI
|
2018-09-11 17:08:51 +02:00 |
|
Magnus Norddahl
|
6f55c76f05
|
- fix missing zero extend
|
2018-09-09 23:21:47 +02:00 |
|
Magnus Norddahl
|
4076ce791b
|
- fix that the code for META and CLSS was swapped
|
2018-09-09 22:42:59 +02:00 |
|
Magnus Norddahl
|
19442732d4
|
- some jump fixes
|
2018-09-09 22:03:57 +02:00 |
|
Magnus Norddahl
|
b40cbfb22e
|
- fix jump direction in EmitComparisonOpcode
|
2018-09-09 20:35:37 +02:00 |
|
Jonathan Russell
|
eeb4419bc4
|
- more spelling mistakes...
|
2018-09-02 23:47:22 +01:00 |
|
Jonathan Russell
|
fdf17a5d8e
|
- fix minor spelling error
|
2018-09-02 23:45:32 +01:00 |
|
Jonathan Russell
|
28f2311108
|
- add vector comparison opcodes
|
2018-09-02 23:44:25 +01:00 |
|
Christoph Oelckers
|
4571aa52f0
|
- fixed bad code for OP_SRL_KR.
|
2018-09-02 18:20:38 +02:00 |
|
Magnus Norddahl
|
168c274601
|
- remove some macros and add functions checking if a register needs to be copied
|
2018-09-02 15:36:39 +02:00 |
|
Magnus Norddahl
|
323d290c99
|
- implemented LBIT, SBIT, VTBL, SCOPE, NEW, NEW_K, THROW, EQA_R and EQA_K
|
2018-09-02 03:39:02 +02:00 |
|
Magnus Norddahl
|
ccd2f58fb4
|
- 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
|
2018-08-31 06:57:30 +02:00 |
|
Magnus Norddahl
|
999b3833ff
|
- improve jit debug output slightly
|
2018-08-30 19:55:00 +02:00 |
|
Magnus Norddahl
|
bba422ffcc
|
- fix offsetting bug when loading address registers
|
2018-08-30 19:47:38 +02:00 |
|
Magnus Norddahl
|
c7e14e63bc
|
- fix swapped operands in EmitSUBF_KR
|
2018-08-30 18:47:25 +02:00 |
|
Magnus Norddahl
|
4b22fa7bc8
|
- implement MODF_RR, MODF_RK and MODF_KR
|
2018-08-29 01:27:37 +02:00 |
|
Magnus Norddahl
|
a5719e73eb
|
- fix mul using wrong instruction
|
2018-08-29 01:07:36 +02:00 |
|
Magnus Norddahl
|
25e7042bc5
|
- implement BOUND opcodes and add logging the resulting assembly code if asmjit throws an exception
|
2018-08-26 14:27:46 +02:00 |
|
Magnus Norddahl
|
7b886cc434
|
- implement a few more opcodes and fix some bugs
|
2018-08-25 13:38:45 +02:00 |
|
Magnus Norddahl
|
f84028eeae
|
- implemented pow, min, max
|
2018-08-24 23:17:35 +02:00 |
|
Magnus Norddahl
|
17813e4b3e
|
- implement ATAN2 and FLOP
|
2018-08-20 01:40:37 +02:00 |
|
Magnus Norddahl
|
38fa25d0c5
|
- implement DYNCAST*, TEST, TESTN and JMP opcodes
|
2018-08-20 00:44:48 +02:00 |
|
Magnus Norddahl
|
302d753d17
|
- convert JitCompile's switch into a class to enable easier code reuse
|
2018-08-19 01:46:56 +02:00 |
|
Magnus Norddahl
|
c17be9eb21
|
- fix clang compile error
|
2018-08-18 22:46:18 +02:00 |
|
Magnus Norddahl
|
3453f05f06
|
- implement throwing by storing exception information in a struct, then return from the jitted function and throw from c++
|
2018-08-18 22:41:18 +02:00 |
|
Jonathan Russell
|
d983ae66c7
|
- removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked
|
2018-08-18 20:37:55 +01:00 |
|
Jonathan Russell
|
6424190cbf
|
- add first draft of abort exceptions
|
2018-08-18 18:03:18 +01:00 |
|
Magnus Norddahl
|
c89d8bb9bb
|
- call play sqrt when calculating lengths
|
2018-08-18 18:41:35 +02:00 |
|
Magnus Norddahl
|
b159b5667a
|
- fix 8 and 16 bit store
|
2018-08-18 18:21:52 +02:00 |
|
Magnus Norddahl
|
e557e8fac0
|
- destroy the jit runtime when all script functions are destroyed
|
2018-08-18 17:50:47 +02:00 |
|
Magnus Norddahl
|
9d68d43ce7
|
- disable all unimplemented opcodes in the switch to ensure 'Unknown VM opcode' fatal error is generated if CanJit has a bug
|
2018-08-18 13:18:52 +02:00 |
|
Magnus Norddahl
|
68b2cd58d8
|
Fix compile errors on macOS
|
2018-08-18 12:37:33 +02:00 |
|
Jonathan Russell
|
6a40e092fe
|
- added remaining int arithmetic opcodes (and fixed float loading offset issue)
|
2018-08-17 22:06:12 +01:00 |
|
Jonathan Russell
|
758ee5cbfb
|
- forgot to turn off debug switch in last commit
|
2018-08-17 19:15:27 +01:00 |
|
Jonathan Russell
|
08c0ac541f
|
- made absMaskInt const
|
2018-08-17 19:14:31 +01:00 |
|
Jonathan Russell
|
d137b3c94e
|
- implemented CMP_APPROX for OP_EQF_*, making ~== work for doubles
|
2018-08-17 19:08:19 +01:00 |
|
Chronos Ouroboros
|
079391e5ac
|
Updated CanJit's supported opcodes list.
|
2018-08-16 21:45:04 +02:00 |
|
Chronos Ouroboros
|
a8ce626708
|
Pointer addition opcodes must leave NULL pointers as they are.
|
2018-08-16 21:45:04 +02:00 |
|
Chronos Ouroboros
|
591783087d
|
Changed binary int ops to use a temporary register, fixed some opcodes.
For some reason, binary ops might reuse one of the input registers as the output register.
This is a problem for very obvious reasons.
|
2018-08-14 20:08:04 -03:00 |
|
Jonathan Russell
|
dc03cb7a80
|
- made CMP_CHECK checking compile time
|
2018-08-14 20:50:32 +01:00 |
|
Jonathan Russell
|
740415246e
|
- added exact floating point comparison opcodes
|
2018-08-14 18:32:17 +01:00 |
|
Jonathan Russell
|
167693f102
|
- implemented all integer comparison operators
|
2018-08-14 15:07:09 +01:00 |
|
Jonathan Russell
|
b30df47499
|
- adds OP_EQ_R, the first instruction using jumps
|
2018-08-14 13:02:56 +01:00 |
|
Magnus Norddahl
|
0ced612d2c
|
- add misc float opcodes
|
2018-08-14 01:07:30 +02:00 |
|
Jonathan Russell
|
cdb5a9d91e
|
- added most vector maths opcodes
|
2018-08-13 21:36:55 +01:00 |
|
Chronos Ouroboros
|
cb28bbc72e
|
Fix floats and implement some more opcodes.
|
2018-08-13 13:07:36 -03:00 |
|
Magnus Norddahl
|
83d769f55c
|
- copy initial register values from the VM frame
|
2018-08-13 00:15:42 +02:00 |
|
Magnus Norddahl
|
7108fd6228
|
- implement most of the integer math opcodes
|
2018-08-12 04:34:57 +02:00 |
|
Magnus Norddahl
|
cbb945d8a7
|
- embed and use asmjit to JIT ZScript VM functions
|
2018-08-12 02:11:13 +02:00 |
|
alexey.lysiuk
|
b2697a99f8
|
- added missing null pointer checks to VM ops
|
2018-07-16 17:10:47 +03:00 |
|
alexey.lysiuk
|
2ae8d39441
|
Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
|
2018-04-24 14:30:35 +03:00 |
|
alexey.lysiuk
|
81bc05b7c5
|
Added support for default values of arguments with uint type
|
2018-03-07 15:58:06 +02:00 |
|
alexey.lysiuk
|
81ea9fb372
|
Added runtime check for negative array indices in VM
https://forum.zdoom.org/viewtopic.php?t=57886
|
2017-11-02 18:01:13 +02:00 |
|
Christoph Oelckers
|
daca12600d
|
- fixed: The ADDA_RK opcode used the wrong constant type for the offset it adds to the pointer.
|
2017-07-15 09:14:39 +02:00 |
|
alexey.lysiuk
|
279b1e27dc
|
Made usage of assertions in VM code consistent
https://forum.zdoom.org/viewtopic.php?t=56995
|
2017-06-22 10:36:08 +03:00 |
|
Christoph Oelckers
|
1ed415014e
|
- fixed: 'self' may never be null for native VM functions so it must always abort if null gets passed.
|
2017-06-05 08:43:12 +02:00 |
|
Christoph Oelckers
|
b50123ec6b
|
- avoid function call in VM code.
- return after calling ThrowAbortException because this avoids storing some register variables on the stack.
|
2017-05-30 17:50:56 +02:00 |
|