Skip to content
Snippets Groups Projects
  1. Jul 11, 2019
    • Axel Naumann's avatar
      [cling] Use canary bytes to determine whether to run dtor: · d16edb15
      Axel Naumann authored
      If the constructor of the contained object is not run (e.g. because
      assembling its arguments triggered an exception), the dtor must not
      be run when destructing the cling::Value. Detect this case by imprinting
      canary bytes into the contained object bytes: if they have changed,
      run the dtor, if not assume that the constructor has failed.
      
      This will cause false positives in those cases where the constructor
      is not modifying the first object bytes: in these cases, the dtor
      is not run even though the ctor is run. That is still better than
      the other case (where the dtor crashes because no ctor was run).
      d16edb15
  2. Jul 01, 2019
    • Vassil Vassilev's avatar
      [cxxmodules] Teach ACLiC to build modules. · d2cc6093
      Vassil Vassilev authored
      ACLiC now synthesizes a modulemap with a suffix _ACLiC_dict.modulemap. The file
      contains the source file to be compiled and the corresponding library.
      
      The modulemap is then passed to rootcling via -fmodule-map-file= flag to avoid
      naming clashes with possibly existing other modulemap files.
      
      This patch teaches cling to work with the -fmodule-map-file= flag.
      
      ACLiC supports automatic inclusion of Rtypes.h (making ClassDef macro
      available). Modules are built in isolation and are resilient to #include
      of Rtypes.h at rootcling startup time. We make module Core (containing Rtypes.h)
      visible via a newly implemented callback.
      d2cc6093
  3. Jun 28, 2019
  4. Jun 19, 2019
    • Vassil Vassilev's avatar
      [cxxmodules] Store rdict files as module file extensions. · f5bf74cd
      Vassil Vassilev authored
      This patch moves the ROOT-specific rdict.pcm optimization in the EXTENSION_BLOCK
      of a C++ module file.
      
      This reduces the generated artifacts and simplifies the loading of a rdict pcm
      file as it is now part of the C++ module file. This patch paves our way to
      using the global module indexing.
      f5bf74cd
  5. Jun 07, 2019
    • Philippe Canal's avatar
      Insure that the commit callbacks don't change the 'current' transaction. · 84ab2c06
      Philippe Canal authored
      This should solve the problem we have been seeing with cmsUnload.  The problem stems from the fact that TCling::AutoParseImplRecurse
      uses the address of the current transactions has an index/key when registering a class in fTransactionHeadersMap.
      
      On some platforms TInterpreter.h is parsed late, i.e. during the compilation of:
      
         gInterpreter->AutoParse("SiStripCluster");
      
      consequently (as AutoParse does not create its own transaction), the transactions that contains
      the parsin of TInterpreter is the last one committed before AutoParseImplRecurse is executed.
      
      Without the parsing of TInterpreter.h then that transaction is return by fInterpreter->getCurrentTransaction().
      With the parsing of TInterpreter.h, during the commit of the transaction of the callbacks are triggered
      and one of the decl is a constant (kFALSE) and thus, in TCling::HandleNewDecl, provokes the execution of
      
             if (gROOT->GetListOfGlobals()->FindObject(ND->getNameAsString().c_str()))
               return;
      
      which will triggered the creation of a Transaction, however since the last top level transaction was
      just switch to the state 'Committed', the new transaction will not be nested and thus
      IncrementalParser::endTransaction will set the current transaction to 'nullptr'.
      
      And this value of nullptr for the key of fTransactionHeadersMap is neither guaranteed to be unique
      nor handled properly by the rest of the code.
      
      It is unclear why this problem have surfaced recently.
      
      On a failing machine, rebuilding with a 2 month old commit (ad9e5c42) still exhibits the problem.
      84ab2c06
    • Philippe Canal's avatar
  6. Jun 05, 2019
  7. Jun 03, 2019
  8. Jun 02, 2019
    • Vassil Vassilev's avatar
      [cling] Support recursive lookup helper calls. · f664d369
      Vassil Vassilev authored
      The implementation of class->library mapping makes a call to the
      LookupHelper::findScope. This makes the recursive invocations to
      LookupHelper::findScope -> ... -> LookupHelper::findScope happen more often.
      f664d369
  9. May 31, 2019
  10. May 15, 2019
  11. May 14, 2019
  12. May 13, 2019
    • xloem's avatar
      Protect possibly predefined preprocessor symbol · c0c35168
      xloem authored
      On my systems (RHEL7 and Android Termux) PAGE_SIZE is defined to 4096 in /usr/include/sys/user.h .  The enum then produces a compile-term error.
      Adding this change resolves this error for me.
      c0c35168
  13. Apr 30, 2019
  14. Apr 22, 2019
  15. Apr 18, 2019
  16. Apr 15, 2019
  17. Apr 11, 2019
  18. Apr 10, 2019
  19. Apr 09, 2019
  20. Apr 08, 2019
    • Vassil Vassilev's avatar
      [clad] Bump clad version to v0.5. · ad9e5c42
      Vassil Vassilev authored
      The new release includes some improvements in both Forward and
      Reverse mode:
      * Extend the way to specify a dependent variables. Consider function,
        `double f(double x, double y, double z) {...}`, `clad::differentiate(f, "z")`
        is equivalent to `clad::differentiate(f, 2)`. `clad::gradient(f, "x, y")`
        differentiates with respect to `x` and `y` but not `z`. The gradient results
        are stored in a `_result` parameter in the same order as `x` and `y` were
        specified. Namely, the result of `x` is stored in `_result[0]` and the result
        of `y` in `_result[1]`. If we invert the arguments specified in the string to
        `clad::gradient(f, "y, x")` the results will be stored inversely.
      * Enable recursive differentiation.
      * Support single- and multi-dimensional arrays -- works for arrays with constant
        size like `double A[] = {1, 2, 3};`, `double A[3];` or `double A[1][2][3][4];`
      
      See more at: https://github.com/vgvassilev/clad/blob/v0.5/docs/ReleaseNotes.md
      ad9e5c42
  21. Mar 26, 2019
    • Oksana Shadura's avatar
      Missing lines from modulemap from previous revert · d02f4014
      Oksana Shadura authored
      From V.Vasilev, it fixes:
      [ 72%] Building CXX object interpreter/llvm/src/tools/clang/lib/CodeGen/CMakeFiles/clangCodeGen.dir/CodeGenModule.cpp.o
      While building module 'Cling_Interpreter' imported from /.../root/core/clingutils/src/RStl.cxx:25:
      In file included from <module-includes>:5:
       /.../root/interpreter/cling/include/cling/Interpreter/RuntimeUniverse.h:13:2: error: "This file must not be included by compiled programs."
       #error "This file must not be included by compiled programs."
       ^
      d02f4014
  22. Mar 25, 2019
    • Vassil Vassilev's avatar
      [cxxmodules] Optimize IsWrapper · ba52bcc8
      Vassil Vassilev authored
      The getNameAsString interface causes a lot of temporary allocations.
      The analysis if a decl is a cling-style wrapper can work only on a
      simple declarations on the global scope.
      
      This patch filters out complex declarations (eg in namespaces) and
      checks only the identifier content.
      
      The patch reduces the memory footprint difference shown in root-project/root#3012.
      ba52bcc8
    • Vassil Vassilev's avatar
      [cmake] Remove dead option. · a99a855d
      Vassil Vassilev authored
      a99a855d
  23. Mar 23, 2019
  24. Mar 21, 2019
  25. Mar 17, 2019
  26. Mar 16, 2019
  27. Mar 11, 2019
Loading