I was going to as I was going to push some other s390x specific enhancements 
but it appears I've been preempted. I'm going to look at some of the other 
areas identified in that PR. S390x has hardware support for decimal arithmetic.

Thanks for your help in keeping me on the right path when I'd convinced myself 
that I saw things that weren't there.


-------- Original message --------
From: Zoltan Varga <var...@gmail.com>
Date: 8/17/17 20:25 (GMT-05:00)
To: Neale Ferguson <ne...@sinenomine.net>
Cc: Aleksey Kliger <alk...@microsoft.com>, Mono-Devel 
<mono-devel-l...@lists.ximian.com>
Subject: Re: [Mono-dev] Unwanted freeing of generic types

Hi,

  Nine catch, could you submit a PR with the fix ?

            Zoltan

On Thu, Aug 17, 2017 at 4:54 PM, Neale Ferguson 
<ne...@sinenomine.net<mailto:ne...@sinenomine.net>> wrote:

In threads.c we defined SpecialStaticOffset:


typedef union {

        struct {

#if G_BYTE_ORDER != G_LITTLE_ENDIAN

                guint32 type : 1;

                guint32 offset : 25;

                guint32 index : 6;

#else

                guint32 index : 6;

                guint32 offset : 25;

                guint32 type : 1;

#endif

        } fields;

        guint32 raw;

} SpecialStaticOffset;


However, the MAKE_SPECIAL_STATIC_OFFSET macro assumes little endian:


#define MAKE_SPECIAL_STATIC_OFFSET(index, offset, type) \

        ((SpecialStaticOffset) { .fields = { (type), (offset), (index) } }.raw)


Therefore the offset value that was being returned was incorrect and we'd 
choose the wrong bitset. To fix this:


#if G_BYTE_ORDER != G_LITTLE_ENDIAN

#define MAKE_SPECIAL_STATIC_OFFSET(index, offset, type) \

        ((SpecialStaticOffset) { .fields = { (type), (offset), (index) } }.raw)

#else

#define MAKE_SPECIAL_STATIC_OFFSET(index, offset, type) \

        ((SpecialStaticOffset) { .fields = { (index), (offset), (type) } }.raw)

#endif


Making this change results in the failing (crashing) test - generics-special2.2 
- to work as it should.


Neale

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.dot.net<mailto:Mono-devel-list@lists.dot.net>
http://lists.dot.net/mailman/listinfo/mono-devel-list


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.dot.net
http://lists.dot.net/mailman/listinfo/mono-devel-list

Reply via email to