Andreas Kling
3c74dc9f4d
LibJS: Segregate GC-allocated objects by type
...
This patch adds two macros to declare per-type allocators:
- JS_DECLARE_ALLOCATOR(TypeName)
- JS_DEFINE_ALLOCATOR(TypeName)
When used, they add a type-specific CellAllocator that the Heap will
delegate allocation requests to.
The result of this is that GC objects of the same type always end up
within the same HeapBlock, drastically reducing the ability to perform
type confusion attacks.
It also improves HeapBlock utilization, since each block now has cells
sized exactly to the type used within that block. (Previously we only
had a handful of block sizes available, and most GC allocations ended
up with a large amount of slack in their tails.)
There is a small performance hit from this, but I'm sure we can make
up for it elsewhere.
Note that the old size-based allocators still exist, and we fall back
to them for any type that doesn't have its own CellAllocator.
2023-11-19 12:10:31 +01:00
..
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-13 20:10:58 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-07 11:33:04 +01:00
2023-11-07 11:33:04 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-13 13:33:43 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-10 08:22:44 +01:00
2023-11-10 08:22:44 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-10 08:22:44 +01:00
2023-11-10 08:22:44 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-10-31 18:09:14 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-09 10:05:51 -05:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-09 10:05:51 -05:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-14 09:54:48 +01:00
2023-11-05 18:44:48 +01:00
2023-11-02 07:37:41 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00
2023-11-19 12:10:31 +01:00