From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,a41c4a2c795dbe34 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder.news-service.com!weretis.net!feeder4.news.weretis.net!nuzba.szn.dk!news.jacob-sparre.dk!pnx.dk!jacob-sparre.dk!ada-dk.org!.POSTED!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Will "renames" increase program size? Date: Fri, 17 Jun 2011 19:02:49 -0500 Organization: Jacob Sparre Andersen Research & Innovation Message-ID: References: <46294109-f07d-49c0-8e81-65a369a05ced@z15g2000prn.googlegroups.com> <1ayjsy885qg2b$.13bmeo97hbau1$.dlg@40tude.net> <316ac8ed-1ded-43d0-98d1-36bb2c0221ad@f2g2000yqh.googlegroups.com> <2e8222df-9b82-497f-9dc4-5cb0d5653550@f31g2000pri.googlegroups.com> <1t5j5p8gurul3$.k4cq2qnsbbjb.dlg@40tude.net> <12lr1j2mmzidu.18gjo4p3e73kk$.dlg@40tude.net> NNTP-Posting-Host: static-69-95-181-76.mad.choiceone.net X-Trace: munin.nbi.dk 1308355374 12523 69.95.181.76 (18 Jun 2011 00:02:54 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Sat, 18 Jun 2011 00:02:54 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6090 Xref: g2news1.google.com comp.lang.ada:19939 Date: 2011-06-17T19:02:49-05:00 List-Id: "Dmitry A. Kazakov" 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.