comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Will "renames" increase program size?
Date: Fri, 17 Jun 2011 19:02:49 -0500
Date: 2011-06-17T19:02:49-05:00	[thread overview]
Message-ID: <itgpve$c7b$1@munin.nbi.dk> (raw)
In-Reply-To: 12lr1j2mmzidu.18gjo4p3e73kk$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:12lr1j2mmzidu.18gjo4p3e73kk$.dlg@40tude.net...
> On Thu, 16 Jun 2011 18:39:35 -0500, Randy Brukardt wrote:
>
>>>Semantically returning result of a function is always copying because the
>>>object being returned changes the scope.
>>
>> "Changing scope" doesn't require a copy in either RM or some sort of 
>> outside
>> logical universe. The only thing that the "scope" of an object controls 
>> is
>> when it is finalized, and that has nothing to do with the contents (from 
>> a
>> logical perspective) of the object.
>
> I fail to see how finalization could have nothing to do with the contents.
> Finalized objects have no contents, they do not even exist.

Sorry, you need the read the RM again. Finalization is a process that 
happens on objects that exist, and it has no effect on whether they exist or 
not. Typically, they cease to exist later (how much later depends on where 
they are declared).

In particular, there is nothing necessarily wrong with accessing a finalized 
object; this allows objects to have circular dependencies and the like. This 
means, for instance, that an implementation should not deallocate part of an 
object when it is finalized (it is OK for the user to do that); for 
instance, the finalization of a dynamically bounded array object cannot 
include the implementation deallocating the associated memory -- that has to 
be done later. (Janus/Ada gets this wrong, although no one has ever reported 
a bug based on it, which shows the importance...)

Admittedly, a bit strange, but that's the rule.

...
>> The point is that copying has a visible semantic effect,
>
> The cases under consideration are ones where copying should have no
> semantic effect, e.g. parameter passing.

Last I recall, we were talking about renames, which never copy anything. 
Don't recall any discussion whatsoever about parameter passing. But if 
parameter passing does in fact do a copy, then there is a semantic effect 
(on aliasing at the very least).

It's pretty hard to do anything in a language definition without there being 
a semantic effect. Even when you think there isn't one, clever people like 
Adam and Steve Baird will show you one in some convoluted case. (Steve was 
just bending my ear about 'Unchecked_Access causing overhead when used to 
return an object of a local tagged type.)

                            Randy.





  reply	other threads:[~2011-06-18  0:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-15  2:10 Will "renames" increase program size? Adrian Hoe
2011-06-15  5:37 ` Randy Brukardt
2011-06-15  9:11   ` AdaMagica
2011-06-15 11:26     ` Yannick Duchêne (Hibou57)
2011-06-15 11:24   ` Yannick Duchêne (Hibou57)
2011-06-15 13:15     ` Dmitry A. Kazakov
2011-06-16  6:59       ` AdaMagica
2011-06-16  8:59         ` Dmitry A. Kazakov
2011-06-16 10:18           ` AdaMagica
2011-06-16 12:15             ` Dmitry A. Kazakov
2011-06-16 23:22             ` Randy Brukardt
2011-06-16 15:40           ` Adam Beneschan
2011-06-16 16:33             ` Dmitry A. Kazakov
2011-06-16 17:42               ` Adam Beneschan
2011-06-16 18:53                 ` Dmitry A. Kazakov
2011-06-16 23:39                   ` Randy Brukardt
2011-06-17  6:53                     ` Dmitry A. Kazakov
2011-06-18  0:02                       ` Randy Brukardt [this message]
2011-06-18  7:54                         ` Dmitry A. Kazakov
2011-06-18  8:58                           ` Yannick Duchêne (Hibou57)
2011-06-18 10:05                             ` Dmitry A. Kazakov
2011-06-18 12:49                               ` Yannick Duchêne (Hibou57)
2011-06-18 22:44                           ` Randy Brukardt
2011-06-22  0:56                             ` Shark8
2011-06-15 22:21 ` anon
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox