Commit Graph
116 Commits
Author SHA1 Message Date
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årdandUnknown W. Brackets 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
https://github.com/hrydgard/ppsspp/commit/74d8a9bdba9b8348e60e8a6b40b01da26b5eb020
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