Update again, with a new performance milestone reached!

- I fixed an issue in "for" compilation that caused "break" to behave incorrectly
- opelementasgn is now compiling
- compiled methods are now instance methods, and in order to bind a method to a Ruby class we internally instantiate the "script" object that contains all the methods. This will allow us to use the same compiled scripts across implementations, since all call-site caching is done using instance instead of static fields.

opelementasgn is the big news for this one. With this compiling, one of the heaviest methods in matrix.rb now compiles fully. M. Ed Borasky has a MatrixBenchmark that he's been using to measure the relative speeds of YARV versus MRI. It makes heavy use of matrix.rb, and up to now we were always slower than MRI.

Up to now.

MRI:
Hilbert matrix of dimension 128 times its inverse = identity? true
586.110000   5.710000 591.820000 (781.251569)

JRuby trunk:
Hilbert matrix of dimension 128 times its inverse = identity? true
372.950000   0.000000 372.950000 (372.950000)

OpElementAsgn, for your edification, is any syntax like this:

a[0] += 'foo'
a[0] ||= 'foo'

...and so on. It was a little fiddly to get it compiling, but the benefits are certainly worth it.

- Charlie

Charles Oliver Nutter wrote:
Update for today:

- some non-local flow control is working. I need to expand handling to all places where it's necessary. We may need to bite the bullet and rejigger the relationship between JumpException, RaiseException, and LocalJumpError to make this a bit easier to do; right now there's double-catches in many places to check for either LocalJumpError or JumpException.* jump types, which is pretty gross.
- argspush is now compiling(which is actually for calls like a[*y] = x)
- backref is now compiling
- colon3 is not compiling
- flip is now compiling, but there's a bug in flip parsing Tom's finishing up

I'm working on zsuper at the moment, and super could probably happen today too. So remaining tasks after those are completed:

- classvardecl
- opelementasgn
- optn
- postexe
- rescue
- retry
- testing and proving out all non-local flow control


---------------------------------------------------------------------
To unsubscribe from this list please visit:

   http://xircles.codehaus.org/manage_email

Reply via email to