poke-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] pkl: Fix bit-depth of negative numbers in print{i, l} insns


From: Jose E. Marchesi
Subject: Re: [PATCH] pkl: Fix bit-depth of negative numbers in print{i, l} insns
Date: Sat, 20 Feb 2021 01:27:19 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Hi Mohammad.


>       * pickles/dwarf-frame.pk (Dwarf_CIE): Fix constant.
> diff --git a/libpoke/pvm.jitter b/libpoke/pvm.jitter
> index c7e9668d..dba9307f 100644
> --- a/libpoke/pvm.jitter
> +++ b/libpoke/pvm.jitter
> @@ -430,6 +430,9 @@ late-header-c
>    {                                                                         \
>      TYPEC val = PVM_VAL_##TYPE (JITTER_UNDER_TOP_STACK ());                 \
>      char fmt[6];  /* %0NNd */                                               \
> +    uint32_t mask                                                           \
> +        = JITTER_ARGN0 == 32 ? (uint32_t)-1                                 \
> +                             : (((uint32_t)1 << JITTER_ARGN0) - 1);         \
>                                                                              \
>      fmt[0] = '%';                                                           \
>      fmt[1] = '0';                                                           \
> @@ -471,7 +474,7 @@ late-header-c
>        fmt[5] = '\0';                                                        \
>      }                                                                       \
>                                                                              \
> -    pk_printf (fmt, val);                                                   \
> +    pk_printf (fmt, (BASE) == 10 ? val : val & mask);                       \
>      JITTER_DROP_STACK ();                                                   \
>      JITTER_DROP_STACK ();                                                   \
>    } while (0)
> @@ -481,6 +484,9 @@ late-header-c
>    {                                                                         \
>      TYPEC val = PVM_VAL_##TYPE (JITTER_UNDER_TOP_STACK ());                 \
>      char fmt[7];  /* %0NNff */                                              \
> +    uint64_t mask                                                           \
> +        = JITTER_ARGN0 == 64 ? (uint64_t)-1                                 \
> +                             : (((uint64_t)1 << JITTER_ARGN0) - 1);         \
>                                                                              \
>      fmt[0] = '%';                                                           \
>      fmt[1] = '0';                                                           \
> @@ -517,7 +523,7 @@ late-header-c
>        fmt[6] = '\0';                                                        \
>      }                                                                       \
>                                                                              \
> -    pk_printf (fmt, val);                                                   \
> +    pk_printf (fmt, (BASE) == 10 ? val : val & mask);                       \
>      JITTER_DROP_STACK ();                                                   \
>      JITTER_DROP_STACK ();                                                   \
>    } while (0)

Very nice fix.  OK for master.
Thanks!



reply via email to

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