[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