[Mesa-dev] [PATCH 1/2] mesa/program: Add _mesa_symbol_table_replace_symbol()
Timothy Arceri
timothy.arceri at collabora.com
Fri Oct 21 05:54:06 UTC 2016
On Fri, 2016-10-21 at 15:06 +1100, Timothy Arceri wrote:
> On Thu, 2016-10-20 at 12:39 +0200, Samuel Iglesias Gonsálvez wrote:
> >
> > This function allows to modify an existing symbol.
> >
> > Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> > ---
> > src/mesa/program/symbol_table.c | 35
> > +++++++++++++++++++++++++++++++++++
> > src/mesa/program/symbol_table.h | 3 +++
> > 2 files changed, 38 insertions(+)
> >
> > diff --git a/src/mesa/program/symbol_table.c
> > b/src/mesa/program/symbol_table.c
> > index 3e58432..4f6ccf4 100644
> > --- a/src/mesa/program/symbol_table.c
> > +++ b/src/mesa/program/symbol_table.c
> > @@ -313,6 +313,41 @@ _mesa_symbol_table_add_symbol(struct
> > _mesa_symbol_table *table,
> > return 0;
> > }
> >
> > +int
> > +_mesa_symbol_table_replace_symbol(struct _mesa_symbol_table
> > *table,
> > + int name_space, const char
> > *name,
> > + void *declaration)
> > +{
> > + struct symbol_header *hdr;
> > + struct symbol *tmp;
> > + struct symbol *sym = NULL;
>
> There is no longer a need to declare these at the top of the function
> in core mesa as everyone is using C99ish compilers these days.
>
> >
> > +
> > + check_symbol_table(table);
> > +
> > + hdr = find_symbol(table, name);
> > +
> > + check_symbol_table(table);
> > +
> > + if (hdr == NULL)
> > + return -1;
> > +
> > + /* If the symbol doesn't exist in this namespace at this
> > scope,
> > it cannot
> > + * be replaced.
> > + */
> > + for (tmp = hdr->symbols ; tmp != NULL ; tmp = tmp-
> > >
> > > next_with_same_name) {
I think we can just get rid of namespace support from the symbol table.
I'm running Jenkins on a patch for this now. I'll Cc you it everything
passes.
>
> Please remove the spaces before ;
>
> >
> > + if (tmp->name_space == name_space) {
> > + sym = tmp;
> > + break;
> > + }
> > + }
> > +
> > + if (sym == NULL)
> > + return -1;
> > +
> > + sym->data = declaration;
> > + check_symbol_table(table);
> > + return 0;
> > +}
> >
> > int
> > _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table
> > *table,
> > diff --git a/src/mesa/program/symbol_table.h
> > b/src/mesa/program/symbol_table.h
> > index 1027f47..33a5bab 100644
> > --- a/src/mesa/program/symbol_table.h
> > +++ b/src/mesa/program/symbol_table.h
> > @@ -32,6 +32,9 @@ extern void _mesa_symbol_table_pop_scope(struct
> > _mesa_symbol_table *table);
> > extern int _mesa_symbol_table_add_symbol(struct _mesa_symbol_table
> > *symtab,
> > int name_space, const char *name, void *declaration);
> >
> > +extern int _mesa_symbol_table_replace_symbol(struct
> > _mesa_symbol_table *table,
> > + int name_space, const char *name, void *declaration);
> > +
> > extern int _mesa_symbol_table_add_global_symbol(
> > struct _mesa_symbol_table *symtab, int name_space, const char
> > *name,
> > void *declaration);
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list