Groups | Search | Server Info | Login | Register


Groups > comp.lang.ada > #49520

Re: Custom Storage Pool questions

Newsgroups comp.lang.ada
Date 2021-09-14 17:11 -0700
References <e3c5c553-4a7f-408a-aaa7-60ec0b70202dn@googlegroups.com> <shnbn8$5he$1@dont-email.me> <bec26cfe-a7c3-49b9-8272-9f08be93d7fdn@googlegroups.com> <6db89043-7d5b-4856-b4e5-093219685b9bn@googlegroups.com>
Message-ID <fd9b1185-a642-457c-909f-e94d1221759fn@googlegroups.com> (permalink)
Subject Re: Custom Storage Pool questions
From Jere <jhb.chat@gmail.com>

Show all headers | View raw


On Tuesday, September 14, 2021 at 6:54:54 AM UTC-4, ehh wrote:
> On Tuesday, September 14, 2021 at 2:48:16 AM UTC+2, Jere wrote: 
> > 
> > Yes, but if you look at that blog, they are allocating space for the /user/ data 
> > and for the Next/Prev for controlled types and First/Last for unconstrained 
> > arrays in addition to the size specified by allocate. 
> >
> Yes, but if you look at that blog, they explain the default layout of fat pointers, 
> and the special value that need to be set on access types for the layout to 
> change. If you use such a GNAT-ism, your storage pool will also be bound 
> to GNAT... 
> 
> 
> ie: 
> "GNAT typically uses a "fat pointer" for this purpose: the access itself is in fact 
> a record of two pointers, one of which points to the bounds, the other points to 
> the data. This representation is not appropriate in the case of the header 
> storage pool, so we need to change the memory layout here." 
> 
> and: 
> "we need to ensure that the bounds for unconstrained arrays are stored next to 
> the element, not in a separate memory block, to improve performance. This is 
> done by setting the Size attribute on the type. When we set this size to that of 
> a standard pointer, GNAT automatically changes the layout," 
> 

What I am seeing in the blog is if I *do not* use the GNAT ism in my storage pool
and assume that the Size parameter indicates the full size needed, then if someone
uses my pool with a GNAT compiler it would erroneously access memory.

You can clearly see the calculation in the blog is:
Aligned_Size : constant Storage_Count :=   --  bytes
            Size + Header_Allocation + Extra_Offset;

Where Size is specified by Allocate, Header_Allocation is the user supplied fields
of the storage pool, and ***Extra_Offset*** is a separate size value that accounts
for First/Last or Previous/Next

Finalization_Master_Size : constant Storage_Count :=
         2 * Standard'Address_Size;   --  for Previous and Next
