-
Notifications
You must be signed in to change notification settings - Fork 127
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
Track pending marked members #1768
Merged
Merged
Commits on Jan 20, 2021
-
Configuration menu - View commit details
-
Copy full SHA for 90359dd - Browse repository at this point
Copy the full SHA 90359ddView commit details -
Track pending preserved types and methods
- Call Annotations.Mark for preserved methods up-front, if the key was already preserved. This way we only track preserved methods for things that aren't marked already. - Track pending preserve info that needs to be applied - Clean up logic for pending marked members The Mark* methods in MarkStep "fully" mark members (base types, parameters, etc.), whereas the methods in Annotations only perform a "shallow" mark (they track the fact that this member is to be kept, but they don't process implications of this fact - for example, they may mark methods without marking the containing type). MarkStep fulfills "shallow" marks by keeping pieces of IL that are required. Each Mark* method in MarkStep now serves two purposes: - Recursive marking of required IL (for example base types) It calls Mark* on everything that is required, with a "reason" so that this gets traced. The base cases call Annotations.Mark to trace the reason and keep the required IL. After this is done, the original member passed to Mark* is considered "processed". We set the processed bit early enough to ensure that the recursive logic is only performed once. - Fulfilling "shallow" marks Similar to the above, but in this case, it does not need to trace the dependency again (Annotations.Mark has already been called). We need to ensure that it transitions the mark state from "pending" -> "processed" so that anything else which does a shallow mark of the member doesn't introduce new "pending" state.
Configuration menu - View commit details
-
Copy full SHA for 813c595 - Browse repository at this point
Copy the full SHA 813c595View commit details -
Call MarkMethod instead of EnqueueMethod so that early-marked methods get an action assigned. This used to happen in ResolveFromAssemblyStep. Also fix up typepreserve to correctly track accessibility bits, and add a testcase for copyused marking behavior. Fix formatting
Configuration menu - View commit details
-
Copy full SHA for 0a3be76 - Browse repository at this point
Copy the full SHA 0a3be76View commit details -
Configuration menu - View commit details
-
Copy full SHA for deb8fd8 - Browse repository at this point
Copy the full SHA deb8fd8View commit details -
Keep assembly initialization based on action
And remove currently failing testcase.
Configuration menu - View commit details
-
Copy full SHA for da97554 - Browse repository at this point
Copy the full SHA da97554View commit details -
Configuration menu - View commit details
-
Copy full SHA for c19599d - Browse repository at this point
Copy the full SHA c19599dView commit details -
Configuration menu - View commit details
-
Copy full SHA for cca717c - Browse repository at this point
Copy the full SHA cca717cView commit details -
Configuration menu - View commit details
-
Copy full SHA for bd85953 - Browse repository at this point
Copy the full SHA bd85953View commit details -
- Return arrays instead of IEnumerable for pending Annotations - Rename methods to Get* - Add comment for marked_pending - Don't make state changes inside a Debug assert - Change sourceLocationMember to null when marking pending types - Add exception messages
Configuration menu - View commit details
-
Copy full SHA for 9f37533 - Browse repository at this point
Copy the full SHA 9f37533View commit details -
Add test for marked method in unmarked type
We used to ignore such methods in Initialize, but the new logic for pending marked items will keep the method (and its type) as long as it was marked before MarkStep.
Configuration menu - View commit details
-
Copy full SHA for 2b1fdbf - Browse repository at this point
Copy the full SHA 2b1fdbfView commit details -
Configuration menu - View commit details
-
Copy full SHA for d39f4d3 - Browse repository at this point
Copy the full SHA d39f4d3View commit details
Commits on Jan 21, 2021
-
To directly mark an item without adding it to the pending set first.
Configuration menu - View commit details
-
Copy full SHA for 709163b - Browse repository at this point
Copy the full SHA 709163bView commit details
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.