[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Variable Arguments

e

1/11/2005 7:06:00 PM

> Lähettäjä: "Mystifier" <rohitlodha@hotwireindia.com>
> Aihe: Re: Variable Arguments
>
> I am asking VM level. I am currently writing a stack based VM for Ruby
> from scratch. It is going to run ruby after compiling it to byte codes.
>
> In the process, I have to think about the bytecodes, the calling
> convention etc. A very basic toy could be ready early. I am also looking
> out for better performance and am willing to drop / alter ruby
> specifications, though my approach is to find a way without opting for
> the change.
>
> Currently, I am writing an Interpreter while the specifications are
> fluid. Once it is stabilized, I shall move over to jit compiler.
>
> Arity did give me a possible way to resolve my issue. Thanks.

Glad that you found a way. It being a somewhat interesting topic,
though, I'm interested in the issue at the VM level. From what I
understand, you'll compile the Ruby code

>> def foo(x, y, *z)
>> end
>> foo.bar(5, 4, 5, 6)

to bytecode, i.e.

method-call :foo [5, 4, 5, 6] # Or whatever

Which is then expanded to a new stack frame with the passed-in
variables at the ready. I'm guessing your problem is how to assign
the parameters to variables? For this, the pseudo-bytecode sequence
would change to something like:

method-call :foo :foo-call [5,4,5,6]
c-param-check :foo :foo-call # Expected params
c-assign-param :foo-call :x [5]
c-assign-param :foo-call :y [4]
c-assign-array :foo-call :z [5,6]
call :foo-call :foo

This of course if you don't just want to delegate the whole process
to the stack builder.

> Regards,
> Mystifier

E