I had trouble understanding the alignment code, especially
align_table. Ideas:
Use ALIGNOF maybe?
The maximum alignment required should be perhaps (from opaque.h)
typedef union
{
struct { Lisp_Object obj; } obj;
struct { void *p; } p;
struct { double d; } d;
} max_align_t;
We could move max_align_t to lisp.h, and have
size_t max_alignment = ALIGNOF (max_align_t);
Wouldn't we get a tremendous performance boost by having the
lrecord_implementations_table indices be constant? We would lose a
level of indirection on every FOOP, because it would not have to
examine lrecord_implementations_table itself.