|Title||MPS on OS X needs a protection module in order to be faster|
|Assigned user||David Jones|
|Description||The MPS on OS X is slow. In particular it is much slower than a stop-and-copy collector. See , RB's experiments with sc|
(Implemented on PowerPC OS X) Now required on Intel OS X.
|Analysis||One of the reasons it is slow is that OS X has no protection module (protxc). We need to implement a protection module in order to remove this cause of slowness.|
We could probably use protfr.c unmodified, or modified very little.
So far, 2005-03-04 it seems that whilst the mprotect code works
more or less as is, the signal handling seems screwed. Tests
seem to go into an infinite loop and when running under a debugger
it doesn't seem possible to handle the signal properly or break into the
signal handler, and so is impossible to debug.
Looking at the Boehm GC code (this is very unpleasant) suggests
that they use Mach vm_protect and exception handling. Not only
is this cool, it just might work.
 (a post by Timothy Wood of Omnigroup) seems incredibly
useful; I find by looking at the Boehm GC code.
Aha, it turns out that si_addr is the address of the faulting
instruction, and the faulting address is someplace else. Thanks
to NB for some snorkelling help.
Now proceeding with traditional UNIX mprotect / sigaction
handler. Which seems to work just fine.
Need to implement on Intel OS X. Probably using some
combination of protxcpp.c, protfri3.c, and protso.c
On Intel OS X the info->si_addr field is correct, so we can use
code which looks much like proto1.c (which is slightly cleaner
Implemented in protix.c for Intel Darwin.
|Created by||David Jones|
|Created on||2005-03-02 09:51:10|
|Last modified by||David Jones|
|Last modified on||2007-03-09 11:26:10|
|History||2005-03-02 DRJ Created|
2005-03-04 DRJ Updated
2007-02-20 DRJ Required for Intel now.
2007-03-02 DRJ MacTel notes.
2007-03-09 DRJ Closed
|161905||closed||2007-03-09 09:35:31||David Jones||MPS: Typo in config.h was breaking FreeBSD builds.|
|161902||open||2007-03-08 21:50:28||David Jones||MPS: Protection for Intel Darwin. Hopefully cross-platform.|
|147633||open||2005-03-04 15:53:57||David Jones||MPS: Removing some pretty useful printf debugging code from
|147632||open||2005-03-04 15:53:00||David Jones||MPS: oops. previous submit blatted over my dirty branch. must
have forgotten to p4 edit it.
|147629||open||2005-03-04 15:37:12||David Jones||MPS: implemented prot on OS X.|