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
Henrik Rydgard
58237d976f
Fix performance issue in BlockCache due to an instance of std::vector in every block:
...
Avoid creating the vector when not necessary.
This was especially noticeable in debug mode.
2014-03-29 22:26:51 +01:00
Henrik Rydgard
ef6e6083dc
Including <cstddef> here was reported to fix a build problem.
2014-02-07 23:05:03 +01:00
lioncash
aaf834c032
Fix the destruction proxy blocks in DestroyBlock() in JitBlockCache.cpp.
...
Prior to this, it was possible for the wrong block to be deleted multiple times.
2014-02-03 14:40:37 -05:00
Henrik Rydgård
28a518bfa7
Reformat JitBlockCache
2013-12-19 13:34:06 +01:00
Henrik Rydgård
2eb1f89ad0
Rework proxy blocks a bit
2013-12-19 13:31:13 +01:00
Henrik Rydgård
3957b5fb42
Call ProxyBlock in ArmJit too. Plus various cleanup and one more string function.
2013-12-19 11:45:39 +01:00
Henrik Rydgard
1cb7965cb1
Jit feature preparation: Introduce "proxy blocks".
...
When these are invalidated, the block they point to gets invalidated too.
Will be useful to implement various types of block merging and function inlining
without affecting correctness of cache clears etc.
Also, with this commit we can now fully inline replaced functions. fabsf() boils
down to 1-2 instructions and the block continues, for example.
2013-12-19 00:39:49 +01:00
Henrik Rydgard
2d8429ac48
Assorted cleanup in the MIPS emulation
2013-12-10 13:15:16 +01:00
Henrik Rydgard
f696650437
Implement vasin (fastasin5 from unittest) in ARM jit, add a sanity check.
2013-12-01 14:14:04 +01:00
Unknown W. Brackets
5ba94aa939
Correct jit block size for profiling.
2013-12-01 02:34:37 -08:00
Unknown W. Brackets
5d2ff64252
Support for modified jit-enabled VerySleepy.
...
This allows profiling the jit. Should have zero perf impact when not
in use, since it's entirely triggered by VerySleepy.
2013-11-30 19:20:21 -08:00
Unknown W. Brackets
394d91371f
Avoid clearing the jit cache on savestate.
...
Downside: saving state could "fix" some issues with games detecting jit,
which won't happen anymore.
However, it's now faster to savestate.
2013-09-29 14:26:13 -07:00
Unknown W. Brackets
14bcca1f53
Fix InvalidateICache() breaking binary searching.
2013-09-01 00:32:42 -07:00
Unknown W. Brackets
109ad17ac6
Use a typesafe struct for opcodes.
...
Also, correctly read delayslots using Read_Instruction on ARM.
2013-08-24 15:36:24 -07:00
Henrik Rydgård
a678621caf
Merge pull request #3191 from Ced2911/ppc_basic
...
ppc support + ppc jit
2013-08-16 12:16:49 -07:00
Ced2911
1a5c6b59c5
add ppc jit
2013-08-16 14:40:29 +02:00
Unknown W. Brackets
14b719a7ac
Make it possible to have more block exits.
2013-08-16 00:12:49 -07:00
Unknown W. Brackets
7b7801d59a
Switch to including Windows.h from an intermediate.
...
This makes it easier for Xbox which uses a separate header.
2013-07-28 21:04:19 -07:00