[vlc-devel] [PATCH] modules: use 16-bit ints for option counts

Thomas Guillem thomas at gllm.fr
Mon Sep 28 10:50:20 CEST 2020


I agree with Remi and Alex. 

On Mon, Sep 28, 2020, at 09:07, Alexandre Janniaux wrote:
> Hi,
> 
> In addition to Rémi's argument, I'll add that saving 16 bytes
> for a hundred plugins by adding more core to handle errors,
> while we are usually allocating more frames than needed is a
> micro optimization bringing complexity more than anything,
> which is quite different from a «free» save of space.
> 
> Regards,
> --
> Alexandre Janniaux
> Videolabs
> 
> On Sat, Sep 26, 2020 at 10:41:23PM +0100, Lyndon Brown wrote:
> > attached. preview:
> >
> > From: Lyndon Brown <jnqnfe at gmail.com>
> > Date: Wed, 10 Apr 2019 03:48:17 +0100
> > Subject: modules: use 16-bit ints for option counts
> >
> > nothings is going to need more than UINT16_MAX options, let's be sensible
> > and save the space. note, i may have instead used 8-bit ints, but that's
> > way too small for the core set.
> >
> > added an assert on size when adding modules in entry.c to be safe though.
> >
> > on 64-bit this saves 16 bytes per plugin (of which there are typically
> > hundreds). i.e. we cut the storage space for this plugin conf data to half
> > of what it currently is.
> >
> > diff --git a/src/modules/entry.c b/src/modules/entry.c
> > index fc7f3cdbb6..cb06085b9c 100644
> > --- a/src/modules/entry.c
> > +++ b/src/modules/entry.c
> > @@ -142,6 +142,8 @@ static module_config_t *vlc_config_create(vlc_plugin_t *plugin, int type)
> >      unsigned confsize = plugin->conf.size;
> >      module_config_t *tab = plugin->conf.items;
> >
> > +    assert(confsize < UINT16_MAX);
> > +
> >      if ((confsize & 0xf) == 0)
> >      {
> >          tab = realloc_or_free (tab, (confsize + 17) * sizeof (*tab));
> > diff --git a/src/modules/modules.h b/src/modules/modules.h
> > index 93cc1ca289..752b138c84 100644
> > --- a/src/modules/modules.h
> > +++ b/src/modules/modules.h
> > @@ -40,9 +40,9 @@ typedef struct vlc_plugin_t
> >      struct
> >      {
> >          module_config_t *items; /**< Table of configuration items */
> > -        size_t size; /**< Total count of all items */
> > -        size_t count; /**< Count of real options (excludes hints) */
> > -        size_t booleans; /**< Count of options that are of boolean type */
> > +        uint16_t size; /**< Total count of all items */
> > +        uint16_t count; /**< Count of real options (excludes hints) */
> > +        uint16_t booleans; /**< Count of options that are of boolean type */
> >      } conf;
> >
> >  #ifdef HAVE_DYNAMIC_PLUGINS
> 
> 
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list