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