The internal function SB-KERNEL:ASSERT-ERROR is called when an assertion fails. One of its arguments is a list of (<form> <value>) lists. This list is assembled at the caller.
Instead, change SB-KERNEL:ASSERT-ERROR to take two arguments in place of that one: the list of forms, and the list of their values. The list as previously passed can then be reconstructed in SB-KERNEL:ASSERT-ERROR itself. The list of forms is a compile time constant, so this reduces the amount of allocation at the caller by a factor of 3. More importantly, it reduces the size of the code footprint in user code for ASSERT.
The internal function SB-KERNEL: ASSERT- ERROR is called when an assertion fails. One of its arguments is a list of (<form> <value>) lists. This list is assembled at the caller.
Instead, change SB-KERNEL: ASSERT- ERROR to take two arguments in place of that one: the list of forms, and the list of their values. The list as previously passed can then be reconstructed in SB-KERNEL: ASSERT- ERROR itself. The list of forms is a compile time constant, so this reduces the amount of allocation at the caller by a factor of 3. More importantly, it reduces the size of the code footprint in user code for ASSERT.