forked from dotnet/coreclr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Jit: fix a few issues with single def local tracking (dotnet#10633)
Fixes for three issues that came up in desktop testing. 1. Don't track class types for locals when in import only mode, since the jit may be looking at an uninstantiated generic method. In these cases the jit's use of TYP_REF to represent CORINFO_TYPE_VAR confuses the tracking code. In import only mode the jit is not going to use the information, so there is no need to track it at all. Import only mode is tied to verification and CoreCLR runs in full trust mode, so no test was added. 2. Allow `lvaUpdateClass` to be called more than once but assert that the second and subsequent calls provide the exact same update as the first call. This can happen for single def ref class locals whose definition block is reimported. Reimportation is triggered by some tolerable non-ref type mismatches at block joins and so ref type information should be consistent for each importation attempt. Add a couple of IL test cases translated from destkop MC++ tests that will trigger this kind of reimportation. 3. Bail out of devirtualization (for desktop only) if the base class has precise initialization semantics, since desktop seems to trigger class initialization for ref type callvirts (contrary to ECMA355 I.8.9.5). See #4853 for some discussion. Since this is desktop only behavior no test was added.
- Loading branch information
1 parent
7c8941a
commit a7ab04c
Showing
7 changed files
with
1,008 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.