Hi Guy,
Yes, I am considering using Deuce for a project. What we are trying to
do, though, is to implement the transactional barrier insertion (and,
most likely, the transactional loop insertion) in a compiler and
simply call to Deuce's runtime to tap into your implementation of the
STM algorithms. That is why I am interested in the changes to the
runtime interface. Does bullet 2 you mention in your previous email
have anything to do with it?
Also, since you are so kind and answer my emails so quickly :-), I
thought that perhaps you could help me understand three aspects of
Deuce's implementation (possibly by pointing me to the right files in
the source tree):
1. Where do the "shadow" fields (those that store field indexes) get
initialized?
2. How do you handle nesting? It's not obvious from the analysis of
the code for the transactional loop or the code from transaction start/
commit. Is it somehow handled by the bytecode rewriter?
3. How do you handle static fields? It seems that the same
transactional barriers are used for "regular" and static field
accesses, but the actual bytecode for them differs enough (the former
gets an object reference on the Java stack as an argument whereas the
latter simply gets an index to Java's constant pool) that it's not
immediately obvious to me how this is done...
Thank you!
Adam