Extra_Offset : constant Storage_Count :=
         (Element_Type'Descriptor_Size + Finalization_Master_Size)
         / Storage_Unit;       --  convert from bits to bytes

The blog quotes:
"""The size for the bounds is given by the attribute Descriptor_Size. For most types, 
the value of this attribute is 0. However, in the case of unconstrained array types, it
 is the size of two integers"""

These values are specified separate from the Size parameter and added to it in the
Allocate function shown in the blog there.

If I were to write my own storage pool and I didn't do the Extra_Offset calculation and just
assumed the compiler would call Allocate with the correct Size value for everything,
the logic in that blog then would indicate that GNAT would assume I did the Extra_Offset
calculation anyways and it could access those fields even if I didn't explicitly allocate
them separately as GNAT does.  In that case the fields would be part of some other object's
memory or random memory.

My original question is if the intended premise in Ada is that Storage pools aren't expected to be 
created to be portable due to just being low level because compilers can just assume 
you will know to allocate hidden fields in addition to what the Size parameter specifies.

Does that help clarify what I'm confused on?  Sorry, I am not great with wording.

Back to comp.lang.ada | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-12 17:53 -0700
  Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-13 00:29 -0500
    Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-13 18:04 -0700
      Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:06 -0500
    Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-18 12:32 +0100
    Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-19 17:31 -0700
      Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-20 09:34 +0300
        Re: Custom Storage Pool questions Emmanuel Briot <briot.emmanuel@gmail.com> - 2021-09-19 23:48 -0700
          Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-20 09:35 +0200
          Re: Custom Storage Pool questions Shark8 <onewingedshark@gmail.com> - 2021-09-20 09:59 -0700
          Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:50 -0500
            Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-21 16:08 -0700
              Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-27 23:42 -0500
                Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-10-02 16:19 -0700
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-03 10:52 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-13 20:26 -0500
  Re: Custom Storage Pool questions "J-P. Rosen" <rosen@adalog.fr> - 2021-09-13 13:12 +0200
    Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-13 17:48 -0700
      Re: Custom Storage Pool questions "J-P. Rosen" <rosen@adalog.fr> - 2021-09-14 08:08 +0200
        Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-14 17:39 -0700
          Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-15 08:01 +0100
            Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-16 16:32 -0700
              Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 18:51 -0500
                Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-21 15:40 -0700
      Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-14 08:23 +0200
        Re: Custom Storage Pool questions "J-P. Rosen" <rosen@adalog.fr> - 2021-09-14 08:42 +0200
          Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-14 09:00 +0200
          Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 18:58 -0500
        Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-14 17:21 -0700
          Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-15 08:54 +0200
        Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 18:48 -0500
      Re: Custom Storage Pool questions Egil H H <ehh.public@gmail.com> - 2021-09-14 03:54 -0700
        Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-14 17:11 -0700
  Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-15 17:43 +0100
    Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-15 18:03 +0100
    Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-15 21:07 +0200
      Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-15 21:40 +0100
        Re: Custom Storage Pool questions Emmanuel Briot <briot.emmanuel@gmail.com> - 2021-09-16 00:12 -0700
          Re: Custom Storage Pool questions Jere <jhb.chat@gmail.com> - 2021-09-16 16:21 -0700
            Re: Custom Storage Pool questions Emmanuel Briot <briot.emmanuel@gmail.com> - 2021-09-17 00:08 -0700
            Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-17 08:18 +0100
            Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-17 15:56 +0200
              Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-17 20:46 +0100
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-17 22:39 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-18 00:17 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-18 09:49 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-18 12:03 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-18 12:22 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-18 18:59 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-18 18:19 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-19 13:36 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-19 13:41 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-20 10:05 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-20 09:35 +0200
                Re: Custom Storage Pool questions Niklas Holsti <niklas.holsti@tidorum.invalid> - 2021-09-20 11:08 +0300
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-20 10:28 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:45 -0500
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:40 -0500
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:30 -0500
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:37 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-21 08:28 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-27 23:38 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-28 09:00 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:26 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-21 08:51 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-27 23:31 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-28 08:56 +0200
                Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-09-28 08:52 +0100
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-28 10:07 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-28 17:04 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-29 09:57 +0200
                Re: Custom Storage Pool questions Shark8 <onewingedshark@gmail.com> - 2021-09-29 07:41 -0700
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-29 17:16 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-29 19:16 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-30 10:08 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-30 19:04 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-01 10:25 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-02 04:06 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-02 12:18 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-02 23:33 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-03 10:40 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-13 20:21 -0500
                Re: Custom Storage Pool questions "philip...@gmail.com" <philip.munts@gmail.com> - 2021-10-13 20:12 -0700
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-14 09:31 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-14 19:36 -0500
                Re: Custom Storage Pool questions Stephen Leake <stephen_leake@stephe-leake.org> - 2021-10-15 01:08 -0700
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-15 10:18 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-15 17:22 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-15 10:15 +0200
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-10-15 17:44 -0500
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-16 11:00 +0200
                Re: Custom Storage Pool questions Simon Wright <simon@pushface.org> - 2021-10-16 15:32 +0100
                Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-10-16 17:06 +0200
                Re: Custom Storage Pool questions Shark8 <onewingedshark@gmail.com> - 2021-10-18 07:23 -0700
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:19 -0500
                Re: Custom Storage Pool questions "Randy Brukardt" <randy@rrsoftware.com> - 2021-09-20 19:18 -0500
        Re: Custom Storage Pool questions "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2021-09-16 10:41 +0200

csiph-web