comp.lang.ada
 help / color / mirror / Atom feed
From: "Nick Roberts" <nick.roberts@acm.org>
Subject: Re: Zero length Objects
Date: Thu, 1 Jul 2004 01:02:53 +0100
Date: 2004-07-01T01:02:53+01:00	[thread overview]
Message-ID: <2kh2leF2ct4hU1@uni-berlin.de> (raw)
In-Reply-To: PSFEc.50650$aJ3.17580@nwrdny02.gnilink.net

"Frank J. Lhota" <NOSPAM.lhota.adarose@verizon.net> wrote in message
news:PSFEc.50650$aJ3.17580@nwrdny02.gnilink.net...

> No object is really of zero length. The reason is that every object should
> have a unique address. Therefore, most Ada compilers will allocate at
least
> one storage element to each object, in order to insure that if we declare
>
>        A, B : Empty_Type;
>
> then A and B do not both refer to the same location.

Yes indeed. There was a long discussion about this in the Ada Comment list.
I hope Randy and Tucker are reading this thread, because it seems to add
fuel to my argument that the 'right' thing for a compiler to do is to allow
zero-size objects (and to perform zero-size allocation for them), and to
implement the access value mechanism I suggested.

For the curious, the mechanism I suggested was that the compiler 'invents'
unique encodings for access values that reference zero-size objects. An
invented encoding can be any value that can be stored in an object of the
access type which is guaranteed never to be the same as any valid address
(or other invented value in scope), assuming the typical mechanism that an
access value which references a nonzero-size object is simply its address.

This provides a way to preserve the 'uniqueness characteristic' of access
values, that if they designate different objects their values will be
different, without preventing the implementation of genuinely zero-size
objects (that do not take up any memory at all).

I believe the uniqueness characteristic of access values should be inviolate
(because certain algorithms might depend on it), and that genuinely
zero-size objects (actually, zero-size types) are sometimes useful (in
generic instantiations). Randy and Tucker disagreed (or at least, they
didn't agree that the uniqueness characteristic should be mandated by the
standard for access values referencing zero-size objects). I live in hope.

-- 
Nick Roberts





  reply	other threads:[~2004-07-01  0:02 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-30  5:55 Zero length Objects Robert C. Leif
2004-06-30 20:32 ` Jacob Sparre Andersen
2004-06-30 21:01 ` Frank J. Lhota
2004-07-01  0:02   ` Nick Roberts [this message]
2004-07-01  1:28     ` Georg Bauhaus
2004-07-01 10:37       ` Björn Persson
2004-07-01 11:25     ` Larry Kilgallen
2004-07-01 14:11       ` Nick Roberts
2004-07-01 15:42         ` Larry Kilgallen
2004-07-01 14:06     ` Xenos
2004-07-01 15:26       ` Nick Roberts
2004-07-02  1:06         ` Jeffrey Carter
2004-07-01  0:47   ` Brian May
2004-07-01 13:32     ` Frank J. Lhota
2004-07-01 14:52       ` Nick Roberts
2004-07-01 15:03         ` Xenos
2004-07-01 15:57           ` Hyman Rosen
2004-07-01 16:05             ` Xenos
2004-07-02 15:02               ` Frank J. Lhota
2004-07-02 15:11                 ` Adrian Knoth
2004-07-02 15:43                   ` Frank J. Lhota
2004-07-02 19:01                     ` Vinzent 'Gadget' Hoefler
2004-07-02 19:07                       ` Adrian Knoth
2004-07-02 19:25                         ` Vinzent 'Gadget' Hoefler
2004-07-02 21:06                           ` Xenos
2004-07-02 21:56                             ` Vinzent 'Gadget' Hoefler
  -- strict thread matches above, loose matches on Subject: below --
2004-07-02  8:30 Christoph Karl Walter Grein
2004-07-06 11:59 ` Nick Roberts
2004-07-06 22:14   ` Randy Brukardt
2004-07-06 22:28     ` Nick Roberts
replies disabled

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