> To my understanding, the justification order can be considered as the actual
> execution order due to some compiler transformation that does not respect
> program order. But the justification order still needs to be legal (a read
> returns a latest write) and respects the hb relationship except program
> order. And the justification order still needs to respect the program order
> between two actions, one of which is a synchronization action. Am I right?
Your intuition is heading in the right direction, but I think you may be
missing a piece of the puzzle. The reason that we call it "justification
order" and not "execution order" is that while a first intuition might be
"the order in which a program is executed after compiler transformations
are performed", this is not a nuanced enough idea to capture all of the
possible results we wish to allow.
The justification order is an order that justifies each action based on
all previous actions. There is no notion that a read has to return the
last write to a given variable; this is because such a notion would be too
restrictive. There is not necessarily a mapping from the way a program
may be executed on a given machine to the justification order.
I am not sure where synchronization actions come in, because there weren't
any in the example you gave.
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:53 EDT