dotnet/runtime

Enable specification of function ranges for JIT config values

Open

#13.307 aberto em 23 de ago. de 2019

Ver no GitHub
 (3 comments) (0 reactions) (0 assignees)C# (5.445 forks)batch import
area-CodeGen-coreclrhelp wanted

Métricas do repositório

Stars
 (17.886 stars)
Métricas de merge de PR
 (Mesclagem média 12d 11h) (661 fundiu PRs em 30d)

Description

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

Guia do colaborador