bug return long/doubel is fixed!

Hi,
i have found a patch for this bug, but not the bug! grrr Eye-wink
lreturn/dreturn use two register T0(EAX) and T1(EDX), EDX is corrupted! I have not found what overwrite the registre (jmp address ?) i don't no.

We need juste use an others registre, i have tested with S1, it is ok.

The patch are aviable in next one/two day.

Fix is in CVS!

I've fixed the l1 compiler with respect to synchronized long/double methods.
I've been able to reproduce the bug with a synchronized method and fixed the compiler for it.

Thanks for those finding the problem. Great work!

Ewout

can comme from monitor.exit?

now i thinks edx can be corrupted by some asm method use for synchonize (monitor.exit).

; protected static native boolean atomicAnd(Address address, int value)
Q43org5jnode2vm6Unsafe23atomicAnd2e28Lorg2fjnode2fvm2fAddress3bI29Z:
mov ecx,[esp+4] ; value
mov edx,[esp+8] ; address
lock and dword [edx], ecx
ret 8

; protected static native boolean atomicSub(Address address, int value)
Q43org5jnode2vm6Unsafe23atomicSub2e28Lorg2fjnode2fvm2fAddress3bI29Z:
mov ecx,[esp+4] ; value
mov edx,[esp+8] ; address
lock sub dword [edx], ecx
ret 8

Yves