Skip to content
Snippets Groups Projects
  1. Apr 22, 2021
  2. Apr 20, 2021
  3. Apr 17, 2021
    • Bertrand Bellenot's avatar
      [core] Next bunch of changes for Win64 (#7894) · e74738be
      Bertrand Bellenot authored
      * [core] Next bunch of changes for Win64
      
      - Replace some more `long` types by `Longptr_t`
      - Fix pointer formatting (use `%zx` and `size_t` for architecture dependent format)
      - Fix several `warning C4267: 'argument': conversion from 'size_t' to 'Ssiz_t', possible loss of data`
      
      * [skip-ci] Fix compilation warning on i386 platforms
      
      Fix warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 2 has type ‘Long_t’ {aka ‘long int’} [-Wformat=]
      e74738be
  4. Apr 12, 2021
    • Bertrand Bellenot's avatar
      Next bunch of changes for Win64 (#7778) · f85eea05
      Bertrand Bellenot authored
      * Next bunch of changes for Win64
      
       - Use different typedefs for (U)Longptr_t to prevent overload errors on Win32
       - First round of replacing (U)Long_t with (U)Longptr_t where applicable (mostly on core) and fix the following kind of warnings (leading to errors when truncating pointers)
         `warning C4311: 'type cast': pointer truncation from 'void *' to 'Long_t'`
         `warning C4312: 'type cast': conversion from 'Long_t' to 'void *' of greater size`
      
      * Better fix for pointer formatting
      
      * Fix compilation warnings
      
      * Apply Philippe's suggestion
      
      * Try to fix 32bit/64bit pointer formatting using %zx
      
      * Try to fix a compilation warning
      
      Try to fix the following warning on `ROOT-debian10-i386/cxx14`:
      ```
      warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 4 has type ‘Longptr_t’ {aka ‘long int’} [-Wformat=]
      ```
      f85eea05
  5. Apr 02, 2021
    • Vassil Vassilev's avatar
      [cxxmodules] Do not push a transaction per LoadModule. · 059ad424
      Vassil Vassilev authored
      Prior to this patch, we push/pop transaction for each LoadModule call. This is
      reasonable if we assume modules are perfectly layered. That is, no eager
      module deserialization require definitions from another module. This is hard to
      achieve for dependent on ROOT codebases during their incremental migration
      process.
      
      The current patch push/pops once per loading of all modules. This should perform
      slightly better and allow entangled modules to still load.
      
      This patch should address the CMSSW Modules IB:
      Assertion `OldBuilder->DeferredDeclsToEmit.empty() && "Should have emitted all decls deferred to emit."' failed.
      
      0  0x00007ffff6f113d7 in raise () from /lib64/libc.so.6
      1  0x00007ffff6f12ac8 in abort () from /lib64/libc.so.6
      2  0x00007ffff6f0a1a6 in __assert_fail_base () from /lib64/libc.so.6
      3  0x00007ffff6f0a252 in __assert_fail () from /lib64/libc.so.6
      4  0x00007fffed24ed82 in clang::CodeGeneratorImpl::StartModule
      5  0x00007fffed24d33e in clang::CodeGenerator::StartModule
      6  0x00007fffed0664f1 in cling::IncrementalParser::StartModule
      7  0x00007fffed066f84 in cling::IncrementalParser::codeGenTransaction
      8  0x00007fffed066aec in cling::IncrementalParser::commitTransaction
      9  0x00007fffecf1af2c in cling::Interpreter::PushTransactionRAII::pop
      10 0x00007fffecf1ae72 in cling::Interpreter::PushTransactionRAII::~PushTransactionRAII
      11 0x00007fffece78534 in ClingMemberIterInternal::DCIter::DCIter
      12 0x00007fffece7712c in TClingMemberIter::TClingMemberIter
      13 0x00007fffece7724c in TClingDataMemberIter::TClingDataMemberIter
      14 0x00007fffece750b6 in TClingDataMemberInfo::TClingDataMemberInfo
      15 0x00007fffecd25918 in TCling::DataMemberInfo_Factory
      16 0x00007ffff6b0e33e in TListOfDataMembers::Load
      17 0x00007ffff6ae539d in TClass::CreateListOfDataMembers
      18 0x00007ffff6ae54d4 in TClass::GetListOfDataMembers
      19 0x00007ffff6ae3dd1 in TClass::GetDataMember
      20 0x00007ffff6b259a0 in ROOT::Detail::TSchemaRuleSet::AddRule
      21 0x00007ffff6adee6c in TClass::AddRule (rule=0x572670 "HepMC::GenVertex   m_event",
      22 0x00007ffff6adead2 in (anonymous namespace)::ReadRulesContent
      23 0x00007ffff6adec40 in TClass::ReadRules
      24 0x00007fffecd0b3a0 in TCling::Initialize
      
      There are several points to consider:
        * We should understand why there are still DeferredDeclsToEmit;
        * We should remove the `TClingMemberIter` from the init path as it is *very expensive*
      059ad424
  6. Apr 01, 2021
    • Bertrand Bellenot's avatar
      First step to port ROOT on Windows 64 bit (#7759) · c8270198
      Bertrand Bellenot authored
      * First step to port ROOT on Windows 64 bit
      
       - Introduce the Win64 option and flags in the CMake build system
       - Introduce the new `Longptr_t` and `ULongptr_t` types to hold a pointer (4 bytes on Win32 and 8 bytes on Win64), aimed to replace the `Long_t` and `ULong_t` used to cast pointers, and being both 4 bytes on Windows. Their values will not change on other platforms (`Long_t` and `ULong_t`) for backward compatibility
       - Add the 64 bit export symbols in `core/metacling/src/CMakeLists.txt`
       - Add the 64 bit version of lzma (xz-5.2.4-win64.tar.gz)
      
      * Add forgotten semicolons
      c8270198
  7. Mar 26, 2021
  8. Mar 18, 2021
    • Axel Naumann's avatar
      [metacling] Remember which classes were DeepAutoLoad-ed in this AutoLoad: · a0dbc28e
      Axel Naumann authored
      ROOT-10895 suffers from trying to autoload 220 classes, but causing >80k calls to
      DeepAutoLoadImpl(). Within one call to AutoLoad(), no new information can arrive that
      would allow later recursions of DeepAutoLoadImpl() to now autoload a class successfully.
      So whether autoloading a class successfully or not, any class on which DeepAutoLoadImpl()
      was called does not need to be re-visited within the same AutoLoad() call.
      
      To achieve that, remember the class names that have been visited already, bringing the
      count to (non-early-return) DeepAutoLoadImpl() to the actual number of classes that
      we should try to autoload.
      
      And a perf-opt: do not determine type names if the type is fundamental.
      
      And I'm not a big fan of deep code nesting.
      a0dbc28e
    • Axel Naumann's avatar
      [metacling] In DeepAutoLoadImpl, use the fact that class name is normalized: · 733d892e
      Axel Naumann authored
      Considerably speeds up the deeply nested, hot loops through all members.
      733d892e
  9. Mar 11, 2021
  10. Mar 04, 2021
  11. Mar 03, 2021
    • Philippe Canal's avatar
      Improve TClass::GetBaseClassOffset parallelism. · f0a88ffa
      Philippe Canal authored
      TClass::GetBaseClassOffset is a 'often' used routine in the I/O.
      In the fast path (looking up in a cache), rather than taking the
      global read lock (which is not only global but also 'slower' than
      a regular mutex), we are now use a instance specific mutex to
      protect the cache.
      f0a88ffa
    • Philippe Canal's avatar
      Use TObjArray::GetEntriesFast to avoid wasting time. · 427f543d
      Philippe Canal authored
      TObjArray::GetEntries() counts the number of non-zero slots
      while TObjArray::GetEntriesFast() return (in most case) the value of a high water mark (the slot over which all remaining slots
      are empty).
      
      In one use case (doing read a TTree and do many TTree cloning (via TBufferMerger), TObjArray::GetEntries was taking 8% of the
      running time (compression was disabled)
      
      Note: TObjArray::IsEmpty use GetEntriesFast rather than GetEntries.
      427f543d
    • Bertrand Bellenot's avatar
      Remove the __type_info_node symbol from the exports list · d310b957
      Bertrand Bellenot authored
      Don't export (expose) the '?__type_info_root_node@@3U__type_info_node@@A', this leads to the following error in some cases:
      MSVCRT.lib(tncleanup.obj) : error LNK2005: "struct __type_info_node __type_info_root_node" (?__type_info_root_node@@3U__type_info_node@@A) already defined in libCling.lib(libCling.dll)
      d310b957
  12. Mar 02, 2021
    • Bertrand Bellenot's avatar
      Fix assertion failure on Windows · 54b7a662
      Bertrand Bellenot authored
      Fixes the following error on Windows with macros containing Windows line endings (CR/LF):
      ```
      Assertion failed: content[posOpenCurly] == '{' && "No curly at claimed position of opening curly!",
      file C:\Users\bellenot\git\master\interpreter\cling\lib\MetaProcessor\MetaProcessor.cpp, line 431
      ```
      54b7a662
  13. Feb 25, 2021
  14. Feb 11, 2021
  15. Jan 21, 2021
    • Philippe Canal's avatar
      [IMT] Do not rely on rootpcm for libMultiProc. · 7f3f3428
      Philippe Canal authored
      This put libMultiProc on par with libImt (which now uses/depends on libMultiProc) and allow to delay creation
      of the StreamerInfo needed for reading rootpcm.  Both libImt and libMultiProc contains classes not intended
      for I/O anyway and not expected to be instropected (so no strong benefit to having a rootpcm).
      7f3f3428
  16. Dec 14, 2020
    • Mattias Ellert's avatar
      Several new test failures on ppc64le with 6.22.06 due to: · 3c8e0f41
      Mattias Ellert authored
      g++: error: linux-vdso64.so.1: No such file or directory
      
      The list of names filtered out by TCling is incomplete.
      The vdso(7) man page gives the following list:
      
             user ABI   vDSO name
             ─────────────────────────────
             aarch64    linux-vdso.so.1
             arm        linux-vdso.so.1
             ia64       linux-gate.so.1
             mips       linux-vdso.so.1
             ppc/32     linux-vdso32.so.1
             ppc/64     linux-vdso64.so.1
             riscv      linux-vdso.so.1
             s390       linux-vdso32.so.1
             s390x      linux-vdso64.so.1
             sh         linux-gate.so.1
             i386       linux-gate.so.1
             x86-64     linux-vdso.so.1
             x86/x32    linux-vdso.so.1
      3c8e0f41
    • Javier Lopez-Gomez's avatar
      [cling] New interface to export Cling run-time configuration bits. · 94f2f18f
      Javier Lopez-Gomez authored
      This commit allows the user to enable/disable specific interpreter capabilities
      without requiring to `#include` the heavier weight `Interpreter.h` (that also
      has dependencies on llvm).
      
      The only feature covered at the moment is definition shadowing.
      
      Closes cling issue #360.
      94f2f18f
  17. Nov 25, 2020
Loading