private ILEmitter EmitCompareAsSortedArrays(ILEmitter il, Label gotoNext, LocalBuilder x, LocalBuilder y) { var hasCustomComparer = _configuration.HasCustomComparer(_elementType); il.EmitArraySorting(hasCustomComparer, _elementType, x, y); var arrayType = _elementType.MakeArrayType(); return(_arrayComparisonEmitter.EmitCompareArrays(il, arrayType, _variable.OwnerType, x, y, gotoNext)); }
public ILEmitter Emit(ILEmitter il, Label gotoNext) { var arrayType = _variable.VariableType; var(arrayX, arrayY) = _arrayComparisonEmitter.EmitLoad(_variable, il, gotoNext); if (_configuration.Get(_variable.OwnerType).IgnoreCollectionOrder) { var elementType = arrayType.GetElementType(); var hasCustomComparer = _configuration.HasCustomComparer(elementType); il.EmitArraySorting(hasCustomComparer, elementType, arrayX, arrayY); } return(_arrayComparisonEmitter.EmitCompareArrays(il, arrayType, _variable.OwnerType, arrayX, arrayY, gotoNext)); }