comp.lang.ada
 help / color / mirror / Atom feed
From: Robert Dewar <robert_dewar@my-deja.com>
Subject: Re: Subprogram types vs. "limited access" (was Re: Do we need "Mission-Critical" software? Was: What to Do?
Date: Sat, 13 Jan 2001 01:35:01 GMT
Date: 2001-01-13T01:35:01+00:00	[thread overview]
Message-ID: <93obc6$gs5$1@nnrp1.deja.com> (raw)
In-Reply-To: f5L76.231$Br5.104407@homer.alpha.net

In article <f5L76.231$Br5.104407@homer.alpha.net>,
  "Randy Brukardt" <randy@rrsoftware.com> wrote:

> The Intel processors include some instructions that were
> intended to be used to manage displays, but they are slower
> than the equivalent regular instructions, so no one uses
> them.

That's misleading. When people talk about displays, they almost
always mean single global displays, whih are updated as each
procedure is called.

The Intel hardware scheme uses local displays, where each
procedure constructs a new copy of the display in its local
stack frame for its own use. This is a very bad method of
doing things period, regardless of whether it is done in
hardware or software.

Many compiler text books still present this entirely poor
way of doing things, and most likely some fellow at Intel
had a compiler course where the instructor stressed this
bad method, and that's how it got into the hardware. The
instruction involved (ENTER with a non-zero level) is
indeed completely useless.

> Unless closures are needed (certainly the normal case)
> displays are quite efficient.

Actually in Ada 83, where pointers to procedures did not exist
(part of the reason for their exclusion in Steelman was an
awareness of this issue), displays are very efficient, much
more efficient than static links. Why?

Because the situation is as follows:

1) with static links, no overhead is required for calls to top
level procedures, but if you call a nested procedure, link
mucking is ALWAYS required.

2) with a display, if you do things right (it requires noticing
a rather special case not discussed in any text book I know of)
then calling a procedure that has no nested procedures has no
overhead, and it is only when a call to a procedure containing
nested procedures is made that display mucking is needed.

Clearly if you have no nested procedures, both methods become
completely efficient. If ther ARE nested procedures, behavior
2) is much more attractive than behavior 1) since dynamically
more calls are to leaf procedures.

> There are a couple of obscure cases in generics that
> require handling closures, so Janus/Ada at least already has
> support for doing that. Those cases are (of course) quite
> expensive.

I suspect that is an artifact of shared generics in Janus/Ada,
I know of no such obscure cases in the Alsys implementation
which used displays throughout.

Personally, I would immediately choose static links if I
decided on shared generics. Furthermore in Ada 95, static
links are really the only approach that makes sense. The
only reason the language was restricted (some would say
crippled, but not me :-) so that displays work was loud
objections from the Alsys and RR folks that their compilers
could not be adapted easily to Ada 95 unless this was the
case.

Note that it is the use of static links that makes the
very useful 'Unrestricted_Access attribute easy to implement
in GNAT.

Robert Dewar

(*) the trick in display management is the following:

The display is used for up level references, but for references
to the current stack frame, you simply use the stack pointer
or the frame pointer as the case may be.

This means you do NOT adjust the current display entry unless
someone might use it. The ONLY case in which someone might use
the entry is if you call one of your own nested procedures, and
if you don't have any nested procedures, then you don't need
to worry about this case.

The normal invariant for a display is that the N'th level entry
is the stack frame of the most recently invoked N'th level
subprogram.

With this (very important) modification, the invariant for
the display is that the N'th level entry is the stack frame of
the most recently invoked N'th level subprogram NOT having
any nested subprograms.


Sent via Deja.com
http://www.deja.com/



  reply	other threads:[~2001-01-13  1:35 UTC|newest]

