KOS_OP_OBJECT_COMPARE_VAR
Style: EXTRA (CMP, CONST, VAR, CONST). Row = bare selector, low bound (pool), middle operand name, high bound (pool). Schema-static slots: no source bits, the shape is the opcode.
Stack:
[...] → [..., result]. The ternary bounds idiom (const < x < const) with the middle operand resolved by name: chain-compare the three operands under the selector and push the chain result.Invariants: Selector is a valid KosCompare ordinal.
Compiler form: Produced by
ByteCodeProcessor.fuse_feederswhen the exact CONST / VAR / CONST feeder shape meets an arity-3 comparison. In value position the OBJECT_COMPARE quartet collapses to this row alone; in branch position the arity-3 CHECK_COMPARE splits into this row plusJUMP_FALSE(five fields cannot ride one row). Lowers toOBJECT_COMPARE_FASTthrough the genericconvert_fastpath. Cold handler.
Example: (< 0 x 100) by name.
index |
opcode |
arg |
arg view |
comment |
|---|---|---|---|---|
0 |
OBJECT_COMPARE_VAR |
0 |
(LT, c#0 (0), v#1 (‘x’), c#2 (100)) |
stack: […, bool] |