Rubinius also uses this feature (optionally). It's called direct  
threading, it turns an array of bytecodes into a set of addresses,  
and the interpreter simple uses 'goto' to go to the next instruction.

As for support for it, yeah, it's a GCC extension only currently. But  
if you do a bit of googling, you can do direct threading without it,  
it just requires assembly code to get the data you need.

  - Evan Phoenix


On Aug 23, 2007, at 3:55 PM, SASADA Koichi wrote:

> Hi,
>
> Daniel Berger wrote:
>> Over on the Erlang mailing list I asked why they relied on GCC.  
>> Kenneth
>> Lundin replied that it's because they use a feature called "first  
>> class
>> labels" (aka "labels as values"). [1]
>
> YARV/Ruby 1.9 is using it.
>
> -- 
> // SASADA Koichi at atdot dot net
>