Java: Replace the MaD Object.clone() models with a non-aliasing value step. #16835
+2,361
−2,352
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.
Switching data flow stage 3 to path-insensitive type pruning flow highlighted that the MaD clone models were providing false type information in the sense that they claim to be able to store into
Element
,MapKey
, andMapValue
for any type. This is misleading to path-insensitive type pruning.With the introduction of support for non-aliasing value steps in the data flow library, we can model
clone
steps as value steps instead without accidental back-propagation of side-effects.Local + MRVA top 100 checking showed only small changes in tuple counts, although a number of FPs were fixed on apache/hadoop for one query.