-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
v622: Fix pair offset/size calculation. #6873
v622: Fix pair offset/size calculation. #6873
Conversation
Starting build on |
@phsft-bot build with flags -DCTEST_TEST_EXCLUDE_NONE=On |
Starting build on |
Build failed on ROOT-performance-centos8-multicore/default. Failing tests: |
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests:
|
Build failed on ROOT-fedora31/noimt. Failing tests: |
Build failed on mac1015/cxx17. Failing tests: |
Build failed on ROOT-fedora30/cxx14. Failing tests:
|
@phsft-bot build with flags -DCTEST_TEST_EXCLUDE_NONE=On |
Starting build on |
Build failed on ROOT-fedora30/cxx14. Failing tests: |
Build failed on mac1015/cxx17. Failing tests: |
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
Build failed on ROOT-debian10-i386/cxx14. Failing tests: |
Failures are unrelated (pre-exisiting). @Axel-Naumann This is ready to merge. |
The TClass generated by TStreamerInfo::GenerateInfoForPair is neither 'Interpreted' (cling likely does not, yet, have any information about that pair) nor loaded (the user did not request a dictionary for it) but need to have special treatment for those TClass. It is not clear whether this should be a new state. For now we introduce a new data member (`fIsSyntheticPair`) and don't increase the size of TClass instance by using a bit field.
…re provided. Since getting the right alignment and padding is hard (either use Cling/Clang with the associated memory cost and potential autoparsing or duplicating the platform dependent code that calculates it), we now only creates the synthetic TClass instance that represent and std::pair ***if and only*** the call is provided the actual offset of second and sizeof the pair. This information is known to compiled (and later interpreted) CollectionProxy, to TClass for class containing an std::pair (via their list of RealData which is recorded in the rootpcm) and to TClass::GetClass templated on the actual type (since the pair's data members are public)
Extract the offset and size of the pair and pass it along to raw TClass::GetClass
Use the data in fPRealData to calculate the offset and size of the pair
Note: If a StreamerInfo is loaded from a file and is the same information as an existing one, it is assigned the same "unique id" and we need to double check before removing it from the global list.
dbeece7
to
7e2a6e4
Compare
Starting build on |
Build failed on ROOT-fedora31/noimt. Warnings:
|
Build failed on ROOT-performance-centos8-multicore/default. Warnings:
|
Build failed on ROOT-fedora30/cxx14. Warnings:
|
Build failed on ROOT-ubuntu16/nortcxxmod. Warnings:
|
Build failed on mac1015/cxx17. Warnings:
|
7e2a6e4
to
6d29b44
Compare
Starting build on |
Build failed on ROOT-fedora31/noimt. Warnings:
|
Build failed on ROOT-performance-centos8-multicore/default. Warnings:
|
Build failed on ROOT-fedora30/cxx14. Warnings:
|
6d29b44
to
4cc1a35
Compare
Starting build on |
@@ -5678,6 +5678,12 @@ TVirtualStreamerInfo *TStreamerInfo::GenerateInfoForPair(const std::string &firs | |||
// This TStreamerInfo is then used as if it was read from a file to generate | |||
// and emulated TClass. | |||
|
|||
if (hint_pair_offset && hint_pair_offset == hint_pair_size) { |
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 really meant to please add an assert on (!hint_pair_offset == !hint_pair_size)
: it's checking that either both or non are ==0
. Your current if
doesn't check that.
Fix #6840. i.e Improve handling for std::pair without a dictionary.