Thread Closed 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
About breakpoints and the JIT cache
01-19-2014, 05:28 AM (This post was last modified: 01-19-2014 05:30 AM by [Unknown].)
Post: #2
RE: About breakpoints and the JIT cache
1. Intended. Otherwise, you must build a debug build. Checking for breakpoints is extremely slow in the interpreter (even if there are 0) and not enabled in release mode. Jit only gets slower if you add memory breakpoints, and so they are always enabled.

2. You should be able to call sceKernelIcacheInvalidateRange(). Alternatively, you can write the entire range. As long as you overwrite the first word of each block, it will automatically recompile it during jit.

If you modify (e.g. xor, add, etc.) the existing opcodes, you are very likely to cause a crash while in jit. If you are doing this, call sceKernelIcacheInvalidateRange() __BEFORE__ modifying them. Jit actually modifies the opcodes to indicate where the jitted code is in host memory, so when you alter this, it confuses jit. It's a bit of a hack but seems to work with the self-modifying code of all games we've run into.

-[Unknown]
Find all posts by this user
Thread Closed 


Messages In This Thread
RE: About breakpoints and the JIT cache - [Unknown] - 01-19-2014 05:28 AM

Forum Jump: