[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compilation of methods per class.

   Date: 	Tue, 25 Sep 1990 17:04:03 PDT
   From: Jon L White <jonl@lucid.com>

   The assumption that breaks down is that most or all of the lookup
   requests find the entry in the cache (first probe or "mirror" probe). 
   Unless the more recent PCL has changed algorithms, there are lots of 
   reasonable circumstances where there will be a "cache miss" path taken 
   even though the entry is present someplace in the cache.

In the new PCL, the runtime dispatch starts at the primary location and
scans the entire cache until it gets back to the primary.  It is the
cache filling mechanism which takes responsibility for ensuring that
entries will always be close to their primary location.  This division
of labor makes the runtime dispatcher simpler and so a little faster.
You lose a little on very large caches that were going to miss anyways;
but that would be easy to fix by introducing a specialized dispatcher
for large caches that didn't scan more than a certain number of entries.
This whole strategy is explained better in the LFP90 paper on PCL.

There was a horrible bug in Victoria Day PCL which had symptoms like
what you are mentioning --- an entry could be in the cache, but there
would still be a cache miss.  I recall that bug being fixed, but I don't
know if the patch was widely distributed.

I don't remember what version of PCL Trent Lange was running.