[Mono-dev] Global register allocator in JIT
Sergey Tikhonov
tsv at solvo.ru
Wed Oct 11 05:44:17 EDT 2006
Zoltan Varga wrote:
> Hi,
>
> This is perfectly normal, the current burg phase sometimes introduces
> such
> extra moves. What is the C#/IL from which this was generated ?
Actually, I found the problem. It is common (inssel.brg) that defines
reg: CEE_LDIND_REF_REF(OP_REGVAL),
reg: CEE_LDIND_I (OP_REGVAL),
reg: CEE_LDIND_I4(OP_REGVAL),
reg: CEE_LDIND_U4(OP_REGVAL) {
MONO_EMIT_UNALU(.... OP_MOVE ...)
}
I checked ia64 version and it overrides those insts. The resulted code
became better - now global regs are used as source ones.
Next step is to use global regs as dest (now it puts result of operation
into a local reg and then copy it into the global).
The code I am trying to get an optimized version is System_String_memcpy
method.
Thank you,
PS. I got all pinvoke calls working (managed->native, native->managed). :)
--
Sergey Tikhonov
Solvo Ltd.
Saint-Petersburg, Russia
tsv at solvo.ru
More information about the Mono-devel-list
mailing list