-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Simplify JIT label handling (#51208)
* Simplify JIT label handling Remove the BBF_JMP_TARGET flag that was set early and attempted to be maintained all through compilation. Instead, use BBF_USE_LABEL to indicate to the emitter where we need labels. Also, stop setting and maintaining BBF_USE_LABEL early. Add a pass over the blocks when preparing for codegen that sets most of the necessary BBF_USE_LABEL flags. This flag will never be set before codegen. A few places set the flag after codegen starts, namely `genCreateTempLabel` and BBJ_COND handling for alignment. Note that this flag must be set before the block is processed for codegen (and an insGroup is created). Together, these changes make it easier to work with the flow graph without worrying about maintaining these bits of information through various optimizations. Add a few more details about alignment processing to the dump. There are a few code asm diffs due to alignment processing not previously creating a label to help compute how large a loop is. There are a lot of textual asm diffs due to there being (mostly) fewer labels, plus some additional insGroup output. This can happen if a block was labeled with `BBF_JMP_TARGET` or `BBF_USE_LABEL` before, but didn't need to be, perhaps after some optimizations. Now, the flag is never added in the first place. There are a large number of GC info diffs. Labels are where GC info state changes are recorded between codegen and the emitter. If we eliminate an unnecessary emitter label, then we also eliminate a capture of the current codegen GC state. Since the emitter is lazy at marking GC deaths, this means that we see a lot of lengthened GC lifetimes -- until the next label, or some other cause of GC kill. Often, you see a register kill followed by register birth just disappear, and the register is maintained alive across the interim. * Remove loop align flag if we decide a loop is no longer a loop
- Loading branch information
1 parent
8f491fc
commit a2e36a7
Showing
23 changed files
with
235 additions
and
215 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.