dotnet/runtime

Enable specification of function ranges for JIT config values

Open

#13,307 建立於 2019年8月23日

在 GitHub 查看
 (3 留言) (0 反應) (0 負責人)C# (5,445 fork)batch import
area-CodeGen-coreclrhelp wanted

倉庫指標

Star
 (17,886 star)
PR 合併指標
 (平均合併 12天 11小時) (30 天內合併 661 個 PR)

描述

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

貢獻者指南