Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Make Unsafe.AsRef inlineable#14547

Merged
jkotas merged 1 commit intodotnet:masterfrom
jkotas:unsafe-asref-fix
Dec 16, 2016
Merged

Make Unsafe.AsRef inlineable#14547
jkotas merged 1 commit intodotnet:masterfrom
jkotas:unsafe-asref-fix

Conversation

@jkotas
Copy link
Member

@jkotas jkotas commented Dec 15, 2016

The JIT inliner chokes on type mismatch on return. Make the method inlineable by round-tripping the value via local that avoids the type mismatch on return.

The JIT inliner chokes on type mismatch on return. Make the method inlineable by round-tripping the value via local that avoids the type mismatch on return.
@jkotas
Copy link
Member Author

jkotas commented Dec 15, 2016

@AndyAyersMS PTLA

@jkotas
Copy link
Member Author

jkotas commented Dec 15, 2016

[MethodImpl(MethodImplOptions.NoInlining)]
static void Test(void * p)
{
    Unsafe.AsRef<int>(p) = 1;
}

Before:

push    ebp
mov     ebp,esp
call    dword ptr ds:[9754ECh] (System.Runtime.CompilerServices.Unsafe.AsRef[[System.Int32, mscorlib]](Void*), mdToken: 06000010)
mov     dword ptr [eax],1
pop     ebp
ret

After

push    ebp
mov     ebp,esp
mov     eax,ecx
mov     dword ptr [eax],1
pop     ebp
ret

@jkotas jkotas merged commit a0e1d73 into dotnet:master Dec 16, 2016
@AndyAyersMS
Copy link
Member

LGTM too, fwiw...

@karelz karelz modified the milestone: 2.0.0 Dec 16, 2016
@jkotas jkotas deleted the unsafe-asref-fix branch December 17, 2016 01:18
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
The JIT inliner chokes on type mismatch on return. Make the method inlineable by round-tripping the value via local that avoids the type mismatch on return.

Commit migrated from dotnet/corefx@a0e1d73
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants