Integer Slots
The layout of integer slots for my instances.
Entries
A compound field consisting of the hash value computed at construction time, and the number of outer variables that my functions must lexically capture.
A compound field consisting of the total number of slots to allocate in an A_Continuation representing an activation of this raw function, the number of arguments, the number of local variables, and the number of local constants.
The sequence of nybbles, in little-endian order, starting with an extra leading nybble indicating how many nybbles (0-15 of them) are actually unused in the final long. The nybblecodes describe what L1Operation to perform.
Properties
In Java it was possible to define this interface in such a way that the name method was abstract and implemented by each specific Enum, but Kotlin breaks this mechanism. BUT – we're able to cast this to Enum to get to that field. I believe this code gets copied down into each specific Enum subclass, so the dynamic type check for the cast is trivially eliminated in each case. And worst case, Hotspot will be able to inline calls to this from sites that are known to be Enums.
In Java it was possible to define this interface in such a way that the ordinal() method was abstract and implemented by each specific Enum, but Kotlin breaks this mechanism. BUT – we're able to cast this to Enum to get to that field. I believe this code gets copied down into each specific Enum subclass, so the dynamic type check for the cast is trivially eliminated in each case. And worst case, Hotspot will be able to inline calls to this from sites that are known to be Enums.
Functions
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
Returns an array containing the constants of this enum type, in the order they're declared.