Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[mono] Disable gsharing when Unsafe.ReadUnaligned/WriteUnaligned () i…
…s used with generic structures. Fixes dotnet#89398. For a method like ``` static void Write<T>(ref byte b, T value) => Unsafe.WriteUnaligned<T>(ref b, value); ``` And an instance ```Write<GStruct<string>>```, generic sharing will create a ```Write<T_INST>``` instance where T_INST is constrained to GStruct<T_REF>. The JIT currently calls ```mini_get_underlying_type ()``` in many places which transform T_INST into GStruct<T_REF>. This causes problems at runtime in the generic sharing code, which expects to find T_INST. I.e. ```inflate_info ()``` can inflate ```T_INST``` to ```GStruct<string>```, but it can't inflate ```GStruct<T_REF>``` to ```GStruct<string>```. As a workaround, disable gsharing in (some) of these cases.
- Loading branch information