guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Attempting to unbox struct fields


From: Mark H Weaver
Subject: Re: Attempting to unbox struct fields
Date: Sun, 28 Feb 2016 22:56:14 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.91 (gnu/linux)

Hi David,

"Thompson, David" <address@hidden> writes:
> Here's a patch I came up with to enable (and fix where necessary) the
> support for signed integer and double struct fields.

Great, thanks for working on it!  This is not a proper review, just a
couple of questions and comments.

> Am I on the right track here?

The first thing I noticed is that the patch assumes that doubles are the
same size as pointers.  Obviously this is not the case on 32-bit
systems.  What's the plan for those systems?

The patch also currently assumes that longs and pointers are the same
size, and this turns out to be false on LLP64 systems such as 64-bit
Windows.  See <https://debbugs.gnu.org/22406>.  However, it should be
straightforward to fix this issue.

> +           if ((prot != 'r' && prot != 'w') || inits_idx == n_inits)
> +             *mem = 0.0;

Note that 'mem' is of type scm_t_bits*, so the 0.0 will be converted to
the integer 0 and then stored as an integer, which I guess is not what
you meant.  Note that in practice this works on IEEE 754 systems, where
0.0 is represented as all zero bits, but the code is somewhat misleading
and less portable than it could be.

     Thanks,
       Mark



reply via email to

[Prev in Thread] Current Thread [Next in Thread]