hrydgard/ppsspp — pull request #3373 by unknownbrackets (2013-08-25 00:48:32+00:00)
Title: Cap imm branch instructions, reset compiling

Break and other delay slot ops could've set js.compile to false, which was the problem. It's actually sometimes faster now. I guess it was just because of that?

Also adds a check to make sure there's free code space within the jit loop. It could be slightly slower to compile, but I don't know of any games compiling at run time, and it's a good safety. Could be causing crashes, who knows. Anyway, this change is the only practical impact since the continuing options are still disabled by default.

With that, I can unlock/uncap imm branches and I get ~60% spill in God Eater Burst for example. At least it's a definite result.

Another interesting thing: with these off, I was getting ~1340% in one game, and then I saved state and loaded state... and got ~1410%. In comparison with these settings on I was getting ~1420%, and save/load brought me to ~1430%. Not sure I understand why...

If anyone wants to test it, you can play with these options in MIPS/x86/Jit.h:

```c++
immBranches = false;
continueBranches = false;
continueMaxInstructions = 300;
```

Note that `continueMaxInstructions` does nothing with the others off, and can safely be set to as high a number as you like.

-[Unknown]