C++ Constructor Clean-up and Move semantics#51
Open
ssoelvsten wants to merge 11 commits intotrolando:masterfrom
Open
C++ Constructor Clean-up and Move semantics#51ssoelvsten wants to merge 11 commits intotrolando:masterfrom
ssoelvsten wants to merge 11 commits intotrolando:masterfrom
Conversation
ae66358 to
15e5946
Compare
Assuming 'sylvan_protect' has no effect on 'sylvan_false' or some 'invalid' value, then we can further improve performance by removing the 'sylvan_protect'
Nothing is really gained by doing so since Sylvan's protect and unprotect are on the variables, not by use of reference counting.
Similar to the Bdd class, we have to remember to protect the new 'sylvan_false' to not mess up anything when 'sylvan_unprotect' is called during the destructor.
This way, the code for dealing with protection is only taken care of in a single place. Furthermore, there are no code-duplications for the meaning of each operator. Finally, the assignment should use the new move-assignment
Again, nothing is really gained from doing so except more code.
…ators This way, the code for dealing with protection is only taken care of in a single place. Furthermore, there are no code-duplications for the meaning of each operator. Finally, the assignment should use the new move-assignment
15e5946 to
1d5066a
Compare
2afc4d7 to
4013c97
Compare
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
At ETAPS, you (Tom van Dijk) mentioned something about fixing the C++ constructors. I tried to take a look.
sylvan_falsecosts less? But, otherwise there is no difference.On the bright side, having done this I am confident I have refreshed my memory of using Sylvan enough to do the C++ ZDD interface, I promised.
Here are all of the changes. I personally would advocate for rebasing this branch to remove any of the commits with move-semantics; these changes are just code-duplication. The rest are possibly nice for maintainability.
I have tested this with test/test_cxx and by checking my benchmarks still compile and seem to work.