Some questions

bryce at kampjes.demon.co.uk bryce at kampjes.demon.co.uk
Thu Apr 19 21:16:44 UTC 2007


Guillermo Adrián Molina writes:
 > Hi list, I been playing around with exupery. And now I have a few questions:
 > 
 > 1) I cant get tinyBenchmarks working, neither in linux, nor in windows,
 > 
 > Downloaded all the staff from:
 > http://wiki.squeak.org/squeak/Installing+Exupery
 > 
 > used: http://ftp.squeak.org/Exupery/vms/exupery-vm-0.11-linux.tz in linux
 > and: http://ftp.squeak.org/Exupery/vms/exupery-vm-0.11-win32.zip in windows
 > 
 > with prebuild image: http://ftp.squeak.org/Exupery/images/exupery-0.10.tz
 > 
 > Examples run ok, but when I try to run tinyBenchmarks I get segmentation
 > faults

Try using the 0.11 Exupery VM with Exupery 0.11. Exupery VMs must
match the Exupery version. The interface between Exupery and the VM is
still evolving.

 > 2) Tried tinyBenchmarks in VisualWorks (NonCommercial 7.4.1) in my
 > machine, I got:
 > '652,229,299 bytecodes/sec; 89,016,165 sends/sec'
 > 
 > Does anyone know Why I get almost 90 million sends/sec?
 > I think It's quite a big difference from previous versions of vw
 > 
 > 3) I saw that primitives for #at: and #at:put: are getting inlined, but I
 > think they are only implemented for Variable Objects (not for bytes nor
 > Characters nor anything else)
 > Is that true?

It's true. #at: and #at:put: are only implemented for variable
objects. I should write primitives for other types. Good benchmarks
that demonstrate the need for such primitives would be nice.

 > 4) In my experiments with exupery, I get an error if I inline too many
 > methods. I think I am getting out of machine registers, for example, when
 > I try to compile Integer-#digitDiv:reg:.
 > I get this error In the ColouringRegisterAllocator phase, but it is not a
 > "You dont have more registers, dude" kind of error.
 > Is the "no more registers" situation taken into consideration?

I'd guess that it was because a variable was live at an entry point.
There's a stack tracing bug which I'm just fixing that could have
caused that.

I use the liveness analyser in the register allocator to catch
compiler bugs. It's much nicer to catch them there than with crashes.

 > 5) Is there a way to implement indirect jump tables in exupery?

It would be possible. I do use indirect jumps for returns to compiled
methods. If you look at any method you should see at least one
indirect jump in the return code. Just jump to a register.

Bryce


More information about the Exupery mailing list