Henrik Rydgård
635b2ada43
Remove a function that didn't make a lot of sense.
2017-01-26 09:50:16 +01:00
Henrik Rydgård
6e49341b91
Workaround a shutdown crash by adding a sanity check .. which actually catches stuff. A bit worrying.
2017-01-26 08:43:26 +01:00
Henrik Rydgard
ffe4c266ef
Add CodeBlockCommon base class to remove further arch-specificity in JitBlockCache
...
Remove unused ArmThunk.
2016-05-01 11:40:00 +02:00
Henrik Rydgard
8b450c8034
Merge NativeJit.cpp/h with JitCommon.cpp/h
2016-05-01 11:39:59 +02:00
Henrik Rydgard
5aadce59a2
Move architecture-specific code out of JitBlockCache
2016-05-01 11:39:58 +02:00
Henrik Rydgard
a5be0976bd
Remove preprocessor hacks to choose JIT implementation.
...
Opens up for having multiple JIT implementations available at runtime,
which could be use for experimenting with new JIT compiler types or for
unit testing one JIT on another architecture.
Very few of the newly virtual calls are on any sort of critical path so
hopefully there will not be a performance loss.
2016-05-01 11:39:53 +02:00
Henrik Rydgard
d60f5ba285
Fix minor memory leak in JIT block cache
2016-02-10 15:43:36 +01:00
Unknown W. Brackets
eebe3e7bce
armjit: Fix block exit safety writes.
...
This ensures we don't link to invalid blocks, fixes BKPTs on relinking,
and fixes BKPTs when relinking a prelinked block.
Should help #8524 .
2016-01-30 20:44:57 -08:00
sum2012
8debe785b8
Revert "Fix Yu-Gi-Oh 6 crash with edit card in Android version"
...
This reverts commit f659e60c8d
.
The crash is correctly fixed
2015-12-29 04:10:18 +08:00
Henrik Rydgard
7fee5abf9f
x86/x64: Don't use a separate code block for pregenerated functions, just like on ARM
2015-10-08 22:15:28 +02:00
Henrik Rydgard
b7725c4f40
Remove empty header files
2015-10-08 18:54:33 +02:00
Unknown W. Brackets
cd842ac21f
Validate blocklinking in icache invalidate all.
...
Normally blocks are invalidated on entry. But when blocklinking is on,
we don't validate on all entries.
This fixes Tales of Rebirth crashes (#7868.)
2015-07-19 13:08:32 -07:00
Unknown W. Brackets
96b01e4999
Make sure we don't clean up proxy blocks.
2015-07-19 13:04:06 -07:00
Henrik Rydgård
59d0baca93
Add way to print some block bloat stats.
2015-04-11 00:12:56 -07:00
Henrik Rydgard
57e759a605
ARM64: Fix and turn on basic block linking
2015-04-06 18:13:17 +02:00
Henrik Rydgard
cc722f09f6
Improve ARM64 disassembly by merging MOVZ+MOVK. Minor stuff.
2015-04-06 18:13:07 +02:00
Henrik Rydgard
34ab532971
ARM64 jit: Fix some pointer truncations and other fun stuff..
2015-04-06 18:13:05 +02:00
Unknown W. Brackets
6c03fc4f01
Correct savestate interaction with proxy blocks.
...
At least, I think that's what's going wrong here. Either way, this is
safer and apparently fixes #7612 .
2015-03-17 23:50:20 -07:00
Unknown W. Brackets
6cc84ffdbb
jit: fix invalidation of blocks with only jr.
...
We need to expand the range not to the latest exit, but to the size of the
block.
2015-02-28 15:09:41 -08:00
Henrik Rydgard
2f6216d787
Fix bug in CwCheat icache invalidation. Fixes #7430
2015-02-04 10:56:38 +01:00
sum2012
f659e60c8d
Fix Yu-Gi-Oh 6 crash with edit card in Android version
...
This revert part of
74d8a9bdba
2015-01-13 22:01:02 +08:00
Henrik Rydgård
53ab7ab4b2
Fix FakeJit, start preparing a little for ARM64
2014-12-23 09:36:28 +01:00
Unknown W. Brackets
326c298207
armjit: Fix BKPT on simple exits.
...
If we get lucky and write a single-op destination address, we only emit
one op. So we have to check the next op before overwriting.
2014-12-22 22:56:15 -08:00
Henrik Rydgard
a54e0cf244
Goodbye PowerPC, you can always be resurrected when the time comes
2014-12-16 21:58:38 +01:00
Henrik Rydgard
4ec30d98e1
Port the x86 and ARM emitters over to use the generic CodeBlock class
2014-12-15 22:32:55 +01:00
Henrik Rydgard
05a8e2e35d
Some work towards being able to build two JITs together
...
This will be useful for testing/debugging, but not there yet.
2014-12-13 21:13:54 +01:00
Henrik Rydgard
8ad1ea4c84
Split JitCommon.h so that you can include it without getting the "NativeJit" definition
2014-12-13 21:13:28 +01:00
Henrik Rydgard
51d55bd645
Namespacing cleanup (it's bad to do "using namespace" in a header)
2014-12-07 14:44:15 +01:00
Henrik Rydgard
74d8a9bdba
Clean up after the block linker. armdis: add BKPT
2014-11-17 21:21:34 +01:00
Sacha
a0086f6412
Introduce a Fake JIT for generic builds.
2014-11-13 00:09:51 +10:00
Unknown W. Brackets
ad6b176e11
Naturally, modern C++ would not build on Symbian.
2014-11-03 08:56:45 -08:00
Unknown W. Brackets
61c21340fb
Warning fixes.
2014-11-03 08:34:34 -08:00
Unknown W. Brackets
9d86d3ca9b
Use std::unordered_multimaps in a few places.
2014-11-03 08:31:52 -08:00
Unknown W. Brackets
258b7c9a7c
jit: Use the end just to be safe.
...
In case clearing near the end of a block.
2014-10-27 19:05:52 -07:00
Unknown W. Brackets
5bb9d32eaa
jit: Fix partial invalidation of larger blocks.
...
Fixes #7031 .
2014-10-27 19:04:19 -07:00
Unknown W. Brackets
0c1dcfeacf
Avoid comparing invalidated iterators.
2014-10-22 00:50:39 -07:00
Unknown W. Brackets
65ecc9a464
jit: Use an exclusive end in the block map.
...
Simpler, was not consistent before, oops.
2014-10-21 11:52:19 -07:00
Unknown W. Brackets
ef6d583542
x86jit: Oops, don't pad INT3s in prelinked blocks.
...
Fixes #7007 .
2014-10-15 22:07:56 -07:00
Unknown W. Brackets
040a6d1745
jit: Improve performance of clearing jit.
2014-10-12 19:00:03 -07:00
Unknown W. Brackets
e6373aaed9
jit: Remove from the block map more carefully.
2014-10-12 17:47:07 -07:00
Unknown W. Brackets
2e81a38892
jit: Fix a possible infinite loop in invalidation.
2014-10-12 17:46:54 -07:00
Unknown W. Brackets
4853a1b7a0
jit: Optimize proxy block lookup from address.
...
It was really slow before with enough proxy blocks.
2014-10-12 17:35:23 -07:00
Unknown W. Brackets
01f9521dc5
jit: Invalidate blocks even if they end unevenly.
...
This allows blocks to start and end where ever they need, which should be
good for replacements and for continuing.
2014-10-12 17:13:04 -07:00
Unknown W. Brackets
90821b761d
x86jit: Pad linked exits with breakpoints.
...
So that we don't get garbage, and so we see if we end up there.
2014-10-12 16:00:58 -07:00
Henrik Rydgard
808f05da89
(Partially) slip thin3d underneath DrawBuffer.
2014-08-22 20:54:53 +02:00
Unknown W. Brackets
09b9d2ad81
Keep track of ranges that have emuhack ops.
...
So that we can invalidate them smarter.
2014-07-05 16:25:16 -07:00
Henrik Rydgård
585050de27
Fix crash in block cache
2014-05-27 22:02:20 +02:00
Unknown W. Brackets
95dcadb6ae
Ignore when a proxied block points to erased mem.
...
Happens for example when a new module is loaded, sometimes.
2014-05-04 01:25:19 -07:00
Unknown W. Brackets
7326c6e716
Fix a race condition on shutdown with hashmap.
...
Also, always need to init the blocks, they are not zero initialized.
2014-04-20 21:44:10 -07:00
Unknown W. Brackets
dc39e75fc1
Oops, forgot about proxy blocks for replace jal.
...
Also fix a crash when they are used.
2014-04-17 01:03:46 -07:00