/// <inheritdoc /> public DispatchResult Execute(CilExecutionContext context, CilInstruction instruction) { var(left, right) = BinaryOperationHelper.PopBinaryOperationArguments(context); var result = (left, right) switch { (IntegerValue a, IntegerValue b) => Execute(context, instruction, a, b), (FValue a, FValue b) => Execute(context, instruction, a, b), (OValue a, OValue b) => Execute(context, instruction, a, b), _ => DispatchResult.InvalidProgram(), };
/// <inheritdoc /> protected override Trilean VerifyCondition(ExecutionContext context, CilInstruction instruction) { var(left, right) = BinaryOperationHelper.PopBinaryOperationArguments(context); return((left, right) switch { (IntegerValue a, IntegerValue b) => VerifyCondition(context, instruction, a, b), (FValue a, FValue b) => VerifyCondition(context, instruction, a, b), (OValue a, OValue b) => VerifyCondition(context, instruction, a, b), _ => null, });