[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:2834]Make Portable Dumper fit with Meadow heap manager.
- X-ml-count: 2834
- Subject: [MD:2834]Make Portable Dumper fit with Meadow heap manager.
- From: MIYASHITA Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxx>
- Date: Sat, 19 Jan 2002 12:44:57 +0900
- User-agent: T-gnus/6.15.4 (based on Oort Gnus v0.04) (revision 11) SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.3 Emacs/21.0.104 (i386-msvc-nt5.1.2600) MULE/5.0 (SAKAKI) Meadow/1.99 Preliminary-Alpha--5 (AKUTOU)
さすがに林さんも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