Thread overview: 184+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-12-31 16:09 What to Do? Petra Lynn Hofman
2000-12-31 16:58 ` Robert Dewar
2000-12-31 17:41   ` Ted Dennison
2001-01-01 15:24     ` Marin David Condic
2001-01-01 17:18       ` Robert Dewar
2001-01-02 15:05         ` Marin David Condic
2001-01-01 17:54       ` Ted Dennison
2001-01-02 15:14         ` Marin David Condic
2001-01-01 21:22       ` Lao Xiao Hai
2001-01-01 15:15   ` Marin David Condic
2000-12-31 18:06 ` E. Robert Tisdale
2000-12-31 21:07   ` tmoran
2001-01-01 16:10   ` Marin David Condic
2001-01-01 17:08     ` Ehud Lamm
2001-01-01 17:53       ` Do we need "Mission-Critical" software? Was: " Warren W. Gay VE3WWG
2001-01-01 18:29         ` Ted Dennison
2001-01-01 20:25           ` Robert Dewar
2001-01-02 19:03             ` Ted Dennison
2001-01-02 20:22               ` Robert Dewar
2001-01-02 22:23               ` Florian Weimer
2001-01-02 22:27               ` Florian Weimer
2001-01-01 20:26           ` Robert Dewar
2001-01-02 19:05             ` Ted Dennison
2001-01-02 20:24               ` Robert Dewar
2001-01-02 22:53                 ` Ted Dennison
2001-01-03 18:39           ` Georg Bauhaus
2001-01-03 19:22             ` Ted Dennison
2001-01-04  1:18               ` Cesar Scarpini Rabak
2001-01-01 19:28         ` Ehud Lamm
2001-01-02 14:56         ` Cesar Scarpini Rabak
2001-01-03  3:32           ` Warren W. Gay VE3WWG
2001-01-04  1:02             ` Cesar Scarpini Rabak
2001-01-04  3:53               ` Warren W. Gay VE3WWG
2001-01-04 12:04               ` Marin David Condic
2001-01-04 13:48                 ` Marc A. Criley
2001-01-06 20:23                   ` Lao Xiao Hai
2001-01-04 17:09                 ` Ted Dennison
2001-01-04 20:30                   ` Kevin Rigotti
2001-01-05  9:15                     ` n_brunot
2001-01-05  9:57                       ` Tarjei T. Jensen
2001-01-05 10:41                         ` n_brunot
2001-01-05 13:41                       ` Robert Dewar
2001-01-05 14:15                         ` n_brunot
2001-01-06 17:17                           ` Robert Dewar
2001-01-08  8:51                             ` n_brunot
2001-01-09  4:00                               ` Robert Dewar
2001-01-09 10:20                                 ` n_brunot
2001-01-09 12:34                                   ` Karel Thoenissen
2001-01-09 14:18                                   ` Robert Dewar
2001-01-09 15:29                                     ` Ole-Hjalmar Kristensen
2001-01-09 19:25                                     ` tmoran
2001-01-09 20:11                                     ` Florian Weimer
2001-01-09 14:20                                   ` Robert Dewar
2001-01-10  2:08                                 ` Keith Thompson
     [not found]                               ` <93e2d1$spv$1@ <3A5B054B.3CF03325@hello.nl>
