Common Smalltalk VM Summit

David Griswold David.Griswold at
Fri Oct 6 18:18:27 UTC 2006

> -----Original Message-----
> From: squeak-dev-bounces at
> [mailto:squeak-dev-bounces at]On Behalf Of
> Michael Haupt
> Sent: Friday, October 06, 2006 10:33 AM
> To: The general-purpose Squeak developers list
> Subject: Re: Common Smalltalk VM Summit
> Hi,
> On 10/6/06, J J <azreal1977 at> wrote:
> > I'm confused.  I thought type-feedback wasn't going to give and speed
> > improvements.  If not, then what does it buy?
> it's the optional type system in Strongtalk that does not improve
> performance. Type *feedback* does, though.
> Take Self, for example. It does not have a type system (not even an
> optional one), but type feedback-directed optimisation. Type feedback
> works without a "static" type system backing it.
> The type feedback mechanisms are - provided I understand them
> correctly - about recording type information at send sites. This can
> be done in the absence of actual type annotations as well as in their
> presence. The latter approach is the one Strongtalk follows: type
> declarations are a "helping hand", but the power comes from the
> feedback mechanisms themselves.

A lot of this confusion isn't your fault, it's the fault of the unfortunate
choice of term "type-feedback," which is historical.  It is really "class"
or "implementation type" feedback, and it is a mechanism *inside* the
Strongtalk VM that dynamically tracks what instance classes occur at each
send site, to learn how to inline and optimize those sends.

The Strongtalk "type system" is a *completely* unrelated subsystem, that
runs outside the VM in Smalltalk.  Strongtalk types are not implementation
or class types, but pure interface types, that have nothing to do with
classes, so they are not useful for optimization.  They are used purely to
check the code and make it more structured and understandable, and are based
on static analysis, not dynamic analysis.

So Strongtalk has two, unrelated features: a dynamic type(class)-feedback
VM, and a Smalltalk static type(interface)-checker.

More information about the Squeak-dev mailing list