comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Large arrays (again), problem case for GNAT
Date: 14 Apr 2005 11:03:17 -0400
Date: 2005-04-14T11:03:17-04:00	[thread overview]
Message-ID: <wccll7l4czu.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: pan.2005.04.14.10.46.05.356791@linuxchip.demon.co.uk.uk.uk

"Dr. Adrian Wrigley" <amtw@linuxchip.demon.co.uk.uk.uk> writes:

> Hi!
> 
> Thank you very much for the feedback on this, particularly
> those reporting success on particular configurations.
> 
> I should also comment:
> 
> I used 'malloc' rather then 'new' for two reasons:
> 
> 1) Using 'new' fails, giving "raised STORAGE_ERROR : object too large"
>    (in spite of having enough store to malloc and use)

'malloc' should work for the case you showed, where the array is
constrained, and there are no default initializations, etc.
In more complicated cases, you would need to hide 'malloc' behind
a storage pool in order to make things work properly.

> 2) My original program used 'mmap', but this is much more verbose
>    to set up.  On Linux, large 'malloc' uses mmap anyway.
> 
> I calculate the size to allocate manually because attempting
> to use the 'Size attribute fails (even when converted to a
> suitably large type).
> 
> In fact the 'Size attribute fails on objects over 2147483647 bits :(
> Sometimes this failure is silent (not trapped even with -gnato),
> sometimes it gets a constaint error at compile time.

Yeah, it was a language design mistake to measure everything in bits.
In 1983, it might have been unthinkable that a single object would be as
big as 1/8 the address space on a 32-bit machine.  But 16-bit machines
with 16 bits worth of real memory were common in those days, and the
same issue arises there.

But surely silent overflow is a compiler bug!

Actually, now that I think about it, it seems like non-silent overflow
is a compiler bug too.  The value of 'Size is universal_integer.  And
there's a rule somewhere (which I'm too lazy to look up) that says
non-static values of type universal_integer must be calculated using
the largest integer type allowed.  Since GNAT supports 64-bit integers,
it ought to be using that for 'Size when necessary.  Of course, this is
not portable, since compiles are not required to support 64-bit
integers.

- Bob



  reply	other threads:[~2005-04-14 15:03 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-13 12:46 Large arrays (again), problem case for GNAT Dr. Adrian Wrigley
2005-04-13 13:10 ` Larry Kilgallen
2005-04-13 13:24   ` Alex R. Mosteo
2005-04-13 13:31   ` Marc A. Criley
2005-04-13 19:52 ` Jeffrey Carter
2005-04-13 19:54 ` Randy Brukardt
2005-04-13 22:01   ` (see below)
2005-04-14  0:16     ` Robert A Duff
2005-04-14  1:11       ` Alexander E. Kopilovich
2005-04-14  7:29         ` Dmitry A. Kazakov
2005-04-14  7:45           ` Duncan Sands
     [not found]           ` <1113464720.9829.20.camel@localhost.localdomain>
2005-04-14 13:59             ` Marius Amado Alves
2005-04-14 14:09               ` Dr. Adrian Wrigley
2005-04-14 14:40                 ` (see below)
     [not found]             ` <389d1596e98f95f0fdddc40afc0647b7@netcabo.pt>
2005-04-14 14:14               ` Duncan Sands
2005-04-14 15:18         ` Robert A Duff
2005-04-14 15:24           ` Robert A Duff
2005-04-15  5:21             ` Randy Brukardt
2005-04-15 11:49               ` Dr. Adrian Wrigley
2005-04-15 13:21                 ` Dmitry A. Kazakov
2005-04-15 14:31                   ` Dr. Adrian Wrigley
2005-04-15 14:57                     ` Dmitry A. Kazakov
2005-04-14 15:39           ` Dr. Adrian Wrigley
2005-04-14 15:48           ` Dmitry A. Kazakov
2005-04-14 21:19             ` Robert A Duff
2005-04-15  8:23               ` Dmitry A. Kazakov
2005-04-15  8:38                 ` Duncan Sands
2005-04-15  9:16                   ` Dmitry A. Kazakov
2005-04-15 18:30               ` Mark Lorenzen
2005-04-15 19:06                 ` Robert A Duff
     [not found]       ` <iSSDSN2L04G1@VB1162.spb.edu>
2005-04-14  7:34         ` Duncan Sands
2005-04-13 22:35 ` Robert A Duff
2005-04-14 11:40   ` Dr. Adrian Wrigley
2005-04-14 10:44 ` Dr. Adrian Wrigley
2005-04-14 15:03   ` Robert A Duff [this message]
2005-04-14 16:46     ` Dmitry A. Kazakov
2005-04-14 18:30       ` Pascal Obry
2005-04-14 19:45         ` Dmitry A. Kazakov
  -- strict thread matches above, loose matches on Subject: below --
2005-04-13 13:52 Duncan Sands
2005-04-13 14:20 ` Dr. Adrian Wrigley
replies disabled

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