Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #22841

Re: OO dispatch

From Andrew Haley <andrew29@littlepinkcloud.invalid>
Subject Re: OO dispatch
Newsgroups comp.lang.forth
References (9 earlier) <kn0aqb$d3v$1@online.de> <R5CdndY-5plDUg7MnZ2dnUVZ_hOdnZ2d@supernews.com> <2013May16.160704@mips.complang.tuwien.ac.at> <ut-dnUpWOM9YygrMnZ2dnUVZ_t-dnZ2d@supernews.com> <2013May20.132840@mips.complang.tuwien.ac.at>
Message-ID <PeCdnUcty9HjsQfMnZ2dnUVZ_i2dnZ2d@supernews.com> (permalink)
Date 2013-05-20 09:00 -0500

Show all headers | View raw


Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
> Andrew Haley <andrew29@littlepinkcloud.invalid> writes:
>>Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
>>> 
>>
>>I was thinking of something very much like a generic function (in LISP
>>terminology), which is a function that is specialized on the type of
>>its operand.  This is a fairly general-purpose concept that IMO is
>>ideal for Forth.
> 
> It can be implemented with vtable dispatch, so it's not an alternative
> to it, but a concept at a different level.
> 
>>This is quite neatly implemented with a hash table and some caching.
> 
> So that's the implementation you were thinking of.  Still not a clear
> enough description that I could discuss it.

Sure, but them we'd be discussing the minutiae of a particular
implementation.  Is that useful at this stage?  I wouldn't have
thought so.

>>>>Nothing, save for the fact that you're hoping for good prediction and
>>>>neglecting the cache miss effects when fetching from the vtable.  The
>>>>prediction of an inline cache is going to be far better.
>>> 
>>> Have you measured it?
>>
>>No, but it's not going to be any worse (how could it be?) and it's not
>>limited to a fixed-size cache.
> 
> The way you describe it below, you only use inline caching for
> monomorphic methods.  There, your check branch will predict perfectly,
> and the BTB (or more sophisticated indirect branch predictor) will
> also predict perfectly; at least if we ignore aliasing in the
> predictors, and of course the warmup time of the predictor (including
> after task switches).

In the monomorphic case, an inline cache will predict perfectly unless
something changes.  An indirect branch predictor will predict
perfectly unless something changes or the entry has expired from its
cache, which is of limited size.

Andrew.

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


Thread

Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 16:46 +0200
  Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-15 13:11 -0500
    Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-15 23:23 +0200
      Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-16 02:24 -0500
        Re: The current object anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-16 13:55 +0000
        Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-16 17:45 +0200
          Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 05:13 -0500
            Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-18 06:43 -0400
            Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 10:03 -0500
              Re: The current object Doug Hoffman <glidedog@gmail.com> - 2013-05-18 11:30 -0400
              Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-19 01:20 +0200
                Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-19 12:33 -0500
            Re: The current object Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-19 01:07 +0200
              Re: The current object Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-19 03:58 -0500
    OO dispatch (was: The current object) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-16 14:07 +0000
      Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-18 05:28 -0500
        Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-20 11:28 +0000
          Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-20 09:00 -0500
            Re: OO dispatch Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-21 01:37 +0200
              Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 03:21 -0500
            Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-21 12:24 +0000
              Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 10:18 -0500
                Re: OO dispatch anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2013-05-21 16:03 +0000
                Re: OO dispatch Andrew Haley <andrew29@littlepinkcloud.invalid> - 2013-05-21 12:55 -0500
                Re: OO dispatch Bernd Paysan <bernd.paysan@gmx.de> - 2013-05-29 00:00 +0200
                Re: OO dispatch Mark Wills <markrobertwills@yahoo.co.uk> - 2013-05-28 15:49 -0700

csiph-web