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

Jit: fix a few issues with single def local tracking #10633

Merged
merged 2 commits into from
Apr 1, 2017

Commits on Mar 31, 2017

  1. Jit: fix a few issues with single def local tracking

    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.
    AndyAyersMS committed Mar 31, 2017
    Configuration menu
    Copy the full SHA
    e8cbccb View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2017

  1. fix tests

    AndyAyersMS committed Apr 1, 2017
    Configuration menu
    Copy the full SHA
    2605fe5 View commit details
    Browse the repository at this point in the history