On Wednesday 13 November 2002 11:48, Leopold Toetsch wrote: > Daniel Grunblatt wrote: > > On Wednesday 13 November 2002 08:06, Leopold Toetsch wrote: > >>I could localize a long outstanding bug in JIT causing 4 perl6 tests to > >>fail. > > > > I wonder who was the #%$# that introduced that bug ..... D'OH! :) > > Wow, Daniel, the lost son himself ;-) > :) : > So I immediately have a question (or some): > > I'm currently studying jit.c and I'm wondering, it it wouldn't be better > to allocate registers for a whole basic block, and only store/load the > used registers for non JITed sections when necessary. These normally > don't have a lot of IRegs, so we could save a bunch of store/load's.
Oh yes, the optimizer doesn't do any cross section analisis yet, I'll fix that. see: http://groups.google.com/groups?selm=20020805215944.GB301%40Bagpuss.unfortu.n et > And 2), when doing this, I would change > > char intval_map[INT_REGISTERS_TO_MAP] = > { emit_EDI, emit_EBX, emit_EDX, emit_ECX }; > > to use callee saved regs first (ebx, edi, esi), and then (edx, ecx), > which would mean, that the first 3 registers wouldn't be globbered by > external functions. The current usage of esi could be done by ebp, I > think. This would need some defines, how many/which registers are callee > saved (like CALL_USED_REGISTERS in gcc/config/*). > > What do you think of this? Good idea. Daniel Grunblatt. > leo