Some questions

Guillermo Adrián Molina guille at losmolina.com.ar
Thu Apr 26 12:00:56 UTC 2007


Hi there!
Thanks for the answers, found them very useful
I have a few more questions

> 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.
>

Ok!, tried that, it worked:
668407310 bytecodes/sec; 13559830 sends/sec
760772659 bytecodes/sec; 13803237 sends/sec
777524677 bytecodes/sec; 12762744 sends/sec
760772659 bytecodes/sec; 13834279 sends/sec
775757575 bytecodes/sec; 13569800 sends/sec
I read something about intel being faster than AMD for exupery, Do you
know why is that?


>  > 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.
>
I 'll try to check that, thanks

>  > 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.
>

Yes I've seen those kind of errors (variable live at entry point),
corrected them initializing temps with nil.
I think this is something different. In this method of the
ColouringRegisterAllocator:

findNodeToSpill
	| spillable |
	"This is just a basic heuristic, spill the register that interferes with
the most
	other registers. It is possible to do a lot better.
	The heuristic should concider how much each register is used while it is
alive"
	spillable := spillWorklist select:
		[:each | ((self hasSpill: each register) not) and: [each register
isMachineRegister not]].
	spillable := spillable asSortedCollection: [:a :b| a spillWeight > b
spillWeight].
	^ spillable first

After compiling lots of methods using exupery, it fails with very big
methods because spillable is nil, and spillable first throws an error. If
I make less inlining (for example, not inlining divisions and
multiplications), it compiles ok!
Any ideas?

>  > 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.
>
Yes, I checked that, but I still need to initialize that register with the
convenient block, but I need to do that without using Jcc (conditional
jumps) to choose from the right one, Any suggestions?


> Bryce
> _______________________________________________
> Exupery mailing list
> Exupery at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/exupery
>

Thanks a lot
cheers, Guille



More information about the Exupery mailing list