|
From: Andreas R. <and...@gm...> - 2004-04-06 21:45:25
|
Oh, I almost forgot that: Here is one issue which is actually VERY high up on my VM/image-wishlist. It is the ability to have bits objects that won't be moved around by GC. In other words, a large portion of the time we spend in full GC is to move ridiculous amounts of bits around for no particular reason - say a 3MB Display bitmap. In general, this isn't overly problematic as this gets "old" rather rapidly but if you look at "heavy media environments" (say one of Alan's 200MB demos, or a fully loaded Croquet image) this is actually where most of the time for GC is spent. If we could get these bit objects to be ignored by the garbage collector we would a) speed up GCs and b) enable "external" clients (say like 3D rendering) to actually share these bits with Squeak (this has a whole lot of advantageous implications which I won't go into detail here). What does this have to do with V4? The easiest way to solve the above problem is to either allocate it "from the top" of Squeak's heap or via a C allocator and just make sure these bit objects are properly read and written. That's the approach I would take but it requires a tiny bit of support from the image format - namely that these "external bits" are separated from the "regular objects", e.g., the image format would have some marker that says "okay, here are the fixed bit objects" so that they can be allocated in the "right" portion of memory. Cheers, - Andreas |