Commit graph

95 commits

Author SHA1 Message Date
Jean-Philip Desjardins
340e04dd8a Fix block linking support. 2022-10-25 17:27:52 -04:00
Mahmood - Zer0xFF
eb057660d5 Add CBasicBlock::CopyFunction(...) 2022-10-25 17:27:51 -04:00
Mahmood - Zer0xFF
2f4f10e91c make VU jumps relative: pass instruction relative location CMIPSInstructionFactory 2022-10-25 17:27:51 -04:00
Jean-Philip Desjardins
5bc4a8cf9e Use GetInstruction to fill in AOT block data. 2022-10-17 14:34:20 -04:00
Jean-Philip Desjardins
4a7b10cad1 Add block category concept. 2022-10-17 14:27:13 -04:00
Mahmood - Zer0xFF
9dc94fbb51 use zstd zlibwrapper 2022-05-15 22:46:03 +01:00
Jean-Philip Desjardins
1ddf39c5eb Code style fixes. 2022-02-08 18:43:33 -05:00
Jean-Philip Desjardins
ea6af15314 PsfPlayer for JS PoC 2022-02-08 18:41:06 -05:00
Jean-Philip Desjardins
dd90e7b7ae Move idle loop detection logic.
This is an EE only thing, no point in having this in the generic code.
2022-01-21 20:09:08 -05:00
Jean-Philip Desjardins
12522ef437 Improve idle block detection.
Should help Mark of Kri and Speed Kings.
2022-01-21 20:09:08 -05:00
Jean-Philip Desjardins
8f2c6e2af6 Make sure we check delay slot instruction. 2022-01-21 20:09:08 -05:00
Jean-Philip Desjardins
f50d3573d2 Improve again.
This helps catch loops that wait for DMA to complete. Gives a small boost in some games.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
32dafbb660 Improved detection.
For Resident Evil: Code Veronica.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
e0858565d5 Improved detection.
Fixes some false positives. Improves TriAce games.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
0e99d6b6e6 Limit idle loop detection to EE.
Will improve the check later.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
7e51fc99c4 Add analysis to detect blocks that just loop waiting for a flag to change.
If we find such a case, the block will stop executing its quota and report idle time.

This first version improves Castlevania: Curse of Darkness and Contra: Shattered Soldier.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
e5e9a6cb76 Add padding in AOT_BLOCK_KEY to align pointers on 8 bytes. 2021-01-14 12:58:45 -05:00
Jean-Philip Desjardins
b99ac3e3d8 Greatly improve block link bookkeeping algorithm.
Improves performance on code generating games/homebrew.
2020-08-06 16:57:12 -04:00
Jean-Philip Desjardins
2ae43e0320 Don't cache blocks that have breakpoints.
Broke breakpoint toggling.

(cherry picked from commit 3d2ed9e20f2b917b10f359ee76c8724192e839c2)
2020-02-10 21:40:09 -05:00
Jean-Philip Desjardins
95584611ca Add a no link threshold for recycled blocks.
Significatively improves speed of Jak series games.
2019-12-20 21:25:33 -05:00
Greg Land
131a709e11 Removed this assert as per discord conversation.
Removed assert that was stopping Dark Cloud from loading saved games when asserts are enabled
2019-09-12 01:15:09 -04:00
Jean-Philip Desjardins
1604a613af Disable block linking when using AOT. 2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
9b454de926 Disable block linking when doing AOT. 2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
dd3853dc7e Fix issues occurring with empty blocks. 2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
9f4eda3d3d Make block link related functions externally linkable. 2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
03fa233c4f Use JumpToDynamic for block linking targets. 2019-05-08 13:46:15 -04:00
Jean-Philip Desjardins
fa754f0403 Moved check for symbol ref type. 2018-09-30 10:40:10 -04:00
Jean-Philip Desjardins
e584f5d639 Update for CodeGen's new external symbol ref handler. 2018-09-28 13:31:24 -04:00
Jean-Philip Desjardins
a68cf01d09 Fix build. 2018-07-26 21:38:17 -04:00
Jean-Philip Desjardins
3210ffecfa Breakpoints now work again. 2018-07-26 21:38:17 -04:00
Jean-Philip Desjardins
f2f0b9e6ca Prolog is actually the epilog. 2018-07-26 21:38:16 -04:00
Jean-Philip Desjardins
3f7f6ae29d Notify CMemoryFunction that we're modifying the function. 2018-07-26 21:38:16 -04:00
Jean-Philip Desjardins
9ddbdf80b2 Fix handling of likely branches. 2018-07-26 21:38:16 -04:00
Jean-Philip Desjardins
1b0bfaab36 Fix formatting. 2018-07-26 21:38:16 -04:00
Jean-Philip Desjardins
8cdc57e0e4 Fix Unix build. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
ab5aebc3a7 Make sure everything is coherent when deleting blocks. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
3952e74d32 Simplify block link code. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
676d301ab2 Fix build. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
1f4ba149a1 Block link WIP. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
890708fcba Code style fixes. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
193e72635a Block lookup table now only stores "entry-point" functions to guest code.
Used to be a 1 to 1 map to covering function for a specific address.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
dc597e34ce Add empty block concept. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
b30658ba1a Move cycle quota update to block prolog. 2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
5e6058b530 Move PC changing piece of code in compiled block.
Makes basic blocks more generic.
2018-07-26 21:38:14 -04:00
Jean-Philip Desjardins
2f6cadb3e1 Cleanup. 2018-07-26 21:38:14 -04:00
Clang-Format
acf75535ec Clang format 2018-04-30 21:01:23 +01:00
Jean-Philip Desjardins
f97d0a1c47 Remove self loop counter. 2017-08-09 23:05:30 -04:00
Jean-Philip Desjardins
3098487d33 Cleanup. 2017-08-09 23:05:30 -04:00
Mahmood(Thunder07)
97c229ec98 Cleanup
Silence:"warning: '0' flag ignored with precision and ‘%X’ gnu_printf format"
2017-05-29 06:01:32 +01:00
Jean-Philip Desjardins
25e817802a Handle case where block with fixed end branch is not taken. 2017-04-15 00:36:48 -04:00