[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to add pseudo vector types
From: |
Eli Zaretskii |
Subject: |
Re: How to add pseudo vector types |
Date: |
Fri, 23 Jul 2021 22:10:28 +0300 |
> From: Yuan Fu <casouri@gmail.com>
> Date: Fri, 23 Jul 2021 09:25:17 -0400
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>,
> Clément Pit-Claudel <cpitclaudel@gmail.com>,
> emacs-devel@gnu.org
>
> > So what does TS do if it attempts to allocate more memory and that
> > fails? Regardless, we'd need some fallback strategy, because AFAIU
> > many people run with VM overcommit enabled, so the OOM killer will
> > just kill the Emacs process when it asks for too much memory.
>
> Abort, it seems:
>
> static inline void *ts_malloc_default(size_t size) {
> void *result = malloc(size);
> if (size > 0 && !result) {
> fprintf(stderr, "tree-sitter failed to allocate %zu bytes", size);
> exit(1);
> }
> return result;
> }
We must replace this function, if only because the MS-Windows build of
Emacs uses a custom malloc implementation. Does TS allow the client
to use its own malloc?
> >> Also, we don’t call change hooks in replace_range_2, why?
> >
> > Because it is called in a loop, one character at a time. The caller
> > of replace_range_2 calls these hooks for the entire region, once.
> >
> >> Should I update tree-sitter trees in that function, or should I not?
> >
> > The only caller is casify_region, so you could update there.
>
> casify_region doesn’t have access to byte positions.
You can compute them using CHAR_TO_BYTE.
> I’ll leave it as-is, recording change in replace_range_2, if you don’t object
> to it.
That'd be wasteful, I think. replace_range_2 is called one character
at a time.
- Re: How to add pseudo vector types, (continued)
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/22
- Re: How to add pseudo vector types, Óscar Fuentes, 2021/07/22
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/22
- Re: How to add pseudo vector types, Óscar Fuentes, 2021/07/22
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/23
- Re: How to add pseudo vector types, Stephen Leake, 2021/07/24
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/22
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/22
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/22
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/23
- Re: How to add pseudo vector types,
Eli Zaretskii <=
- Re: How to add pseudo vector types, Perry E. Metzger, 2021/07/23
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/24
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/23
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/24
- Re: How to add pseudo vector types, Stephen Leake, 2021/07/25
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/25
- Re: How to add pseudo vector types, Stephen Leake, 2021/07/26
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/26
- Re: How to add pseudo vector types, Yuan Fu, 2021/07/24
- Re: How to add pseudo vector types, Eli Zaretskii, 2021/07/24