[Mono-list] Remaining S/390 JIT issues

Neale.Ferguson@SoftwareAG-USA.com Neale.Ferguson@SoftwareAG-USA.com
Tue, 13 Jul 2004 11:22:46 -0400


Hi,
 I am now passing all but two of the regression tests using my JIT port. =
One is strange that I haven't fully diagnosed with appdomain-unload (the =
page containing one of the compiled methods seems to get freed); the =
other is relates to single floating point numbers.

The way I handle single floats is:
1. When loaded from storage I immediately convert them to double so that =
all operations work correctly
2. Before storing back to memory I convert them from double to single =
and then store
3. When passing in a call I convert from double to single
4. When coming back from a function call I convert from single to double

This appears to work most of the time, but sometimes I get sequences =
like:

(stind.r4 (add (ldind.ref regoffset[0xd0(s390_r11)]) iconst[8]) =
(float_conv_to_r4 (ldind.r8 regoffset[0xc8(s390_r11)])))

In this instance float_conv_to_r4 will convert from double to single and =
then stind.4 will try to convert from double to single as well: =
resulting in junk. How do other architectures handle single floats?=20

BTW, on 2.4 systems the thread-related tests sometimes work and =
sometimes don't. On 2.6 things work all the time.

Neale Ferguson=20

P.S. My notes to the list appear to go via a moderator and are not being =
posted directly.