My Reference Safety System (DIP???)

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Mon Mar 2 15:43:21 PST 2015


On Monday, 2 March 2015 at 22:51:29 UTC, deadalnix wrote:
> On Monday, 2 March 2015 at 22:21:11 UTC, Zach the Mystic wrote:
>> On Monday, 2 March 2015 at 22:00:56 UTC, deadalnix wrote:
>>> You don't put the ownership acquire at the same place, but 
>>> that is the same idea. It is probably even better to do it 
>>> your way (or is it ?).
>>
>> Yes. Unless the compiler detects that you duplicate a variable 
>> in two parameters in the same call, you literally have *no* 
>> added cycles, anywhere:
>>
>> fun(c, c.c);
>>
>> This is the only time you pay any penalty (except for passing 
>> globals, as we now realize, since all globals can alias 
>> themselves as parameters -- nasty).
>
> Global simply are parameter implicitly passed to all function 
> from a theoretical perspective. There are no reason to thread 
> them differently.

Except for this:

static Rctype t; //

fun(t);

Now you have that implicit parameter which screws things up. It's 
like calling:

fun(@globals, t);

...where @globals is a namespace which can alias t. So you have 
two parameters which can alias each other. I think the only 
saving grace is that you probably don't really need to pass a 
global that often, since you already have it if you want it. Only 
if you want the global to "play the role" of a parameter.

What do you think? How many times do you normally pass a global?


More information about the Digitalmars-d mailing list