Magnus Norddahl
3ba6290419
- add support in the jit compiler to do direct native calls using the x64 calling convention
2018-11-23 04:47:18 +01:00
Magnus Norddahl
a8a9ec98f3
- only allocate stack space for vmframe and call returns when we need them
2018-11-18 13:49:19 +01:00
Magnus Norddahl
e778f05b12
- don't emit VMValue.Type information when we know the receiver isn't going to read it anyway
2018-11-18 12:59:53 +01:00
Magnus Norddahl
486b7e0f3c
- delay emitting PARAM and VTBL instructions until CALL/CALL_K
2018-11-18 12:38:55 +01:00
Christoph Oelckers
629d329f22
- removed OP_TAIL.
...
The amount of support code for this minor optimization was quite large and this stood in the way of streamlining the VM's calling convention, so it was preferable to remove it before moving on.
2018-11-18 07:43:03 +01:00
Magnus Norddahl
7e0dacdb1d
- disabled code that shows how a thunk function and native setup would look like
2018-11-17 16:26:54 +01:00
Magnus Norddahl
68afc419af
- inline ReadBarrier, GetClass and GetClassMeta
2018-11-17 10:54:16 +01:00
Magnus Norddahl
f082a8af98
- removed the SetupSimpleFrameMissingArgs logic as the number of args are now guaranteed
2018-11-17 00:49:22 +01:00
Magnus Norddahl
ac28f0d34f
- remove unused argument
2018-11-16 01:33:41 +01:00
Magnus Norddahl
34b037c9db
- avoid calling VMFillParams for simple stack frames
...
- split Setup into more functions
2018-11-16 01:13:25 +01:00
Chronos Ouroboros
566eb58000
Fixed the Vector2/3 != operator.
2018-11-14 20:01:13 +01:00
Chronos Ouroboros
5375a99cf6
Added support for CMP_APPROX to EQV_R and moved the code to a template.
2018-11-14 10:29:48 -02:00
Magnus Norddahl
e6023c55a8
- modify exception checks to jump ahead if the exception is to be thrown as it limits static misprediction
2018-11-10 22:48:20 +01:00
Magnus Norddahl
173fe94736
- fix the throw messages
2018-11-10 19:52:41 +01:00
Magnus Norddahl
1f0add9067
- update JIT PARAM handling to match the VM instruction change
2018-10-14 23:13:30 +02:00
Magnus Norddahl
cf9bae67a8
- construct our own runtime as the one provided by asmjit is too primitive
2018-10-14 00:46:54 +02:00
Magnus Norddahl
7ca598de2d
- remove the frameX registers as they were just constant offsets to vmframe that could be merged into other constant offsets
2018-10-12 07:41:16 +02:00
Magnus Norddahl
c86e4480b6
- give temp registers names and reuse the FString object for formatting names
2018-10-12 06:59:03 +02:00
Magnus Norddahl
44294a051a
- clean up assembly output slightly by only generating labels for the opcodes jumped to
2018-10-12 06:14:27 +02:00
Magnus Norddahl
0120ea190c
- remove the need to do any VARF_Native runtime checks by making native functions use the same calling convention as the script version
2018-10-10 23:47:56 +02:00
Magnus Norddahl
b6bc06e568
- do script calls directly from asmjit without using a lambda wrapper
...
- do VARF_Native check at compile time when possible
2018-10-10 22:08:26 +02:00
Magnus Norddahl
884e185db0
- switch to using setjmp/longjmp for exception handling
2018-10-09 16:30:55 +02:00
Magnus Norddahl
9c3b8507af
- add missing include statement
2018-10-09 07:15:46 +02:00
Magnus Norddahl
bee3a964ae
- remove argument not used anymore
2018-10-09 05:18:44 +02:00
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
d643fbd077
- removed CanJit as all opcodes are now implemented
...
- fix some store bugs
2018-10-07 22:21:48 +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
5bf76523d6
- switch ToMemAddress to imm_ptr where allowed
2018-09-18 18:13:53 +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
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
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
Jonathan Russell
11fbd9a0a4
- added string PARAM and RET
2018-09-14 18:20:31 +01:00
Jonathan Russell
0b6c514067
- added OP_MOVES, OP_CONCAT, OP_LENS, OP_CMPS
2018-09-13 20:31:06 +01: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