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,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 Path: border2.nntp.dca1.giganews.com!nntp.giganews.com!newspeer1.nac.net!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!news.stack.nl!aioe.org!.POSTED!not-for-mail From: Victor Porton Newsgroups: comp.lang.ada Subject: Re: Rough proposal to make some generic types static Date: Tue, 22 Jul 2014 00:32:20 +0300 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: rFX7cZOSaeuGGZI2vwQTaQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit X-Complaints-To: abuse@aioe.org User-Agent: KNode/4.12.4 X-Notice: Filtered by postfilter v. 0.8.2 Xref: number.nntp.dca.giganews.com comp.lang.ada:187750 Date: 2014-07-22T00:32:20+03:00 List-Id: Niklas Holsti wrote: > On 14-07-21 23:54 , Victor Porton wrote: >> Victor Porton wrote: >> >>> What in the RM signifies that Enum_Type (below) is not a static scalar >>> type? > > (Just as a reminder: Enum_Type is a formal type in a generic: > > generic > type Enum_Type is (<>); > ... > ) > >> I've found: RM 4.9 26/3: >> >> "A static scalar subtype is an unconstrained scalar subtype whose type is >> not a descendant of a formal type, or ..." >> >> Why this rule? Can it be relaxed? > > As I understand it, this rule (and others similar to it) allow compilers > to create "shared code" generics, that is, to compile a generic unit > into a single set of machine code that works for all instances of the > generic, thus reducing code size at the cost of possibly increasing > execution time. Really? How a compiler may create shared code when a formal scalar type may be of different sizes in different instantiations? It seems for me, that it is anyway impossible to (efficiently) create "shared code" generics with formal scalar types. So, I think my proposal remains in force. > One compiler using shared code generics is Janus/Ada from RR Software. > >>> We should work on an amendment for a future version of Ada to make >>> Enum_Type static. >>> >>> Is it difficult to implement this? > > It would probably make it impossible or very hard to compile shared code > for generic units. -- Victor Porton - http://portonvictor.org