On Sunday, 21 September 2014 at 15:03:09 UTC, Andrei Alexandrescu wrote:
On 9/21/14, 1:51 AM, Jacob Carlborg wrote:
On 2014-09-20 18:56, Andrei Alexandrescu wrote:

Please don't take me in a court of law. But yes, I am talking about the compiler inserting calls to increment and decrement reference counts. --
Andrei

We do need to know what you're proposal is for.

The title is an incomplete summary. Exceptions would be transparently reference counted. I.e. no changes in user code.

A little more detail on a design Walter has put together: define a new root class RCObject. Neither Object nor RCObject inherit each other. All classes that inherit RCObject are detected by the compiler as reference counted.

(For practical reasons, RCObject will implement IUnknown. There are a few random consequences of that (meaningless method QueryInterface, no class info, no monitor, COM-compatible layout) but IUnknown already has AddRef and Release and the compiler already recognizes IUnknown as a special case. Hooking RCObject there will leave us with two roots instead of adding a third one.)

Throwable will inherit RCObject. The compiler inserts AddRef and Release whenever copying RCObject (and derivatives) references around, of course following a null check.

The caveats discussed previously in http://goo.gl/Xl5U3z do apply.


Andrei

This makes much more sense to me than initial proposal. I may even be brave enough to say that I like it :)

Reply via email to