So today I toyed with a technique that subdivides the address space into one megabyte chunks. Each one of these chunks is used to allocate objects for a single polymorphic class. However, the classes aren't implemented with traditional vtable techniques. Instead they have an implicit vptr that points to the beginning of the one megabyte chunk that they live in. If enough objects are created that multiple chunks are needed for a given class then that means that multiple copies of the vtable would exist.
It's not a new idea; I think I first read about it in D&E a number of years ago. However, today was the first time I looked at it from the angle of making it the default allocation scheme used by the compiler. At that point I got stopped cold. Multiple inheritance would be a mess, but I think there's a way around that. It was placement new and stack allocation that ended things. Basically the only way I could think of handling them would have meant restoring the vptr member which renders the whole idea more or less pointless.
Oh well, tommorrow I think I'll start work in my code library to make the manual implementation less painful.