344 Commits

Author SHA1 Message Date
Lioncash
f6c21e002b General: Remove unnecessary semicolons 2017-07-30 16:39:53 -04:00
Tillmann Karras
9a2bef97da JitCache: use SymbolDB names as JIT block names 2017-06-18 06:58:44 +01:00
Lioncash
b676edd80c Core: include what you use
Eliminates a swath of indirectly included standard headers
2017-06-07 01:20:48 -04:00
MerryMage
cac77527e9 Jit64: Make psq_lXX PIE-compliant 2017-04-14 11:52:33 +01:00
Lioncash
8d98ac6509 CPU: Convert state enum to an enum class
Gets enum constants out of the immediate namespace. Also makes it
strongly typed like the other state enums.
2017-03-28 11:48:28 -04:00
Lioncash
0d1bc53e55 JitBase: Rename MergeAllowedNextInstructions to CanMergeNextInstructions
This is more indicative that it's checking for something
2017-03-21 13:50:03 -04:00
Lioncash
f98211bfcf JitBase: Make MergeAllowedNextInstructions a const member function 2017-03-21 13:45:18 -04:00
MerryMage
b0d6c29073 JitAsmCommon: Add missing sizes to constant arrays
This allows generic code to determine the size of these arrays.
2017-03-20 20:21:41 +00:00
Lioncash
c6200a5b07 JitInterface: Convert includes into forward declarations where applicable 2017-03-02 13:20:29 -05:00
aldelaro5
9ad6c8f334 Make memory breakpoint faster
Currently, slowmem is used at any time that memory breakpoints are in use.  This commit makes it so that whenever the DBAT gets updated, if the address is overllaping any memchecks, it forces the use of slowmem.  This allows to keep fastmem for any other cases and noticably increases performance when using memory breakpoints.
2017-03-02 04:46:27 -05:00
aldelaro5
52fe05af6b Make memory breakpoint faster
Currently, slowmem is used at any time that memory breakpoints are in use.  This commit makes it so that whenever the DBAT gets updated, if the address is overllaping any memchecks, it forces the use of slowmem.  This allows to keep fastmem for any other cases and noticably increases performance when using memory breakpoints.
2017-02-28 13:02:04 -05:00
degasus
ffa61fcf57 JitCache: Also unlink exits of the current block.
We might still be in the current block. This is fine, but the next one might also be invalidated later on. But we may never also call the next one.
2017-02-27 23:50:16 +01:00
degasus
c1ddc2678e JitCache: Fix removing of blocks. 2017-02-27 23:50:16 +01:00
Lioncash
359528b805 JitBase: Put constructor and destructor in the cpp file
As this is a base class with virtuals, there needs to be an out-of-line
function definition to prevent the vtable of the class being placed within
every translation unit it's used in (i.e. every JIT implementation).
2017-02-23 13:50:47 -05:00
degasus
384efb0cb2 JitArm64: Initial implementation of the BLR optimization. 2017-02-02 09:06:34 +01:00
degasus
d3aee2de08 JitCache: Split off JIT call from dispatcher.
This avoid flushing the BLR optimization stack on fast_block_cache misses.
2017-01-25 01:51:19 +01:00
Florent Castelli
a7bf9271b5 Fix missing includes 2017-01-24 03:31:51 +01:00
degasus
7f6b8e3555 JitCache: Extract ErasePhysicalRange as function. 2017-01-23 20:33:44 +01:00
degasus
70caf447b9 JitCache: Get physical addresses from PPCAnalyst.
So we support all kind of degenerated blocks now, not just range+length based ones.
2017-01-23 20:33:44 +01:00
degasus
f3ed993747 JitCache: Use a map with macro blocks for the occupied memory regions.
This also allow fast invalidation, without any restritions on the blocks itself.
So we can now implement inlining.
2017-01-23 20:33:44 +01:00
degasus
dc0fbc15f0 JitCache: Drop block_map.
It is only used for invalidation, and in a bad way. Just scan over all elements,
as it is still in O(n), this shouldn't matter much.
2017-01-23 20:33:44 +01:00
degasus
819ebfb213 JitCache: Freeing hotfix.
Sorry, I'm too stupid to test my code.
2017-01-23 06:58:02 +01:00
degasus
8e00c411a3 JitCache::Rename iCache to fast_block_map.
iCache sounds too much like emulation.
2017-01-22 17:10:28 +01:00
degasus
830ae6a2c1 JitCache: Store the JitBlock in the std::map. 2017-01-22 16:50:46 +01:00
degasus
9b77a39767 JitCache: Only call DestroyBlock on valid blocks. 2017-01-22 16:50:46 +01:00
degasus
113d6b3b84 JitCache: Use a multimap for block_map and start_block_map.
We may have duplicated entries here because of MSR mismatch. Just
store both and validate the matching one on cache access.
2017-01-22 16:50:46 +01:00
degasus
9d58127dec JitCache: Move JitBlock config variable. 2017-01-22 16:50:46 +01:00
degasus
352909fc4c JitCache: Track the ICache entry of jit blocks.
This guarantees that no invalidated jit block is still in the icache.
2017-01-22 16:50:14 +01:00
degasus
c9c5437cb8 JitCache: Fix links_to updates on destroying blocks. 2017-01-22 11:37:22 +01:00
degasus
fe41ed7fa1 JitCache: Use pointers in the ICache and dispatchers. 2017-01-12 21:43:28 +01:00
degasus
a8b26937f3 JitCache: Clean up GetBlockFromStartAddress. 2017-01-12 20:24:43 +01:00
degasus
214f37ecef JitCache: Rename variables. 2017-01-12 20:23:14 +01:00
degasus
3ee178abe7 JitCache: Drop unused functions. 2017-01-12 20:23:14 +01:00
degasus
7e850361fb JitCache: Add a helper function to iterate over all blocks. 2017-01-12 20:23:14 +01:00
degasus
ca026b58ab JitCache: Use a pointer in links_to. 2017-01-12 20:23:14 +01:00
degasus
928ccbef53 JitCache: Use a pointer in block_map. 2017-01-12 20:23:14 +01:00
degasus
74a27d9742 JitCache: Use a pointer in start_block_map. 2017-01-12 20:23:14 +01:00
degasus
2d5288dc10 JitCache: Return a pointer in AllocateBlock. 2017-01-12 20:23:14 +01:00
degasus
f14cebf079 JitCache: Use a pointer in FinalizeBlock. 2017-01-12 20:23:14 +01:00
degasus
d3aa8c8080 JitCache: Return a pointer in GetBlockFromStartAddress. 2017-01-12 20:23:14 +01:00
degasus
f6ec96efbd JitCache: Use a pointer in DestroyBlock. 2017-01-12 20:23:14 +01:00
degasus
68c85d32f7 JitCache: Use a pointer in UnlinkBlock. 2017-01-12 20:23:14 +01:00
degasus
eb390f3020 JitCache: Use a pointer in LinkBlock. 2017-01-12 20:23:14 +01:00
degasus
ccb8c44a5a JitCache: Use a pointer in LinkBlockExits. 2017-01-12 20:23:14 +01:00
Lioncash
37d10064b8 JitCache: Get rid of reliance on the JIT global variable 2017-01-09 04:43:06 -05:00
Lioncash
2b8ede8dc6 JitCache: Move implementation details into the cpp file 2017-01-09 04:43:04 -05:00
Lioncash
cf18aeb1eb JitCache: Move private class details below public details
Also organizes cpp file organization to match the function layout.
2017-01-09 04:42:59 -05:00
Léo Lam
8bef7259e3 Add the g_ prefix to the jit global
Jan 04 22:55:01 <leoetlino>   fwiw, it looks like there are new warnings in the RegCache code
Jan 04 22:55:04 <leoetlino>   Source/Core/Core/PowerPC/Jit64/FPURegCache.cpp:13:33: warning: declaration shadows a variable in the global namespace [-Wshadow]
Jan 04 22:56:19 <@Lioncash>   yeah, the jit global should have a g_ prefix.

This fixes shadowing warnings and adds the g_ prefix to a global.
2017-01-07 23:19:49 +01:00
Lioncash
36c99df9f5 Jit: Move most x86-64-specific code out of JitCommon 2016-12-14 04:43:25 -05:00
degasus
21f3e97435 Jit64: Avoid pointer casts if possible. 2016-12-04 13:09:16 +01:00