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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,5992229ab824d8f7 X-Google-Attributes: gid103376,public From: dgibson@snoopy.cis.ohio-state.edu (david scott gibson) Subject: Re: Q: on redefinition of "= Date: 1996/04/02 Message-ID: <4jrsumINN9m0@snoopy.cis.ohio-state.edu>#1/1 X-Deja-AN: 145465955 references: <4jkj5sINN8d3@aleutian.cis.ohio-state.edu> <4jrlluINN15b@thalamus.cis.ohio-state.edu> organization: The Ohio State University, Department of Computer and Information Science newsgroups: comp.lang.ada Date: 1996-04-02T00:00:00+00:00 List-Id: In article , Robert A Duff wrote: >In article <4jrlluINN15b@thalamus.cis.ohio-state.edu>, >david scott gibson 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