[squeak-dev] Using V8 for other languages

David Griswold david.griswold.256 at gmail.com
Sat Sep 6 06:35:58 UTC 2008


On Fri, Sep 5, 2008 at 1:30 PM, Stephen Pair <stephen at pairhome.net> wrote:

> On Fri, Sep 5, 2008 at 3:17 PM, David Griswold <
> david.griswold.256 at gmail.com> wrote:
>
>>
>> Yes, it's becoming clear that V8 doesn't do anything that radically new or
>> magical, and that it was specifically designed for JavaScript, not as any
>> kind of universal dynamic language VM.  I'm especially disappointed at
>> Eliot's observation that it doesn't have a bytecode intermediate form,
>> although they may do mixed-mode execution by first interpreting the AST.
>>
>
> Why is that a bad thing?  I actually thought that was one of the most
> interesting aspects.  Bytecodes can provide you a concise portable format,
> but you could also do that by compressing or otherwise condensing source
> code (which I guess one way of condensing is to map to bytecode).  I'm not
> saying bytecodes wouldn't be desirable, but there's something appealing (to
> me) about a direct translation from source to machine code and I'm curious
> what other advantages bytecodes might have.
>

Bytecodes can have two completely independent purposes: an external format
for transporting code, and an internal format for executing code.  I am
talking about the second purpose.   For dynamic languages with tagging,
compiled code is much more verbose than in languages like C.  If you have to
compile a large body of such code, it can use a huge amount of space,
especially if you don't have a good optimizer.

That is why VisualWorks keeps only a cache of the current working set of
compiled code, not all of the code that has been compiled.  That is also why
Strongtalk uses mixed-mode execution, i.e. only compiles hotspots, and
interprets the rest of the code.  For an example of what happens when you
try to compile everything that runs, see Self, which sucked down at least
64MB to run the image back in the day (I don't know if that has changed).

Also, compiling code that isn't in a hotspot is a waste of time, since you
spend much longer compiling the code than you would have spent interpreting
it, and can cause big compile pauses if the compiler does much optimization.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20080905/d4678a70/attachment.htm


More information about the Squeak-dev mailing list