AsmJit
Low-Latency Machine Code Generation
Constant pool.
Constant pool is designed to hold 1, 2, 4, 8, 16, 32, and 64 byte constants. It's not designed to hold constants having arbitrary length like strings and arrays.
Creates a new constant pool that would use zone
as a memory allocator.
Destroys this constant pool.
Resets this constant pool and its allocator to zone
.
Tests whether the constant-pool is empty.
Returns the size of the constant-pool in bytes.
Returns minimum alignment.
Returns the minimum size of all items added to the constant pool.
Adds a constant to the constant pool.
The constant must have known size, which is 1, 2, 4, 8, 16 or 32 bytes. The constant is added to the pool only if it doesn't not exist, otherwise cached value is returned.
AsmJit is able to subdivide added constants, so for example if you add 8-byte constant 0x1122334455667788 it will create the following slots:
8-byte: 0x1122334455667788 4-byte: 0x11223344, 0x55667788
The reason is that when combining MMX/SSE/AVX code some patterns are used frequently. However, AsmJit is not able to reallocate a constant that has been already added. For example if you try to add 4-byte constant and then 8-byte constant having the same 4-byte pattern as the previous one, two independent slots will be used.
Fills the destination with the content of this constant pool.
Zone allocator.
Tree per size.
Gaps per size.
Gaps pool.
Size of the pool (in bytes).
Required pool alignment.
Minimum item size in the pool.