IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
parser's state has been reverted, because it may induce parsing. This then would
result into an invalid parser state.
git-svn-id: http://root.cern.ch/svn/root/trunk@49120 27541ba8-7e3a-0410-8455-c3a389f83636
Works around consequence of r49108 which reverts part of r49070 until we have a proper fix.
git-svn-id: http://root.cern.ch/svn/root/trunk@49109 27541ba8-7e3a-0410-8455-c3a389f83636
Add comparison ops: I needed them for a dead end and now I have them and the compiler won't generate its own.
git-svn-id: http://root.cern.ch/svn/root/trunk@49101 27541ba8-7e3a-0410-8455-c3a389f83636
Rephrase !(a==b).
This file still needs major refactoring to remove code duplication.
git-svn-id: http://root.cern.ch/svn/root/trunk@49099 27541ba8-7e3a-0410-8455-c3a389f83636
collecting->completed->committing->committed
Make m_DeclQueue lazily allocated to reduce sizeof(Transaction) in an effort to make the TransactionRAII cheaper - second part is coming up.
Remove unused thus unneeded and annoying (non-const) iterator interfaces; they clash with the constness of the EmptyQueue.
git-svn-id: http://root.cern.ch/svn/root/trunk@49097 27541ba8-7e3a-0410-8455-c3a389f83636
That is only needed before iterating over the decls, which only happens at the codegen part.
The transformers must be (and are) able to iterate over a transaction that gets appended to.
git-svn-id: http://root.cern.ch/svn/root/trunk@49094 27541ba8-7e3a-0410-8455-c3a389f83636
Implement a shortcut for the deserialized decls to codegen. We do not need to put
the deserialized declaration in a transaction, because they are not interesting.
They are valid so we don't need to do sanity checks and if we'd want to unload
we would unload the entire PCH/PCM, which contains a list of all the deserialized
declarations.
NOTE that the implementation is rough and needs further polishing, which will
happen some time soon...
git-svn-id: http://root.cern.ch/svn/root/trunk@49076 27541ba8-7e3a-0410-8455-c3a389f83636
The issue is that sometimes we don't have a begun transaction. This can happen
mostly in cases when the code doesn't come from text representation but:
* From lookup, where template is being instantiated
* From a PCH/PCM, where a decl was deserialized.
This patch solves the first case: When we do findScope we have to instantiate
the declaration if needed.
Every time there is a chance that generated code's declarations can be orphaned,
we have to explicitly push a transaction so that we can keep the integrity.
git-svn-id: http://root.cern.ch/svn/root/trunk@49070 27541ba8-7e3a-0410-8455-c3a389f83636
Don't look for the wrapper for each decl if we already have it.
Unless asserts are on and we want to assert that we have only one wrapper.
git-svn-id: http://root.cern.ch/svn/root/trunk@48987 27541ba8-7e3a-0410-8455-c3a389f83636
Move CodeGenModule::Reset() to where the initializers are run to enforce the survival of the global inits until they are run.
git-svn-id: http://root.cern.ch/svn/root/trunk@48979 27541ba8-7e3a-0410-8455-c3a389f83636
To do: end and begin-of-next transaction should be tied together, else we might have decls not ending up in any transaction.
git-svn-id: http://root.cern.ch/svn/root/branches/dev/root6-pch@48936 27541ba8-7e3a-0410-8455-c3a389f83636
Some functions return temporary objects. Eg:
std::string getName() {
return "ROOT";
}
In that case the lifetime of the temporary variable is defined by the caller.
Such function called by TClingCallFunc would cause undefined behaviour, because
there is no actual caller and the compiler cannot define any lifetime.
In order to provide such concept we have implemented cling::StoredValueRef, which
is a reference counted cling::Value. As long as somebody "has" a copy of it, the
boxed value (and the occupied memory) will live.
However cling::Value and cling::StoredValueRef expose LLVM/clang/cling internals
to ROOT. We want to avoid for now exposing LLVM/clang/cling internals, so we have
TInterpreterValue, which makes cling::StoredValueRef opaque.
*New interface taking TInterpreterValue is added to the TInterpreter to allow the
users to manage the lifetime of the returned temporaries.
*Replace the occurrances of cling::Value with cling::StoredValueRef to avoid
any lifetime management issues.
*Minor optimizations of the existing implementation
*Tweaks to the build system so that TInterpreterValue.cxx could
#include cling/Interpreter/StoredValueRef.h
PLEASE NOTE: This is not the final implementation it needs polishing. Eg. there
is a bug that should be fixed soon, which doesn't allow to get the actual result
out of the TInterpreterValue.
git-svn-id: http://root.cern.ch/svn/root/trunk@48895 27541ba8-7e3a-0410-8455-c3a389f83636
Remaining:
* callfunc issues finding functions
* vtable issues (likely related)
* in stressHistogram: Test 3: Projection with Range for Histograms and Profiles................OK
Error in <TStreamerInfo::Build>: TProfile, unknown type: EErrorType fErrorMode
git-svn-id: http://root.cern.ch/svn/root/branches/dev/root6-pch@48858 27541ba8-7e3a-0410-8455-c3a389f83636
This cause the number of unique wrappers to decrease by 1.
Fix the test correspondingly.
git-svn-id: http://root.cern.ch/svn/root/trunk@48854 27541ba8-7e3a-0410-8455-c3a389f83636
and we need to pass in the gCling variable.
Fixes one of cling standalone test failures.
git-svn-id: http://root.cern.ch/svn/root/trunk@48852 27541ba8-7e3a-0410-8455-c3a389f83636
For example, when we have enum e {e1=1}; and we do e1 on the prompt we got the
address of e1 and we printed it out. However, this doesn't make sence because we
cannot use it later, because it is destroyed.
git-svn-id: http://root.cern.ch/svn/root/trunk@48850 27541ba8-7e3a-0410-8455-c3a389f83636
Reshuffle gCling; definition is now provided by the Interpreter internally, not in any header.
This will cause missing symbols in libraries instead of silently creating dumplicated (JIT / library).
Still requires Vassil to add a parameter to LifetimeHandler() - but this will cause a cling test failure as a reminder.
git-svn-id: http://root.cern.ch/svn/root/trunk@48817 27541ba8-7e3a-0410-8455-c3a389f83636
allows the generation of a product (eg one of the cling.o file) even-though
one of its dependency (eg. etc/cling/llvm/ADT/OwningPtr.h) has not been
actually built. This seems to happens if the rule to make the dependency
is a pattern rule that depend on a file (eg. interpreter/llvm/inst/include/llvm/ADT/OwningPtr.h)
that does not have a specific rule but is the byproduct of another product
create ($(LLVMLIB)). This is fixed by adding an explicit dependency of the
byproduct (eg. interpreter/llvm/inst/include/llvm/ADT/OwningPtr.h) on
the main product (eg $(LLVMLIB))
git-svn-id: http://root.cern.ch/svn/root/trunk@48804 27541ba8-7e3a-0410-8455-c3a389f83636