dotnet/runtime

Enable specification of function ranges for JIT config values

Open

#13.307 aperta il 23 ago 2019

Vedi su GitHub
 (3 commenti) (0 reazioni) (0 assegnatari)C# (5445 fork)batch import
area-CodeGen-coreclrhelp wanted

Metriche repository

Star
 (17.886 star)
Metriche merge PR
 (Merge medio 12g 11h) (661 PR mergiate in 30 g)

Descrizione

Currently there is ifdefed out in several places in the JIT that take a low and high hash value to enable binary search for optimization or register allocation issues:

  • minoptshashlo/minoptshashhi in compiler.cpp
  • JitStressRegsHashLo/JitStressRegsHashHi in lsra.cpp
  • structpromohashlo/structpromohashhi in morph.cpp
  • loopclonehashlo/loopclonehashhi in optimizer.cpp
  • loophoisthashlo/loophoisthashhi in optimizer.cpp

Each of these does their own processing.

There's also COMPlus_JitFunctionFile that allows the specification of a file with a list of functions. It would be good to have a general mechanism to specify:

  • A range of method hash values
  • A range of method count (Compiler::jitTotalMethodCompiled) - useful when the JIT order is reasonably stable and there are many methods with the same hash and/or in combination with a range of hash values when multiple methods must be included to reproduce a failure. This was valuable in tracking down dotnet/runtime#12993.
  • A COMPlus value that is enabled only for the methods included in the set

category:implementation theme:jit-coding-style skill-level:beginner cost:small

Guida contributor