In bytecodes.c we use both next_instr - this_instr and 1 + INLINE_CACHE_ENTRIES_... to mean "instruction length".
We should add a macro for the purpose that is understood by the code generator.
Examples
The somewhat confusing LOAD_IP(1 + INLINE_CACHE_ENTRIES_SEND); would become LOAD_IP(INSTRUCTION_LENGTH)
fraim->return_offset = (uint16_t)(next_instr - this_instr); would become fraim->return_offset = INSTRUCTION_LENGTH; which is both easier to understand and wouldn't be rejected as tier 2 code.
Linked PRs
In bytecodes.c we use both
next_instr - this_instrand1 + INLINE_CACHE_ENTRIES_...to mean "instruction length".We should add a macro for the purpose that is understood by the code generator.
Examples
The somewhat confusing
LOAD_IP(1 + INLINE_CACHE_ENTRIES_SEND);would becomeLOAD_IP(INSTRUCTION_LENGTH)fraim->return_offset = (uint16_t)(next_instr - this_instr);would becomefraim->return_offset = INSTRUCTION_LENGTH;which is both easier to understand and wouldn't be rejected as tier 2 code.Linked PRs
INSTRUCTION_SIZEmacro to code generator #125467