Leo~ Thanks for the detailed explanation.
On Tue, 19 Oct 2004 10:50:22 +0200, Leopold Toetsch <[EMAIL PROTECTED]> wrote: > Until around Parrot 0.0.3 there were chunked stacks *with* an > indirection for the register frame pointers. During development of the > JIT system these indirections got dropped to be able to use absolute > addresses for registers in JIT code and for about 3% of more > performance. > > To support continuations the chunks were first copied then COWed, and > later replaced by the single frame stack, we now have. > > What I want to achieve is to find the best combination of all these > variations. That is: > > - again one indirection for register access. The cost is near zero > because almost all JIT subsystems are already using register indirect > addressing. > - but only one frame stack, not 4 to be able to have the frame pointer > in a CPU register > - no COW copying of frames because that is expensive too. Instead the > register chunks are compacted occassionally during GC. Could we have the chunks only hold one frame and avoid much of the compaction work? If we return to the inderict access mechanism, we can switch register frames by changing one pointer. But if we keep the one frame per chunk, we do not need to compact frames, standard DOD/GC will be able to reclaim frames. I recall there being efficiency issues with frames being frequently allocated/deallocated too frequently, so we could have a special free list for frames. This proposal feels to me like a slightly simpler version of yours. Thus I would argue for it on the grounds of do the simple thing first and compare its efficiency. Matt -- "Computer Science is merely the post-Turing Decline of Formal Systems Theory." -???