comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Proposal: Auto-allocation of Indefinite Objects
Date: Fri, 21 Aug 2020 09:08:46 +0200	[thread overview]
Message-ID: <rhnrtu$rk2$1@gioia.aioe.org> (raw)
In-Reply-To: rhn0pr$sdu$1@franka.jacob-sparre.dk

On 21/08/2020 01:25, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:rhmd3c$1eql$1@gioia.aioe.org...
>> On 20/08/2020 02:13, Randy Brukardt wrote:
> ...
>>>> What you do if such an object is allocated via pool-specific access
>>>> type?
>>>
>>> The whole object goes in that pool. The entire mechanism in Janus/Ada is
>>> built around pools - the stack is represented by a pool object as well as
>>> various other pools to support the mechanism.
>>
>> OK, but then you are back to the problem that you do not know how that
>> pool works. The user pool might require a certain order of objects inside
>> it and your interference with relocation will break it.
> 
> Such a pool does not implement the interface as defined in 13.11. It's OK of
> course to write a pool that depends on implementation-specific properties
> (I've done it many times), but such a pool is not usable with portable Ada
> code. If the pool allows any sort of allocation at any time, then it will
> work just fine with the Janus/Ada implementation.

It is a different situation. Such pools are not intended as a general 
purpose pools. But the type is. In my view an implementation of the type 
provided by compiler must work in all legal cases. Otherwise it is 
either language of compiler bug.

> (Of course, you can use a one-size only pool allocation with Janus/Ada, so
> long as what you are allocating doesn't have discrimiant-dependent
> components. Janus/Ada has informational messages about such components, so
> you can do it if you want/need. Probably should have an aspect as well to
> force an error if a static size is expected.)
> 
> Note that this is the reason that Ada doesn't support specifying the pool
> used by a container. It would not be reasonable to restrict the allocations
> in any way, so implementation-dependent pool designs would not work.
> 
>> No, I meant that if you used a pool behind the scenes for local objects
>> you could do that task-specific eliminating interlocking.
> 
> Whether that would be worthwhile would depend on how expensive the locking
> is.

It could be very expensive on a multi-core architecture. I also think 
about scenarios when the object is used inside a protected action. I 
would not like to see any pool interaction in an interrupt handler!

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2020-08-21  7:08 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-03 22:48 Proposal: Auto-allocation of Indefinite Objects Stephen Davies
2020-04-03 23:45 ` Stephen Leake
2020-04-04 10:54   ` Jeffrey R. Carter
2020-04-04 20:55     ` Stephen Davies
2020-04-04  8:31 ` Dmitry A. Kazakov
2020-07-27  7:47 ` Yannick Moy
2020-07-27  9:21   ` J-P. Rosen
2020-07-27  9:49     ` Dmitry A. Kazakov
2020-07-27 17:48   ` Brian Drummond
2020-07-27 20:02     ` Dmitry A. Kazakov
2020-07-28 14:28       ` Brian Drummond
2020-07-28 14:59         ` Dmitry A. Kazakov
2020-07-29 15:33           ` Brian Drummond
2020-07-29 16:20             ` Dmitry A. Kazakov
2020-07-30 13:37               ` Stephen Davies
2020-07-30 14:23                 ` Dmitry A. Kazakov
2020-07-30 17:04               ` Brian Drummond
2020-07-30 18:28                 ` Dmitry A. Kazakov
2020-08-10  0:39                   ` Randy Brukardt
2020-08-10  8:57                     ` Dmitry A. Kazakov
2020-08-20  0:10                       ` Randy Brukardt
2020-08-20 17:49                         ` Dmitry A. Kazakov
2020-08-20 20:19                           ` Dennis Lee Bieber
2020-08-20 23:33                             ` Randy Brukardt
2020-08-21  6:45                               ` Dmitry A. Kazakov
2020-08-23  4:52                                 ` Randy Brukardt
2020-08-23 12:28                                   ` Dmitry A. Kazakov
2020-08-20 23:30                           ` Randy Brukardt
2020-08-21  6:46                             ` Dmitry A. Kazakov
2020-08-23  4:48                               ` Randy Brukardt
2020-08-23 12:29                                 ` Dmitry A. Kazakov
2020-08-10  0:31               ` Randy Brukardt
2020-08-10  8:58                 ` Dmitry A. Kazakov
2020-08-20  0:13                   ` Randy Brukardt
2020-08-20 17:49                     ` Dmitry A. Kazakov
2020-08-20 23:25                       ` Randy Brukardt
2020-08-21  7:08                         ` Dmitry A. Kazakov [this message]
2020-08-23  5:03                           ` Randy Brukardt
2020-08-23 12:28                             ` Dmitry A. Kazakov
2020-07-27 20:31     ` Jeffrey R. Carter
2020-07-31  9:25 ` Stephen Davies
2020-07-31 10:20   ` Dmitry A. Kazakov
2020-08-01 11:22     ` Stephen Davies
2020-08-01 12:58       ` Dmitry A. Kazakov
2020-08-01 20:35         ` Stephen Davies
2020-08-01 20:56           ` Dmitry A. Kazakov
2020-09-03  4:30 ` linda white
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox