On trunk, primitive operations return a 'tag', then we run a separate branch instruction which returns the equivalent Unison bool datatype.
This change alters primitive ops which return bools to simply put the correct unison bool directly onto the stack, saving an instruction on each boolean op.
Implementation notes
Alter primitive ops to push bools directly to the stack
Add some missing instructions to avoid the need for multiple instructions, e.g. NEQN instead of EQLN >>> NOTB
Overview
On trunk, primitive operations return a 'tag', then we run a separate branch instruction which returns the equivalent Unison bool datatype.
This change alters primitive ops which return bools to simply put the correct unison bool directly onto the stack, saving an instruction on each boolean op.
Implementation notes
NEQN
instead ofEQLN >>> NOTB
Test coverage
Existing transcripts