From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!x6YkKUCkj2qHLwbKnVEeag.user.46.165.242.91.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Custom Storage Pool questions Date: Tue, 21 Sep 2021 08:51:08 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <1d2551f4-8189-44ec-a54d-4a56a672bedcn@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: gioia.aioe.org; logging-data="51608"; posting-host="x6YkKUCkj2qHLwbKnVEeag.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.9.2 Xref: reader02.eternal-september.org comp.lang.ada:62803 List-Id: On 2021-09-21 02:26, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:si4ell$1b25$1@gioia.aioe.org... > ... >>> Given that an object can be allocated in multiple independent pieces, it >>> seems unlikely that what you want will be provided. >> >> Such implementations would automatically disqualify the compiler. >> Compiler-generated piecewise allocation is OK for the stack, not for user >> storage pools. > > If someone wants to require contigious allocation of objects, there should > be a representation attribute to specify it. It would be difficult, because the types are declared prior to pools. That is when object layout does change. If the layout does not then you need no attribute. You can always run a mock allocation to compute overall size and offsets to the pieces and then do one true allocation. And with stream attributes you need to implement introspection anyway. So this might have been an issue for Ada 83, but now one can simply require contiguous allocation in pools. > And there should not be an > nonsense restrictions on records with defaulted discriminants unless you > specify that you require contiguous allocation. You can keep the object layout. It is only the question of "trolling" the pool, no how objects are represented there. >> No, it is about the overhead of maintaining "collections" associated with >> an access type in order to call Finalization for all members of the >> collection. > > How else would you ensure that Finalize is always called on an allocated > object? I would not, because it is plain wrong. Finalize must be called for each *deallocated* object. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de