public static void Foo(ReadOnlySpan<char> span)
{
if (!span.IsEmpty)
{
fixed (char* ptr = span)
Consume(ptr);
}
}
public static void Bar(ReadOnlySpan<char> span)
{
if (!span.IsEmpty)
{
fixed (char* ptr = &MemoryMarshal.GetReference(span))
Consume(ptr);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static void Consume(char* ptr) { }
https://www.diffchecker.com/cAaIxNr9/
-mov ecx,[rcx+8]
-test ecx,ecx
+cmp dword ptr [rcx+8],0