JIT: don't import IL for partial compilation blocks#61572
JIT: don't import IL for partial compilation blocks#61572AndyAyersMS merged 3 commits intodotnet:mainfrom
Conversation
Adjust partial comp not to import IL instead of importing it and then deleting the IR. Saves some time and also sometimes a bit of stack space as we won't create as many temps. Update both PC and OSR to check for blocks in handlers early, rather than pretending to support these and then backing out later.
|
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsAdjust partial comp not to import IL instead of importing it and then Update both PC and OSR to check for blocks in handlers early, rather
|
|
cc @dotnet/jit-contrib Improves "savings" from partial compilation at Tier0 by about 0.3% (pmi, fx). Total savings is around 4%. Still thinking about ways to use partial comp more aggressively/effectively to reduce Tier0 jit time and code size. Static PGO seems appealing as a guiding criteria, but we only have static PGO for methods that have R2R instances and those won't go through Tier0 (and if R2R is disabled the PGO bundles aren't considered either). So may need to look elsewhere. |
|
/azp run runtime-jit-experimental |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Looks like all the partial comp tests with localloc are failing -- likely I'm missing a safety check. |
…n setting patchpoints and then backing out.
|
/azp run runtime-jit-experimental |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Localloc issues are handled now, but still seeing problems with some generic EH tests. |
|
/azp run runtime-jit-experimental |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Experimental CI failures back down to the expected set. @dotnet/jit-contrib PTAL. |
|
@dotnet/jit-contrib Anybody up for a review here? It should be quick. I have other changes that build on this one.... |
| block->bbFlags |= BBF_PARTIAL_COMPILATION_PATCHPOINT; | ||
| setMethodHasPartialCompilationPatchpoint(); | ||
|
|
||
| // Change block to BBJ_THROW so we won't trigger importation of sucessors. |
There was a problem hiding this comment.
typo:
| // Change block to BBJ_THROW so we won't trigger importation of sucessors. | |
| // Change block to BBJ_THROW so we won't trigger importation of successors. |
There was a problem hiding this comment.
Thanks, will fix in my next PR.
Adjust partial comp not to import IL instead of importing it and then
deleting the IR. Saves some time and also sometimes a bit of stack
space as we won't create as many temps.
Update both PC and OSR to check for blocks in handlers early, rather
than pretending to support these and then backing out later.