3 ms·
Not Rust, C++, but in case anybody wants an example: https://github.com/eclipse/omr/commit/fd99ca42fdbed76cc00e68a5931fcf5dc23a1d09 https://github.com/eclipse/o
by ShroudedNight 6y ago
Not Rust, C++, but in case anybody wants an example:
https://github.com/eclipse/omr/commit/fd99ca42fdbed76cc00e68a5931fcf5dc23a1d09 https://github.com/eclipse/omr/commit/fd99ca42fdbed76cc00e68...
TR::Region is the slab allocator used by the JIT in OpenJ9/OMR. The linked commit adds functionality for calling destructors of arbitrary types allocated in the Region.
- MaxBarraclough 6y agoInteresting, thanks. Seems to require use of a common base class though, i.e. to use a class with this pool, you have to inherit from Destructable, or else create a subclass that does. Seems ugly. Perhaps that's the only way it can be done in C++ though.
- projektfu 6y agoIt does create an object with that base class for the allocator but returns an object of the type you want from the allocator, using a template (Region::Instance<T>). So the API user only sees the types it's interested in.