comp.lang.ada
 help / color / mirror / Atom feed
From: dgibson@snoopy.cis.ohio-state.edu (david scott gibson)
Subject: Re: Q: on redefinition of "=
Date: 1996/04/02
Date: 1996-04-02T00:00:00+00:00	[thread overview]
Message-ID: <4jrsumINN9m0@snoopy.cis.ohio-state.edu> (raw)
In-Reply-To: Dp8wn3.B1x@world.std.com

In article <Dp8wn3.B1x@world.std.com>,
Robert A Duff <bobduff@world.std.com> wrote:
>In article <4jrlluINN15b@thalamus.cis.ohio-state.edu>,
>david scott gibson <dgibson@thalamus.cis.ohio-state.edu> wrote:
>>As I mentioned in my post, I'm painfully aware of the negative
>>implications of this strategy.  Unfortunately there is a mismatch
>>between Ada and the language I'm trying to map to Ada.  When I import
>>some type as a generic parameter, I need to know that the instance
>>gets a valid representation of that type.  With Ada's scalars, this is
>>impossible.
>
>You seem to imply that you want initialization, but not necessarily
>finalization.

For all static types like scalars this is the case since the language
ensures sufficient finalization automatically. 

>It seems to me that it wouldn't be hard for an implementation to
>special-case those controlled types that have initialization, but not
>finalization.  Most of the cost comes from the finalization support.

The strategy I'm currently working with uses null-bodied Initialize
and Finalize routines for wrapped scalars.  I provide an initial value
with a record component initialization.  The lack of a valid
representation is the problem, however, not the lack of a specific
initial value for scalars.  Since the representations don't have any
controlled sub-components, I'm assuming that the Initialize and
Finalize calls for wrapped scalars can be optimized away.  I realize
the tagged types will require more storage, but does GNAT's
implementation entail an additional performance penalty in this
situation?

>Also, a plain old (non-controlled) record type can have automatic
>initialization for its components.

Yes, I've still got this implementation around.  It suffers from all
of the same type conversion annoyances and requires explicit
importation of Swap everywhere.  However, it should be more efficient.
Once GNAT is compiling everything, I'll do some performance
comparisons and get an idea of just how costly the tagged scalars
implementation is.

--
Dave
dgibson@cis.ohio-state.edu







  reply	other threads:[~1996-04-02  0:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-03-30  0:00 Q: on redefinition of "= david scott gibson
1996-04-01  0:00 ` Tucker Taft
1996-04-01  0:00   ` david scott gibson
1996-04-01  0:00     ` Robert Dewar
1996-04-02  0:00       ` Mike Young
1996-04-02  0:00         ` Robert Dewar
1996-04-02  0:00           ` david scott gibson
1996-04-02  0:00             ` Robert A Duff
1996-04-02  0:00               ` david scott gibson [this message]
1996-04-02  0:00                 ` Robert A Duff
1996-04-02  0:00                   ` david scott gibson
1996-04-02  0:00             ` Robert Dewar
1996-04-03  0:00             ` Tucker Taft
1996-04-01  0:00 ` Robert A Duff
1996-04-01  0:00   ` david scott gibson
1996-04-01  0:00     ` Robert A Duff
replies disabled

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