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 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Rough proposal to make some generic types static Date: Tue, 22 Jul 2014 00:28:07 +0300 Organization: Tidorum Ltd Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: individual.net t9lgfC9BLrdQuwbm/UQbCgVRxcnNqHDhTccIvdFoDmTbIPrEvW Cancel-Lock: sha1:BVY9Qefn946lCo9eVS3hr7UHHZY= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: Xref: news.eternal-september.org comp.lang.ada:21097 Date: 2014-07-22T00:28:07+03:00 List-Id: 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. 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. -- Niklas Holsti Tidorum Ltd niklas holsti tidorum fi . @ .