2001-01-09 22:05                                 ` Simon Wright
2001-01-05 15:35                         ` Ole-Hjalmar Kristensen
2001-01-05 19:20                           ` Object naming conventions (was: Do we need "Mission-Critical" software?) Kevin Rigotti
2001-01-06 17:30                             ` Robert Dewar
2001-01-06 17:24                           ` Do we need "Mission-Critical" software? Was: What to Do? Robert Dewar
2001-01-08  9:14                             ` n_brunot
2001-01-09  0:28                               ` Cesar Scarpini Rabak
2001-01-09  8:35                                 ` Florian Weimer
2001-01-10  2:21                                 ` mark_lundquist
2001-01-09  2:34                               ` DuckE
2001-01-09  4:12                               ` Robert Dewar
2001-01-09  9:12                                 ` n_brunot
2001-01-09 12:24                                   ` David Gillon
2001-01-09 12:58                                   ` Marc A. Criley
2001-01-09 13:42                                   ` Marin David Condic
2001-01-09 14:00                                     ` Marin David Condic
2001-01-12  0:21                                       ` Larry J. Elmore
2001-01-12  1:24                                         ` Al Christians
2001-01-12  5:19                                         ` Ken Garlington
2001-01-12 18:05                                         ` Marin David Condic
2001-01-09 14:27                                   ` Robert Dewar
2001-01-09 15:15                                     ` n_brunot
2001-01-09 19:41                                       ` Robert Dewar
2001-01-09 20:44                                         ` Florian Weimer
2001-01-10 12:22                                           ` Marin David Condic
2001-01-10 13:49                                             ` Ken Garlington
2001-01-10 20:41                                           ` Robert Dewar
2001-01-09 23:04                                         ` tmoran
2001-01-27 16:58                                           ` Alejandro R. Mosteo
2001-01-10 16:37                                         ` Jerry Petrey
2001-01-10 19:12                                           ` Georg Bauhaus
2001-01-11  1:43                                           ` Frank Manning
2001-01-09 16:12                                     ` n_brunot
2001-01-09 19:48                                       ` Robert Dewar
2001-01-09 20:43                                         ` Britt Snodgrass
2001-01-10 20:43                                           ` Robert Dewar
2001-01-11 13:41                                             ` JOVIAL (was Do we need "Mission-Critical" software?) Ken Garlington
2001-01-12 15:32                                               ` carr_tom
2001-01-12 16:58                                                 ` Ira D. Baxter
2001-01-22 23:18                                                 ` jls
2001-01-13 14:20                                               ` Ken Garlington
2001-01-10 10:41                                         ` Do we need "Mission-Critical" software? Was: What to Do? David Kristola
2001-01-10 13:44                                           ` Ken Garlington
2001-01-10 21:39                                           ` Robert Dewar
2001-01-10 11:47                                         ` n_brunot
2001-01-10 12:25                                           ` Marin David Condic
2001-01-10 21:36                                           ` Robert Dewar
2001-01-11 10:00                                             ` n_brunot
2001-01-12  0:42                                               ` Larry J. Elmore
2001-01-12  1:47                                                 ` Robert Dewar
2001-01-12 16:05                                               ` Georg Bauhaus
2001-01-16 19:52                                               ` Do we need any Dewar-bashing? Wes Groleau
2001-01-09 19:03                                     ` Do we need "Mission-Critical" software? Was: What to Do? dmitry6243
2001-01-09 19:51                                       ` Robert Dewar
2001-01-09 20:46                                         ` Florian Weimer
2001-01-09 21:57                                         ` Warren W. Gay VE3WWG
2001-01-10  8:55                                         ` dmitry6243
2001-01-10 13:39                                           ` Pascal Obry
2001-01-11  8:58                                             ` dmitry6243
2001-01-11 21:01                                       ` mark_lundquist
2001-01-12 11:41                                         ` dmitry6243
2001-01-12 20:29                                           ` Subprogram types vs. "limited access" (was " mark_lundquist
2001-01-12 21:58                                             ` Randy Brukardt
2001-01-13  1:35                                               ` Robert Dewar [this message]
2001-01-13  1:20                                             ` Robert Dewar
2001-01-13 17:29                                             ` dmitry6243
2001-01-15 21:06                                               ` mark_lundquist
2001-01-16  0:32                                                 ` Robert Dewar
2001-01-16  2:57                                                   ` mark_lundquist
2001-01-16  5:47                                                     ` Robert Dewar
2001-01-16 17:47                                                       ` mark_lundquist
2001-01-16  9:12                                                 ` dmitry6243
2001-01-16 20:04                                         ` Wes Groleau
2001-02-02  6:45                                           ` Java packages (was " mark_lundquist
2001-01-15 20:04                                   ` Lao Xiao Hai
2001-01-15 20:28                                     ` Jerry Petrey
2001-01-15 21:05                                       ` tmoran
2001-01-16  0:36                                         ` Robert Dewar
2001-01-16 13:23                                           ` Marin David Condic
2001-01-15 21:44                                     ` Tucker Taft
2001-01-15 22:26                                       ` BSCrawford
2001-01-23  2:19                                       ` Lao Xiao Hai
     [not found]                                         ` <94kkme$amg$1@nnrp1.deja.com>
2001-01-26 20:43                                           ` Lao Xiao Hai
2001-01-27  9:36                                             ` David Kristola
2001-01-27 21:54                                             ` Ken Garlington
2001-01-27 23:09                                               ` Pat Rogers
2001-01-28 22:30                                                 ` Ken Garlington
2001-01-09 13:37                                 ` Marin David Condic
2001-01-12  1:11                                   ` Larry J. Elmore
2001-01-09 14:52                               ` Larry Kilgallen
2001-01-10 10:26                                 ` Florian Weimer
2001-01-10 21:43                                   ` Robert Dewar
2001-01-11 18:51                               ` mark_lundquist
2001-01-11 20:11                     ` mark_lundquist
2001-01-12 11:49                       ` Kevin Rigotti
2001-01-12 19:19                         ` mark_lundquist
2001-01-16 20:20                           ` Wes Groleau
2001-01-04 16:48               ` Ted Dennison
2001-01-05 13:15                 ` Cesar Scarpini Rabak
2001-01-06 20:19               ` Lao Xiao Hai
2001-01-01 21:37       ` Lao Xiao Hai
2001-01-01 21:44         ` Ehud Lamm
2001-01-03  4:00         ` William Starner
2001-01-01 23:44       ` David Kristola
2001-01-02  0:41         ` Brian Rogoff
2001-01-02  3:14           ` tmoran
2001-01-02 20:35             ` David Kristola
2001-01-02 22:56               ` Ted Dennison
2001-01-02  7:38           ` Ehud Lamm
2001-01-02 15:08           ` Ted Dennison
2001-01-02 20:59           ` What to Do? Silly Valley JF Harrison
2001-01-02 23:22             ` William Dale
2001-01-06 20:45               ` Lao Xiao Hai
2001-01-08 18:15                 ` William Dale
2001-01-08 19:00                   ` Florian Weimer
2001-01-08 19:01                   ` Florian Weimer
2000-12-31 21:47 ` What to Do? Robert Love
2001-01-01 21:31   ` Robert Love
2001-01-10 22:06 ` km0762
2001-01-10 22:06 ` km0762
2001-01-11  0:00   ` James Rogers
2001-01-11  1:03     ` Al Christians
2001-01-29 16:09       ` spider_templar2
2001-01-11 13:57     ` John English
2001-01-11 18:00       ` William Dale
2001-01-12  0:27         ` John English
2001-01-12  2:57           ` David Botton
2001-01-13  3:34             ` Petra Lynn Hofman
2001-01-13  6:05               ` Robert Dewar
2001-01-13 13:52               ` Ken Garlington
replies disabled

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