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)
frame->return_offset = (uint16_t)(next_instr - this_instr); would become frame->return_offset = INSTRUCTION_LENGTH; which is both easier to understand and wouldn't be rejected as tier 2 code.
In bytecodes.c we use both
next_instr - this_instr
and1 + 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)
frame->return_offset = (uint16_t)(next_instr - this_instr);
would becomeframe->return_offset = INSTRUCTION_LENGTH;
which is both easier to understand and wouldn't be rejected as tier 2 code.