From 53ddb0f44be5652e998a16cac743a0cff0659dce Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Sun, 30 Aug 2020 13:37:30 +0200 Subject: [PATCH 1/2] Improved codegen in ImageSharp.Guard --- src/ImageSharp/Common/Helpers/Guard.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ImageSharp/Common/Helpers/Guard.cs b/src/ImageSharp/Common/Helpers/Guard.cs index 751920683e..8ce6c4b4d6 100644 --- a/src/ImageSharp/Common/Helpers/Guard.cs +++ b/src/ImageSharp/Common/Helpers/Guard.cs @@ -20,10 +20,12 @@ internal static partial class Guard [MethodImpl(InliningOptions.ShortMethod)] public static void MustBeValueType(TValue value, string parameterName) { - if (!value.GetType().GetTypeInfo().IsValueType) + if (value.GetType().GetTypeInfo().IsValueType) { - ThrowHelper.ThrowArgumentException("Type must be a struct.", parameterName); + return; } + + ThrowHelper.ThrowArgumentException("Type must be a struct.", parameterName); } } } From e740fb6e455c62b6773c2b06b7e90b07d24e5140 Mon Sep 17 00:00:00 2001 From: Sergio Pedri Date: Tue, 1 Sep 2020 13:18:45 +0200 Subject: [PATCH 2/2] Improved Guard.MustBeValueType codegen Can now be JITted to a constant on .NET 5, see https://github.com/dotnet/runtime/pull/1157 --- src/ImageSharp/Common/Helpers/Guard.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ImageSharp/Common/Helpers/Guard.cs b/src/ImageSharp/Common/Helpers/Guard.cs index 8ce6c4b4d6..0b5cc21cb8 100644 --- a/src/ImageSharp/Common/Helpers/Guard.cs +++ b/src/ImageSharp/Common/Helpers/Guard.cs @@ -2,7 +2,9 @@ // Licensed under the Apache License, Version 2.0. using System; +#if NETSTANDARD1_3 using System.Reflection; +#endif using System.Runtime.CompilerServices; using SixLabors.ImageSharp; @@ -20,7 +22,11 @@ internal static partial class Guard [MethodImpl(InliningOptions.ShortMethod)] public static void MustBeValueType(TValue value, string parameterName) { - if (value.GetType().GetTypeInfo().IsValueType) + if (value.GetType() +#if NETSTANDARD1_3 + .GetTypeInfo() +#endif + .IsValueType) { return; }