Main Page | Class List | File List | Class Members | File Members | Related Pages

Todo List

page mach_override
Discontinue use of Carbon's MakeDataExecutable() and CompareAndSwap() calls and start using the Mach equivalents, if they exist. If they don't, write them and roll them in. That way, this code will be pure Mach, which will make it easier to use everywhere. Update: MakeDataExecutable() has been replaced by msync(MS_INVALIDATE). There is an OSCompareAndSwap in libkern, but I'm currently unsure if I can link against it. May have to roll in my own version...

Stop using an entire 4K high-allocated VM page per 28-byte escape branch island. Done right, this will dramatically speed up escape island allocations when they number over 250. Then again, if you're overriding more than 250 functions, maybe speed isn't your main concern...

Add detection of: b, bl, bla, bc, bcl, bcla, bcctrl, bclrl first-instructions. Initially, we should refuse to override functions beginning with these instructions. Eventually, we should dynamically rewrite them to make them position-independent.

Write mach_unoverride(), which would remove an override placed on a function. Must be multiple-override aware, which means an almost complete rewrite under the covers, because the target address can't be spread across two load instructions like it is now since it will need to be atomically updatable.


Generated on Sun Jun 12 22:09:34 2005 for mach_override by doxygen 1.3.4