-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[mono][aot] Type load checks do not fail at compile time but produce a runtime exception #91261
Merged
Merged
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
78ce32e
Enable tests.
jandupej 3c32b67
When AOTing, type checks do not fail compilation but create a runtime…
jandupej 7676e00
Cleaned up type load error cleaning. TypeLoadException icall now has …
jandupej 611888b
Removed another instance of indiscriminate exception clearing.
jandupej 15b7aa5
Fixed build warning.
jandupej 90aa674
Using class const instead of string const. Reverted some compile to r…
jandupej d4b6c9f
White space.
jandupej bda12b3
Fixed build warning.
jandupej fbd3614
Trying to fix weird AOT errors, fixed type load throw function.
jandupej 805d6c4
Fixed build error.
jandupej 0b50974
Special handling for classes that are NULL.
jandupej 19c5155
Providing for a null klass when generating exception.
jandupej 83bcc30
Removed flow control directive from macro.
jandupej c6fe63b
Fixed stack corruption.
jandupej 9cb3d1a
Attempt to push the correct type onto the stack.
jandupej 025ed7a
Fixing uninitialized ins.
jandupej 4633336
Fixing ro_type.
jandupej 55db3c6
Initializing ins.
jandupej 4b35af0
Complex cases with type load failures replace method body with a throw.
jandupej ca7530d
Cleaning up superfluous code changes.
jandupej 9709a89
Restored sizeof cosntant on failed types.
jandupej File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Is it necessary to remove dead blocks between the
bb_init
andbb_exit
which may not have a direct link to them?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.
Possibly not; it seems that unreachable blocks are detected (and removed) without my explicitly doing it. This is the first iteration that seems to work locally, waiting for CI. I may be able to simplify it if CI turns out favorable.
EDIT: Are you aware of any unlinked blocks that should be kept?
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.
This change looks good to me. I was just curious whether the unreachable blocks are detected and removed.
Is it possible to skip the
bb_init
and link thebb_entry
with the throw block?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 had control flow issues when generating LLVM IR without the init block (which was empty no less). I'll see if it can be done.
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.
An alternative is to restart the compilation, there is already a mechanism to do that if llvm fails, etc. and emit the exception without compiling the rest of the IL.