-
Notifications
You must be signed in to change notification settings - Fork 199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[NativeAOT-LLVM] Stop generating catch funclets #2399
[NativeAOT-LLVM] Stop generating catch funclets #2399
Conversation
// We have the "unwind" block. Since we're generating things from outer to inner, we already have its | ||
// "local" counterpart; it will be the next block. | ||
outerUnwindLlvmBlock = outerUnwindLlvmBlock->getNextNode(); | ||
assert(outerUnwindLlvmBlock != nullptr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have switched the terminology away from "dispatch" to "unwind" in a bunch of places because it better represents that this code is involved in handling the second pass ("unwinding the stack") as opposed to the first pass ("dispatching the exception") like it was originally.
687a601
to
e283686
Compare
f1a5ba3
to
ab1bbdf
Compare
@dotnet/nativeaot-llvm |
ab1bbdf
to
ec820c6
Compare
ec820c6
to
d6a0321
Compare
Since it handles adding the operand bundles.
d6a0321
to
8f157fe
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, module one typo
Co-authored-by: yowl <[email protected]>
@SingleAccretion Could you please resolve the conflict? |
@jkotas Done. |
Thank you |
After #2374 native unwinding will only be performed for second-pass handlers, hence, we do not actually need true funclets for second-pass handlers.
This change is the starting point for realizing the benefits of removing this requirement, those being tighter and smaller LLVM, better code quality and better debugging support.
For now, I only did the mechanical "move the code around" part. In particular:
catchpad
instructions for the enclosing handlers to already be generated by the time we're generating handler bodies.What is not included in this change:
Diffs from change come mainly from the first commit (generating LLVM blocks in layout order) and are basically LLVM noise, though overall positive. Diffs for the second commit are minimal (-400 bytes code).