You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Fix issue where method token referred to derived type but method was actually defined on base type
- Previously the methods did not carry enough state to determine when to emit the owner type of the method, and which exact type was the owning type. The new logic computes it from the token in the presence of a proper instantiation context, which allows for correct operation.
- Fix issue where constrained dispatch on a method of a valuetype would not put in the correct owner type
- Issue fixed by determining if the token resolves to a method on the same type as the eventual target method, or if it needs to have a specific owning type specified
In general these issues where both caused by confusion around exactly the correct owning type, and it turned out that computation could not be computed within the signature emitter code, but instead needed to be computed in the JIT at point of use. Fortunately, we had a structure `MethodWithToken` that is used in these (and only these situations). Finally, I also made a pass through the emitter and related logic to remove various band-aids that had built up over the last few years to make all the tests and applications pass. I believe that the new logic should be correct in the general case.
Bonus tweak... Use parallelism when compiling the framework composite images with crossgen2, and fix bug in composite image generation where mangled symbol names might conflict.
Fixes#43466 and fixes#43467
ghost
locked as resolved and limited conversation to collaborators
Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Example run:
https://dev.azure.com/dnceng/public/_build/results?buildId=853947&view=ms.vss-test-web.build-test-results-tab&runId=27279090&resultId=105033&paneView=dotnet-dnceng.dnceng-build-release-tasks.helix-test-information-tab
Platform:
Win10 (x64, arm64)
Item log:
Full log example since it's a verbose test, just the failure stack is below.
Tests failing:
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest1\Generated1\Generated1.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest14\Generated14\Generated14.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest15\Generated15\Generated15.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest16\Generated16\Generated16.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest17\Generated17\Generated17.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest18\Generated18\Generated18.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest19\Generated19\Generated19.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest20\Generated20\Generated20.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest21\Generated21\Generated21.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest22\Generated22\Generated22.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest23\Generated23\Generated23.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest24\Generated24\Generated24.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest25\Generated25\Generated25.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest26\Generated26\Generated26.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest27\Generated27\Generated27.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest28\Generated28\Generated28.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest62\Generated62\Generated62.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest63\Generated63\Generated63.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest64\Generated64\Generated64.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest65\Generated65\Generated65.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest66\Generated66\Generated66.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest67\Generated67\Generated67.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest68\Generated68\Generated68.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest69\Generated69\Generated69.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest70\Generated70\Generated70.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest171\Generated171\Generated171.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest192\Generated192\Generated192.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest193\Generated193\Generated193.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest194\Generated194\Generated194.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest195\Generated195\Generated195.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest196\Generated196\Generated196.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest197\Generated197\Generated197.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest198\Generated198\Generated198.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest199\Generated199\Generated199.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest200\Generated200\Generated200.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest201\Generated201\Generated201.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest202\Generated202\Generated202.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest203\Generated203\Generated203.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest204\Generated204\Generated204.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest205\Generated205\Generated205.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest206\Generated206\Generated206.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest207\Generated207\Generated207.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest208\Generated208\Generated208.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest209\Generated209\Generated209.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest210\Generated210\Generated210.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest211\Generated211\Generated211.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest212\Generated212\Generated212.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest213\Generated213\Generated213.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest214\Generated214\Generated214.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest215\Generated215\Generated215.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest292\Generated292\Generated292.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest293\Generated293\Generated293.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest294\Generated294\Generated294.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest295\Generated295\Generated295.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest296\Generated296\Generated296.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest297\Generated297\Generated297.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest298\Generated298\Generated298.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest299\Generated299\Generated299.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest300\Generated300\Generated300.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest301\Generated301\Generated301.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest302\Generated302\Generated302.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest303\Generated303\Generated303.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest304\Generated304\Generated304.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest305\Generated305\Generated305.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest306\Generated306\Generated306.cmd
Loader\classloader\TypeGeneratorTests\TypeGeneratorTest307\Generated307\Generated307.cmd
The text was updated successfully, but these errors were encountered: