emacs-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] src/comp.c: Use constructor expressions when possible.


From: Andrea Corallo
Subject: Re: [PATCH] src/comp.c: Use constructor expressions when possible.
Date: Sat, 15 Oct 2022 15:59:08 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

Vibhav Pant <vibhavp@gmail.com> writes:

> On Fri, 2022-10-14 at 23:35 +0000, Andrea Corallo wrote:
>> thanks for the patch, could you show how the generated pseudo C code
>> generated with native-comp-debug = 2 changes with this patch for the
>> impacted cases.
>
> Hi Andrea,
>
> I've attached the generated psuedo C code from compiling lisp/abbrel.el
> on an Emacs build compiled with "--with-native-compilation=yes --
> enable-chech-lisp-object-type". For the change made to `emit_coerce',
> an example of the newly generated code can be seen in the function
> `add1', line 2359:
>
>    return (struct Lisp_Object) {.i=(struct Lisp_X *)...};
>
> This would have earlier consisted of a new local variable being
> declared, and then have `i' set to the Lisp_X value in the next line.
>
> For `emit_limple_call_ref', any function that uses a `call_arr'
> variable is initializes it in one go in one line. From line 2565:
>
>    call_arr_4 = (struct Lisp_Object[6]) {d_reloc[(long long)5], (struct
>    Lisp_Object) {.i=(struct Lisp_X *)0xe}, (struct Lisp_Object)
>    {.i=(struct Lisp_X *)0x6}, (struct Lisp_Object) {.i=(struct Lisp_X
>    *)0xa}, (struct Lisp_Object) {.i=(struct Lisp_X *)0x6}, slot_10};
>    
>     /* calling subr: funcall */
>     slot_5 = freloc->R66756e63616c6c_funcall_0 ((long long)6,
>    (&call_arr_4[(long long)0]));
>
> IIUC, this would earlier have been a rather long ordeal, with every
> array element that's a Lisp_Object having its own variable created
> first, before being assigned to its respective array index :)

Hi Vibhav,

could you please produce the same without your patch an report it here?
Also, do you see any difference in geenrated asm code?

Thanks

  Andrea



reply via email to

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