-
Notifications
You must be signed in to change notification settings - Fork 759
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
[analysis] Allow joining a single vector element efficiently #6071
Conversation
Current dependencies on/for this PR:
This stack of pull requests is managed by Graphite. |
Element getTop() const noexcept | ||
#if __cplusplus >= 202002L | ||
requires FullLattice<L> | ||
#endif |
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.
What happened here?
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 wasn't pulling its weight, complexity-wise, so I removed it as a drive-by.
456aa3c
to
350ba10
Compare
b315131
to
8a7936d
Compare
350ba10
to
838bfac
Compare
Previously, modifying a single vector element of a `Shared<Vector>` element required materializing a full vector to do the join. When there is just a single element to update, materializing all the other elements with bottom value is useless work. Add a `Vector<L>::SingletonElement` utility that represents but does not materialize a vector with a single non-bottom element and allow it to be passed to `Vector<L>::join`. Also update `Shared` and `Inverted` so that `SingletonElement` joins still work on vectors wrapped in those other lattices.
8a7936d
to
ecd665e
Compare
…mbly#6071) Previously, modifying a single vector element of a `Shared<Vector>` element required materializing a full vector to do the join. When there is just a single element to update, materializing all the other elements with bottom value is useless work. Add a `Vector<L>::SingletonElement` utility that represents but does not materialize a vector with a single non-bottom element and allow it to be passed to `Vector<L>::join`. Also update `Shared` and `Inverted` so that `SingletonElement` joins still work on vectors wrapped in those other lattices.
Previously, modifying a single vector element of a
Shared<Vector>
elementrequired materializing a full vector to do the join. When there is just a single
element to update, materializing all the other elements with bottom value is
useless work. Add a
Vector<L>::SingletonElement
utility that represents butdoes not materialize a vector with a single non-bottom element and allow it to
be passed to
Vector<L>::join
. Also updateShared
andInverted
so thatSingletonElement
joins still work on vectors wrapped in those other lattices.