On Saturday, 20 September 2014 at 18:18:05 UTC, Walter Bright wrote:

Please show me the inc/dec optimized x86 code.

There's no optimization of the inc/dec, you use regular inc/dec within a larger xbegin/xend block.

You amortize the cost over all the lock-prefixed instructions you would otherwise have executed in that block. There is no locking, there is a transaction instead. Only if the transaction fails do you execute the locking fallback code.

Suppose I pass a pointer to:

   void foo(T* p);

How do I do dataflow?

You mean a separate compilation unit that the compiler don't have access to? You don't, obviously.

The question was about mixing RC'd and non-RC'd objects.

Well, if you are talking about negative offset for ref counts, then people do it. E.g. there are examples of systems that provide C-compatible strings with length at offset -4 and ref count at -8.

If you need to distinguish you can either use address-space info or keep a negative int in the non-RC'd object.

Reply via email to