Reference counting with fat pointers

via Digitalmars-d digitalmars-d at puremagic.com
Sat Jul 26 06:21:48 PDT 2014


On Saturday, 26 July 2014 at 13:01:13 UTC, Kagamin wrote:
> On Saturday, 26 July 2014 at 10:49:25 UTC, Marc Schütz wrote:
>> There are some corner cases here. For example when an r-value 
>> is moved into a function as an argument. The callee will not 
>> decrement the RC of its parameters, with the consequence that 
>> the RC never goes to 0. There might be other problems, in 
>> particular in the presence of optimizations.
>
> How about this: an r-value is moved to caller's stack, then 
> passed to the callee? This way the callee still won't have to 
> maintain the counter. And this probably prohibits tail call 
> optimization.

Yes. And it needs stack unwinding on exceptions, but this is 
needed anyway.

On the other hand, if `scope` works and is used wherever 
possible, all of this probably doesn't matter too much. Most 
utility functions would just take `scope`, and won't need to pay 
the costs.


More information about the Digitalmars-d mailing list