[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:2834]Make Portable Dumper fit with Meadow heap manager.



さすがに林さんもMeadowというか、NTEmacsの(実はすでに微妙に異なる)Heap manager
の取り扱いに苦しんでいるようなので、この辺は少し私が担当しましょう。

大まかにはMeadowはstartup時にVirtualAlloc()で、Emacsで使えるaddress空間を
めいっぱいReserveしようとします。その後、gmalloc/r_alloc経由でやってくる
morecoreから呼び出されるsbrk()呼び出しで、Reserveされた領域を少しづつcommit
していくというapproachを取っています。

そういうわけで、Portable Dumperでは、Reserveされた領域の先頭部分を
Memory Mapped Fileに割り当てるという作業をすれば良いと思います。いまは
dumpされたheapをそのまま貼り付けているんですが。

しかし、ここで確か落とし穴があって、Windows9x系ではここでMMFが(エンロン騒ぎで
落ちている某Fundを思い出すな。)うまく動かないので、Windows9x系では、ReadFileで
ごまかす必要があったと思います。

from himi