emacs-devel
[Top][All Lists]
Advanced

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

Re: MPS: hash tables / obarrays


From: Andrea Corallo
Subject: Re: MPS: hash tables / obarrays
Date: Wed, 29 May 2024 12:52:08 -0400
User-agent: Gnus/5.13 (Gnus v5.13)

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Helmut Eller <eller.helmut@gmail.com> writes:
>
>> On Wed, May 29 2024, Gerd Möllmann wrote:
>>
>>> BTW, I've made another attempt to get a grip on the native build on
>>> arm64/macOS. No success. Strangely, when I built with -lmps instead of
>>> -lmps-debug that worked.
>>>
>>> Do you build with -lmps-debug?
>>
>> Yes, I always used the debug version.  Have you tried to the make the
>> entire rdstack and the prstack ambiguous roots?  Or perhaps there's
>> another simple way to rule out bugs with reading/printing?
>
> I've made the specbindings and bytecode stack ambiguous roots in their
> entirety with no effect whatsoever.
>
> The rd and pr stacks I've left alone because they don't really fit what
> little I could see. One example, native-compiled:
>
> (defun byte-compile-eval (form)
>   "Eval FORM and mark the functions defined therein.
> Each function's symbol gets added to `byte-compile-noruntime-functions'."
>   (let ((hist-orig load-history)
>       (hist-nil-orig current-load-list))
>     (prog1 (eval form lexical-binding)
>       (when (byte-compile-warning-enabled-p 'noruntime)
>       (let* ((hist-new
>               ;; Get new `current-load-list' for the locally defined funs.
>               (cons (butlast current-load-list
>                              (length hist-nil-orig))
>                     load-history)))
>
> Here length found that the first cons of the hist-nil-orig has been
> forwarded. And the C code generated for soeed 0 and 1 is almost
> identical. 0 works, 1 doesn't.

Hi Gerd,

in case you need you can decouple the optimizations we do un our
compiler from the GCC ones forcing the number you want in our call to
'gcc_jit_context_set_int_option' in comp.c.

That said if you see almost no differences in the pseudo C we ask GCC to
compile you've probably got already the answer.

Anyway IMO the big diff from -O0 -O1 here should be that values are not
constantly loaded and stored into the stack, this might indeed make a
difference on the GC.

  Andrea



reply via email to

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