Yes, that idea has been discussed before. If you can assume an MMU there are various useful things you can do, incl. a page-based write-barrier that is effectively zero-cost (i.e., mprotect old space; trap the write access, mark the page as root) which of course works well in combination with read-only memory regions.
Cheers, - Andreas
On 5/9/2011 14:16, Igor Stasenko wrote:
Just a follow-up to recent thread.
Suppose that we have new object format which supports multiple memory regions. I.e. eden space old space pinned space ... and immutable space
so, instead of adding a flag per object whether its immutable or not, and then check this flag every time there is a write attempt, we could simply let hardware handle this. And immutable space is a memory region with read-only access, So once placed& sealed , any attempt to write, we lead to a hardware exception, which can be nicely handled :)
So, we will have a single entry point for all write access , and don't need to spread an immutability logic all over the places. And of course hardware 'check if memory is writeable' is much faster than software one.
What you think?