From 59eb4df2f77f8181c17678c949067b62826988d6 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Mon, 30 Jan 2023 01:22:17 +0000 Subject: [PATCH] Eliminate a bounds check in `NumberBuffer` (#81039) * Eliminate a bounds check in `NumberBuffer` * Add AggressiveInlining --- .../System.Private.CoreLib/src/System/Number.NumberBuffer.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Number.NumberBuffer.cs b/src/libraries/System.Private.CoreLib/src/System/Number.NumberBuffer.cs index df5908f..22a2076 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Number.NumberBuffer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Number.NumberBuffer.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Text; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace System { @@ -82,10 +83,11 @@ namespace System } #pragma warning restore CA1822 + [MethodImpl(MethodImplOptions.AggressiveInlining)] public byte* GetDigitsPointer() { // This is safe to do since we are a ref struct - return (byte*)(Unsafe.AsPointer(ref Digits[0])); + return (byte*)Unsafe.AsPointer(ref MemoryMarshal.GetReference(Digits)); } // -- 2.7.4