We only want to have 8 values so that we can have a reasonable size for fix numbers without allocation (61 bits). This also means that we want to promote FixNumbers to a value type.
Off the top of my head, the following can be easily moved to record types:
undefined can be moved to pair in the same way as null was
RecordTypeDescriptor has no reason to be in Value
Port should be a record type
HashTable should be a record type
Syntax might be fine to move, but need to check the performance implications
ByteVector is probably fine to move, Vector is a bit of a stretch
We only want to have 8 values so that we can have a reasonable size for fix numbers without allocation (61 bits). This also means that we want to promote FixNumbers to a value type.
Off the top of my head, the following can be easily moved to record types:
undefinedcan be moved to pair in the same way asnullwasRecordTypeDescriptorhas no reason to be inValuePortshould be a record typeHashTableshould be a record typeSyntaxmight be fine to move, but need to check the performance implicationsByteVectoris probably fine to move,Vectoris a bit of a stretch