dotnet/runtime

Enable specification of function ranges for JIT config values

Open

#13.307 geöffnet am 23. Aug. 2019

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (5.445 Forks)batch import
area-CodeGen-coreclrhelp wanted

Repository-Metriken

Stars
 (17.886 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 12T 11h) (661 gemergte PRs in 30 T)

Beschreibung

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

Contributor Guide