Skip to content
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

Merged
merged 10 commits into from Nov 26, 2020

Commits on Nov 23, 2020

  1. Configuration menu
    Copy the full SHA
    cd48a9e View commit details
    Browse the repository at this point in the history

Commits on Nov 25, 2020

  1. Record that the TClass is from GenerateInfoForPair.

    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.
    pcanal committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    b147138 View commit details
    Browse the repository at this point in the history
  2. TClass::GetClass now create a synthetic instance only if pair hints a…

    …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)
    pcanal committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    0de6bf0 View commit details
    Browse the repository at this point in the history
  3. Add specialization of TClass::GetClass<T> for pair.

    Extract the offset and size of the pair and pass it along to raw TClass::GetClass
    pcanal committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    05e0d0d View commit details
    Browse the repository at this point in the history
  4. TProtoClass::FillTClass create synthetic pair TClass as needed.

    Use the data in fPRealData to calculate the offset and size of the pair
    pcanal committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    b77703e View commit details
    Browse the repository at this point in the history
  5. Remove deleted StreamerInfo from the global list

    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.
    pcanal committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    7a80e09 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    a24292f View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    991eac1 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    469b539 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    4cc1a35 View commit details
    Browse the repository at this point in the history