JavaMemoryModel: When are self-justifying speculative operations allowed?

From: Bill Pugh (
Date: Sat Aug 02 2003 - 20:21:11 EDT

As it turns out, tests 4, 5 and 6 provide a nice illustration of the
issues here.

Each of them could be considered examples of a speculative operation
that seems to cause itself (in fact, there are other transformations
that produce the behavior in test 6, but that is another matter).

When can we perform a speculative operation x that in retrospect winds up
seeming to influence/cause itself?

* test 4: Anytime, even if x would never have occurred without speculation
* test 5: If x could have occurred without speculation
* test 6: If x was guaranteed to occur without speculation

This isn't really a new insight, just a rephrasing of what we've been
discussing with regards to tests 5 and 6 over the past few days.

JavaMemoryModel mailing list -

This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:50 EDT