Dan Sugalski wrote:
At 11:13 AM +0200 10/28/04, Leopold Toetsch wrote:
1) use frame pointer relative addressing: + prederefed code is usable by different threads too - ~4 times increase in code size of core_ops_*.{c,o} [1]
I've now committed this case 1) as a fix for prederefed run cores. It's unoptimized currently. make fulltest is passing again here.
Or 3) Toss the prederef stuff entirely.
Well, the prederefed function core (parrot -P) is for sure not necessary.
Patches welcome to remove the plain prederefed function core F<ops/core_ops_prederef.*>. F<lib/Parrot/OpTrans/CPrederef.pm> is still needed as an abstract base class of CGP.pm and CSwitch.pm but can be cleanued up too.
I still like to keep CGP and CSwitch run cores. The latter as the safe run core with argument checking and as a fallback, if CGOTO isn't available on that platform. The former as an extension for JIT to run non-JITted opcodes. Similar to the current JIT_CGP stuff on i386, but in a more general way:
For a sequence of non-JITted opcodes: create a copy of the byte-code of these non-JITted opcodes and append one opcode that returns to JIT. Then fill it with the CORE_ops_prederef__ opcode. Generate code to call this piece of code via cgp_core().
leo