I've now committed the new (internal) calling scheme. On the surface nothing has changed, at least, if the code obeys to the rules in docs/pdds/pdd03_calling_conventions.pod.

If you are using PIR code and the function call directives all will still work. PASM code or handcrafted calls have to take care to setup I0..I4 accordingly. If these registers don't indicate function arguments or return values, the other end will not see the passed values.

Some additional notes:
* t/library/streams_11 produces now a different result, I don't know which one is correct and why there is a difference
* t/library/dumper.* seems to be broken WRT pdd03, it's disabled
* t/op/gc_13 (Piers' backtracking example) needed the cloning of the 2nd C<choose> closure. I hope that this is correct, but as these closures are holding different state, it should be.


* all prederefed run cores (Prederef, CGP, Switch) are currently broken because they are still using absolute register addresses.
* all JIT platforms except ppc and i386 are broken



Takers wanted for JIT fixes. See jit/ppc/* for necessary changes.

leo



Reply via email to