PS and HPS did indeed implement the dynamic compilation technologies created by L Peter Deutsch and Allen Shiffman at Xerox Parc. Self 1 and 2 were even fancier JITs by Craig Chambers, but Self 3 (and 4) by Urs Hölzle implemented adaptive compilation which uses an initial simple compiler for all called code and then a second fancy compiler for the hot spots. The execution of the code from the first compiler not only measured execution to find the hot spots but also accumulated type information to make the second compiler simpler (compared to the type inference in the Self 2 compiler).
I gave a talk about this a few months ago: "Adaptive Compilation" -
"Before I started down the path of making Java fast, I was told "you can't JIT code that will touch a static compiler" .
Afterwards: all new languages start with the assumption "we can JIT this" in the implementation." - Cliff Click's LinkedIn (1997-2002 @ Sun Micro)