comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Drummond <brian@shapes.demon.co.uk>
Subject: Re: Have the Itanium critics all been proven wrong?
Date: Wed, 22 Aug 2012 15:06:34 +0000 (UTC)
Date: 2012-08-22T15:06:34+00:00	[thread overview]
Message-ID: <k12shq$4ii$1@dont-email.me> (raw)
In-Reply-To: eddaeeee-8cfa-402e-964a-e795c4590dbe@q22g2000vbx.googlegroups.com

On Wed, 22 Aug 2012 07:00:31 -0700, Michael S wrote:

> On Aug 22, 3:39 pm, Brian Drummond <br...@shapes.demon.co.uk> wrote:
>> On Wed, 22 Aug 2012 03:32:00 -0700, Michael S wrote:

[... discussion of private types exported to module A from B]
>> This puts B in charge of the object lifetimes; if A wants to access a
>> stale object, expect an exception.
> 
> Exception, if I am lucky.
> If I am less lucky, the physical place of old auto object is now
> occupied by new auto object of the same or compatible type and the call
> to accessor caused silent corruption.

If a module has exported a pointer to an "auto object" then the 
accessibility checks have been circumvented by unchecked_access or 
unchecked_conversion. In which case ... yes, caveat programmer!

Pointers passed from a module will generally be to static or dynamic 
objects. Which, if dynamic, can be freed by unchecked_deallocation.
Again : caveat programmer. 

One benefit of the private type, forcing all accesses to an object being 
through its own methods, is that B can be implemented as a "controlled 
type", which allows B's programmer to make such mistakes less common.
For example, B's object may be reference counted, and only freed after 
all its handles are released. (And yet a pathological A may cheat, and 
access it after release.)

Controlled types could probably be used as the basis for a garbage 
collector.

>> > But is not such GC
>> > significantly less efficient than GC aided by compiler?
>> I don't know that would generally be the case. If you need GC, you may
>> often be able to structure the application to gain some advantage from
>> its properties; ...

> That's not a good argument.
> Compiler-supplied GC can also provide hint interface, like
> Compact_righ_now, Please_do_not_compact_if_you_dont_have_to.

True. If the GC implementor has foreseen the pattern you need or 
something close enough, then compiler-provided GC would probably be more 
efficient. 

- Brian



  reply	other threads:[~2012-08-26 14:09 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <5021874F.1747D0BF@sonic.net>
     [not found] ` <1e1tf9-0kp2.ln1@ntp6.tmsw.no>
     [not found]   ` <k0gn5r$l9h$1@needham.csi.cam.ac.uk>
     [not found]     ` <GPRWr.31944$Bw1.31300@newsfe05.iad>
     [not found]       ` <k0gq97$li8$1@needham.csi.cam.ac.uk>
     [not found]         ` <k0h6ef$jke$1@speranza.aioe.org>
     [not found]           ` <46f19bfc-930e-4f06-b5a6-c60f39cfda0c@p14g2000yqk.googlegroups.com>
     [not found]             ` <k0r609$4ij$1@speranza.aioe.org>
     [not found]               ` <077b12f6-1196-4b5c-bbdb-04291b1ae616@q22g2000vbx.googlegroups.com>
     [not found]                 ` <k0rree$lkn$1@speranza.aioe.org>
     [not found]                   ` <CC5730C5.1BC2E%yaldnif.w@blueyonder.co.uk>
     [not found]                     ` <k0t67b$b8r$1@speranza.aioe.org>
     [not found]                       ` <CC585119.1BCCC%yaldnif.w@blueyonder.co.uk>
     [not found]                         ` <k0uenp$fbg$1@speranza.aioe.org>
     [not found]                           ` <k0vo9u$fer$1@dont-email.me>
     [not found]                             ` <589825d2-d998-456a-9c37-c8ae13e1e7bc@e29g2000vbm.googlegroups.com>
2012-08-21 20:48                               ` Have the Itanium critics all been proven wrong? Niklas Holsti
2012-08-21 22:32                                 ` Robert A Duff
     [not found]                                 ` <keb838pn40uf3pq1536e9b3dptgd57h3se@invalid.netcom.com>
2012-08-22  2:32                                   ` Bill Findlay
2012-08-22  2:42                                     ` Adam Beneschan
2012-08-22  4:08                                       ` Bill Findlay
2012-08-22  4:40                                         ` Adam Beneschan
2012-08-22  9:29                                 ` Michael S
2012-08-22 10:14                                   ` Dmitry A. Kazakov
2012-08-22 10:28                                   ` Ludovic Brenta
2012-08-22 12:48                                     ` Brian Drummond
2012-08-22 15:42                                       ` Ludovic Brenta
2012-08-22 10:54                                   ` Niklas Holsti
2012-08-22 12:43                                     ` Michael S
2012-08-22 13:20                                       ` Michael S
2012-08-22 22:30                                         ` Randy Brukardt
     [not found]                               ` <k10tdr$nm6$1@dont-email.me>
     [not found]                                 ` <bb4e5231-142b-437c-8c2a-bbd6daf34df8@g2g2000vba.googlegroups.com>
2012-08-22 12:39                                   ` Brian Drummond
2012-08-22 14:00                                     ` Michael S
2012-08-22 15:06                                       ` Brian Drummond [this message]
2012-08-22 15:21                                         ` Bill Findlay
2012-08-22 15:59                                         ` Michael S
2012-08-22 16:01                                           ` Michael S
2012-08-22 16:58                                           ` Georg Bauhaus
2012-08-22 18:18                                           ` Bill Findlay
2012-08-22 15:05                                     ` Simon Wright
     [not found] <k0jkb3$hm1$1@dont-email.me>
     [not found] ` <632eec054470aafb59e98744e950ea8b@dizum.com>
     [not found]   ` <k0m5c3$t6t$1@dont-email.me>
     [not found]     ` <CC545B6F.1BA11%yaldnif.w@blueyonder.co.uk>
2012-08-22 22:35       ` Bill Findlay
replies disabled

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