The compiled-ness or not of the code is almost irrelevant to the lightweightedness of the thread system. The essence of lightweight threads is that it gives you much of the usefulness of a separate process without much of the setup cost. Thus a Smalltalk Proces is actually a rather good example of what most people would mean by a lightwieght thread - it costs almost nothing to setup and operate. A Unix process fork on the other hand is quite heavy weight since it involves basically copying the entire process space of the spawner process, and then full scale process context switches in use. Various optimisations have been made over time like memory copy-on-write, but it still costs quite a bit. The context swapping cost might possibly be better with very optimised compiled code, but don't forget that the context switching code in Smalltalk is a primitive that should be just as well compiled...
tim