emacs-devel
[Top][All Lists]
Advanced

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

Re: pure-fns in byte-opt.el


From: Mark Oteiza
Subject: Re: pure-fns in byte-opt.el
Date: Sat, 29 Jul 2017 12:34:46 -0400
User-agent: Mutt/1.8.3 (2017-05-23)

On 29/07/17 at 10:24am, Eli Zaretskii wrote:
Date: Fri, 28 Jul 2017 21:24:07 -0400
From: Mark Oteiza <address@hidden>
Cc: address@hidden

>> #3  0x000000000060f09b in Ffuncall (nargs=4, args=0x7fffffffb688) at 
eval.c:2742
>>         fun = XIL(0x17aee65)
>>         original_fun = XIL(0x20b0da0)
>>         funcar = XIL(0xce8cc0)
>>         numargs = 3
>>         val = make_number(897379714801469509)
>>         count = 58
>
>In this frame #3, what are the values of the important variables?
>
>  (gdb) frame 3
>  (gdb) pp original_fun

unidata-gen-table-word-list

>  (gdb) pp args[1]
>  (gdb) pp args[2]
>  (gdb) pp args[3]

decomposition
5
unidata-split-decomposition

>  (gdb) pp funcar
>  (gdb) pp fun

#<INVALID_LISP_OBJECT 0x00ce8cc0>

Thanks.

So I think the problem happens in unidata-word-list-compress, and it
happens because make-vector, which that function calls always returns
the same vector, so the vectors used by that function and created by
it are all messed up.

I don't follow: why does it always return the same vector?  That
particular call to make-vector should be unaffected by make-vector being
marked pure, because its arguments aren't constants.  OTOH, the form
(make-vector 128 nil) would indeed get byte-compiled into the constant
[nil nil … nil]



reply via email to

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