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

Conversation

@GrabYourPitchforks
Copy link
Member

This is a follow-up to #15947. Now that Roslyn's ref reassignment feature is available, we can use that rather than the earlier workaround of passing ByReference<T> through Memmove's internal ABI.

On x64, there's no difference in the codegen between using ByReference<T> vs. ref reassignment. On x86, this change results in an approx. 15% decrease in codegen size for the Memmove method, and there is a commensurate increase in throughput in my brief testing. This is expected, as we knew during the original change that RyuJIT x86 doesn't quite optimize passing ByReference<T> around as well as its x64 counterpart does.

Use new ref reassignment feature instead
@GrabYourPitchforks GrabYourPitchforks requested a review from jkotas May 5, 2018 00:44
Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@GrabYourPitchforks
Copy link
Member Author

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test

1 similar comment
@jkotas
Copy link
Member

jkotas commented May 5, 2018

@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test

@jkotas
Copy link
Member

jkotas commented May 5, 2018

@dotnet/dnceng Linux-musl CI leg is hanging with:

Still waiting to schedule task
All nodes of label ‘ubuntu1604-20180314’ are offline

@jkotas jkotas merged commit bf3a442 into dotnet:master May 5, 2018
@MattGal
Copy link
Member

MattGal commented May 7, 2018

Created https://github.com/dotnet/core-eng/issues/3429 to investigate.

@GrabYourPitchforks GrabYourPitchforks deleted the memmove_ref_reassignment branch March 11, 2019 06:38
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.

4 participants