[Mesa-dev] [PATCH] glsl/mesa: remove unused namespace support from the symbol table
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Mon Oct 24 07:58:19 UTC 2016
I have just minor comments. With those fixed and assuming no CI regressions:
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
On 21/10/16 23:07, Timothy Arceri wrote:
> Namespace support seems to have been unused for a very long time.
>
> Previously the hash table entry was never removed and the symbol name
> wasn't freed until the symbol table was destroyed.
>
> In theory this could reduced the number of times we need to copy a string
> as duplicate names are reused. However in practice there is likely only a
> limited number of symbols that are the same and this is likely to cause
> other less than optimal behavious such as the hash_table continuously
behaviour
> growing.
>
> Along with dropping namespace support this change removes entries from
> the hashtable as they become unused.
>
hash table
> Cc: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
> src/compiler/glsl/glsl_symbol_table.cpp | 18 +-
> src/compiler/glsl/ir_print_visitor.cpp | 4 +-
> src/mesa/program/program_lexer.l | 2 +-
> src/mesa/program/program_parse.y | 18 +-
> src/mesa/program/symbol_table.c | 336 ++++++++++----------------------
> src/mesa/program/symbol_table.h | 15 +-
> 6 files changed, 128 insertions(+), 265 deletions(-)
>
> diff --git a/src/compiler/glsl/glsl_symbol_table.cpp b/src/compiler/glsl/glsl_symbol_table.cpp
> index 6d7baad..3162bb6 100644
> --- a/src/compiler/glsl/glsl_symbol_table.cpp
> +++ b/src/compiler/glsl/glsl_symbol_table.cpp
> @@ -126,7 +126,7 @@ void glsl_symbol_table::pop_scope()
>
> bool glsl_symbol_table::name_declared_this_scope(const char *name)
> {
> - return _mesa_symbol_table_symbol_scope(table, -1, name) == 0;
> + return _mesa_symbol_table_symbol_scope(table, name) == 0;
> }
>
> bool glsl_symbol_table::add_variable(ir_variable *v)
> @@ -152,7 +152,7 @@ bool glsl_symbol_table::add_variable(ir_variable *v)
> symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(v);
> if (existing != NULL)
> entry->f = existing->f;
> - int added = _mesa_symbol_table_add_symbol(table, -1, v->name, entry);
> + int added = _mesa_symbol_table_add_symbol(table, v->name, entry);
> assert(added == 0);
> (void)added;
> return true;
> @@ -162,13 +162,13 @@ bool glsl_symbol_table::add_variable(ir_variable *v)
>
> /* 1.20+ rules: */
> symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(v);
> - return _mesa_symbol_table_add_symbol(table, -1, v->name, entry) == 0;
> + return _mesa_symbol_table_add_symbol(table, v->name, entry) == 0;
> }
>
> bool glsl_symbol_table::add_type(const char *name, const glsl_type *t)
> {
> symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(t);
> - return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
> + return _mesa_symbol_table_add_symbol(table, name, entry) == 0;
> }
>
> bool glsl_symbol_table::add_interface(const char *name, const glsl_type *i,
> @@ -180,7 +180,7 @@ bool glsl_symbol_table::add_interface(const char *name, const glsl_type *i,
> symbol_table_entry *entry =
> new(mem_ctx) symbol_table_entry(i, mode);
> bool add_interface_symbol_result =
> - _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
> + _mesa_symbol_table_add_symbol(table, name, entry) == 0;
> assert(add_interface_symbol_result);
> return add_interface_symbol_result;
> } else {
> @@ -199,7 +199,7 @@ bool glsl_symbol_table::add_function(ir_function *f)
> }
> }
> symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(f);
> - return _mesa_symbol_table_add_symbol(table, -1, f->name, entry) == 0;
> + return _mesa_symbol_table_add_symbol(table, f->name, entry) == 0;
> }
>
> bool glsl_symbol_table::add_default_precision_qualifier(const char *type_name,
> @@ -213,13 +213,13 @@ bool glsl_symbol_table::add_default_precision_qualifier(const char *type_name,
> symbol_table_entry *entry =
> new(mem_ctx) symbol_table_entry(default_specifier);
>
> - return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0;
> + return _mesa_symbol_table_add_symbol(table, name, entry) == 0;
> }
>
> void glsl_symbol_table::add_global_function(ir_function *f)
> {
> symbol_table_entry *entry = new(mem_ctx) symbol_table_entry(f);
> - int added = _mesa_symbol_table_add_global_symbol(table, -1, f->name, entry);
> + int added = _mesa_symbol_table_add_global_symbol(table, f->name, entry);
> assert(added == 0);
> (void)added;
> }
> @@ -261,7 +261,7 @@ int glsl_symbol_table::get_default_precision_qualifier(const char *type_name)
> symbol_table_entry *glsl_symbol_table::get_entry(const char *name)
> {
> return (symbol_table_entry *)
> - _mesa_symbol_table_find_symbol(table, -1, name);
> + _mesa_symbol_table_find_symbol(table, name);
> }
>
> void
> diff --git a/src/compiler/glsl/ir_print_visitor.cpp b/src/compiler/glsl/ir_print_visitor.cpp
> index cdbe184..703169e 100644
> --- a/src/compiler/glsl/ir_print_visitor.cpp
> +++ b/src/compiler/glsl/ir_print_visitor.cpp
> @@ -130,14 +130,14 @@ ir_print_visitor::unique_name(ir_variable *var)
>
> /* If there's no conflict, just use the original name */
> const char* name = NULL;
> - if (_mesa_symbol_table_find_symbol(this->symbols, -1, var->name) == NULL) {
> + if (_mesa_symbol_table_find_symbol(this->symbols, var->name) == NULL) {
> name = var->name;
> } else {
> static unsigned i = 1;
> name = ralloc_asprintf(this->mem_ctx, "%s@%u", var->name, ++i);
> }
> _mesa_hash_table_insert(this->printable_names, var, (void *) name);
> - _mesa_symbol_table_add_symbol(this->symbols, -1, name, var);
> + _mesa_symbol_table_add_symbol(this->symbols, name, var);
> return name;
> }
>
> diff --git a/src/mesa/program/program_lexer.l b/src/mesa/program/program_lexer.l
> index bb169b9..dee66cb 100644
> --- a/src/mesa/program/program_lexer.l
> +++ b/src/mesa/program/program_lexer.l
> @@ -123,7 +123,7 @@ handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)
> {
> lval->string = strdup(text);
>
> - return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL)
> + return (_mesa_symbol_table_find_symbol(state->st, text) == NULL)
> ? IDENTIFIER : USED_IDENTIFIER;
> }
>
> diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
> index fc8eed7..5294d58 100644
> --- a/src/mesa/program/program_parse.y
> +++ b/src/mesa/program/program_parse.y
> @@ -724,7 +724,7 @@ extSwizSel: INTEGER
> srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */
> {
> struct asm_symbol *const s = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $1);
> + _mesa_symbol_table_find_symbol(state->st, $1);
>
> free($1);
>
> @@ -812,7 +812,7 @@ dstReg: resultBinding
> | USED_IDENTIFIER /* temporaryReg | vertexResultReg */
> {
> struct asm_symbol *const s = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $1);
> + _mesa_symbol_table_find_symbol(state->st, $1);
>
> free($1);
>
> @@ -841,7 +841,7 @@ dstReg: resultBinding
> progParamArray: USED_IDENTIFIER
> {
> struct asm_symbol *const s = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $1);
> + _mesa_symbol_table_find_symbol(state->st, $1);
>
> free($1);
>
> @@ -914,7 +914,7 @@ addrRegNegOffset: INTEGER
> addrReg: USED_IDENTIFIER
> {
> struct asm_symbol *const s = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $1);
> + _mesa_symbol_table_find_symbol(state->st, $1);
>
> free($1);
>
> @@ -2028,9 +2028,9 @@ legacyTexUnitNum: INTEGER
> ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER
> {
> struct asm_symbol *exist = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $2);
> + _mesa_symbol_table_find_symbol(state->st, $2);
> struct asm_symbol *target = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, $4);
> + _mesa_symbol_table_find_symbol(state->st, $4);
>
> free($4);
>
> @@ -2046,7 +2046,7 @@ ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER
> "undefined variable binding in ALIAS statement");
> YYERROR;
> } else {
> - _mesa_symbol_table_add_symbol(state->st, 0, $2, target);
> + _mesa_symbol_table_add_symbol(state->st, $2, target);
> }
> }
> ;
> @@ -2235,7 +2235,7 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t,
> {
> struct asm_symbol *s = NULL;
> struct asm_symbol *exist = (struct asm_symbol *)
> - _mesa_symbol_table_find_symbol(state->st, 0, name);
> + _mesa_symbol_table_find_symbol(state->st, name);
>
>
> if (exist != NULL) {
> @@ -2273,7 +2273,7 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t,
> break;
> }
>
> - _mesa_symbol_table_add_symbol(state->st, 0, s->name, s);
> + _mesa_symbol_table_add_symbol(state->st, s->name, s);
> s->next = state->sym;
> state->sym = s;
> }
> diff --git a/src/mesa/program/symbol_table.c b/src/mesa/program/symbol_table.c
> index 3e58432..44f0b14 100644
> --- a/src/mesa/program/symbol_table.c
> +++ b/src/mesa/program/symbol_table.c
> @@ -26,6 +26,9 @@
> #include "../../util/hash_table.h"
>
> struct symbol {
> + /** Symbol name. */
> + char *name;
> +
This file has the indentation wrong but I don't think fixing it is worth
because git blame would hide the previous commit's changes.
> /**
> * Link to the next symbol in the table with the same name
> *
> @@ -34,7 +37,6 @@ struct symbol {
> */
> struct symbol *next_with_same_name;
>
> -
> /**
> * Link to the next symbol in the table with the same scope
> *
> @@ -43,21 +45,6 @@ struct symbol {
> */
> struct symbol *next_with_same_scope;
>
> -
> - /**
> - * Header information for the list of symbols with the same name.
> - */
> - struct symbol_header *hdr;
> -
> -
> - /**
> - * Name space of the symbol
> - *
> - * Name space are arbitrary user assigned integers. No two symbols can
> - * exist in the same name space at the same scope level.
> - */
> - int name_space;
> -
> /** Scope depth where this symbol was defined. */
> unsigned depth;
>
> @@ -69,20 +56,6 @@ struct symbol {
>
>
> /**
> - */
> -struct symbol_header {
> - /** Linkage in list of all headers in a given symbol table. */
> - struct symbol_header *next;
> -
> - /** Symbol name. */
> - char *name;
> -
> - /** Linked list of symbols with the same name. */
> - struct symbol *symbols;
> -};
> -
> -
> -/**
> * Element of the scope stack.
> */
> struct scope_level {
> @@ -104,41 +77,10 @@ struct _mesa_symbol_table {
> /** Top of scope stack. */
> struct scope_level *current_scope;
>
> - /** List of all symbol headers in the table. */
> - struct symbol_header *hdr;
> -
> /** Current scope depth. */
> unsigned depth;
> };
>
> -
> -static void
> -check_symbol_table(struct _mesa_symbol_table *table)
> -{
> -#if !defined(NDEBUG)
> - struct scope_level *scope;
> -
> - for (scope = table->current_scope; scope != NULL; scope = scope->next) {
> - struct symbol *sym;
> -
> - for (sym = scope->symbols
> - ; sym != NULL
> - ; sym = sym->next_with_same_name) {
> - const struct symbol_header *const hdr = sym->hdr;
> - struct symbol *sym2;
> -
> - for (sym2 = hdr->symbols
> - ; sym2 != NULL
> - ; sym2 = sym2->next_with_same_name) {
> - assert(sym2->hdr == hdr);
> - }
> - }
> - }
> -#else
> - (void) table;
> -#endif /* !defined(NDEBUG) */
> -}
> -
> void
> _mesa_symbol_table_pop_scope(struct _mesa_symbol_table *table)
> {
> @@ -152,18 +94,22 @@ _mesa_symbol_table_pop_scope(struct _mesa_symbol_table *table)
>
> while (sym != NULL) {
> struct symbol *const next = sym->next_with_same_scope;
> - struct symbol_header *const hdr = sym->hdr;
> -
> - assert(hdr->symbols == sym);
> -
> - hdr->symbols = sym->next_with_same_name;
> + struct hash_entry *hte = _mesa_hash_table_search(table->ht,
> + sym->name);
> + if (sym->next_with_same_name) {
> + /* If there is a symbol with this name in an outer scope update
> + * the hash table to point to it.
> + */
> + hte->key = sym->next_with_same_name->name;
> + hte->data = sym->next_with_same_name;
> + } else {
> + _mesa_hash_table_remove(table->ht, hte);
> + free(sym->name);
> + }
>
> free(sym);
> -
> sym = next;
> }
> -
> - check_symbol_table(table);
> }
>
>
> @@ -171,7 +117,6 @@ void
> _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table)
> {
> struct scope_level *const scope = calloc(1, sizeof(*scope));
> -
> if (scope == NULL) {
> _mesa_error_no_memory(__func__);
> return;
> @@ -183,11 +128,11 @@ _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table)
> }
>
>
> -static struct symbol_header *
> +static struct symbol *
> find_symbol(struct _mesa_symbol_table *table, const char *name)
> {
> struct hash_entry *entry = _mesa_hash_table_search(table->ht, name);
> - return entry ? (struct symbol_header *) entry->data : NULL;
> + return entry ? (struct symbol *) entry->data : NULL;
> }
>
>
> @@ -201,200 +146,126 @@ find_symbol(struct _mesa_symbol_table *table, const char *name)
> */
> int
> _mesa_symbol_table_symbol_scope(struct _mesa_symbol_table *table,
> - int name_space, const char *name)
> + const char *name)
> {
> - struct symbol_header *const hdr = find_symbol(table, name);
> - struct symbol *sym;
> -
> - if (hdr != NULL) {
> - for (sym = hdr->symbols; sym != NULL; sym = sym->next_with_same_name) {
> - assert(sym->hdr == hdr);
> -
> - if ((name_space == -1) || (sym->name_space == name_space)) {
> - assert(sym->depth <= table->depth);
> - return sym->depth - table->depth;
> - }
> - }
> - }
> + struct symbol *const sym = find_symbol(table, name);
> +
> + if (sym) {
> + return sym->depth - table->depth;
> + }
>
Keep the assert(sym->depth <= table->depth);
> - return -1;
> + return -1;
> }
>
>
> void *
> _mesa_symbol_table_find_symbol(struct _mesa_symbol_table *table,
> - int name_space, const char *name)
> + const char *name)
> {
> - struct symbol_header *const hdr = find_symbol(table, name);
> -
> - if (hdr != NULL) {
> - struct symbol *sym;
> -
> -
> - for (sym = hdr->symbols; sym != NULL; sym = sym->next_with_same_name) {
> - assert(sym->hdr == hdr);
> -
> - if ((name_space == -1) || (sym->name_space == name_space)) {
> - return sym->data;
> - }
> - }
> - }
> + struct symbol *const sym = find_symbol(table, name);
> + if (sym) {
> + return sym->data;
> + }
>
Remove brackets.
Thanks!
Sam
> - return NULL;
> + return NULL;
> }
>
>
> int
> _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
> - int name_space, const char *name,
> - void *declaration)
> + const char *name, void *declaration)
> {
> - struct symbol_header *hdr;
> - struct symbol *sym;
> -
> - check_symbol_table(table);
> -
> - hdr = find_symbol(table, name);
> -
> - check_symbol_table(table);
> -
> - if (hdr == NULL) {
> - hdr = calloc(1, sizeof(*hdr));
> - if (hdr == NULL) {
> - _mesa_error_no_memory(__func__);
> - return -1;
> - }
> -
> - hdr->name = strdup(name);
> - if (hdr->name == NULL) {
> - free(hdr);
> - _mesa_error_no_memory(__func__);
> - return -1;
> - }
> -
> - _mesa_hash_table_insert(table->ht, hdr->name, hdr);
> - hdr->next = table->hdr;
> - table->hdr = hdr;
> - }
> + struct symbol *new_sym;
> + struct symbol *sym = find_symbol(table, name);
>
> - check_symbol_table(table);
> + if (sym && sym->depth == table->depth)
> + return -1;
>
> - /* If the symbol already exists in this namespace at this scope, it cannot
> - * be added to the table.
> - */
> - for (sym = hdr->symbols
> - ; (sym != NULL) && (sym->name_space != name_space)
> - ; sym = sym->next_with_same_name) {
> - /* empty */
> - }
> -
> - if (sym && (sym->depth == table->depth))
> - return -1;
> + new_sym = calloc(1, sizeof(*sym));
> + if (new_sym == NULL) {
> + _mesa_error_no_memory(__func__);
> + return -1;
> + }
>
> - sym = calloc(1, sizeof(*sym));
> - if (sym == NULL) {
> - _mesa_error_no_memory(__func__);
> - return -1;
> - }
> + if (sym) {
> + /* Store link to symbol in outer scope with the same name */
> + new_sym->next_with_same_name = sym;
> + new_sym->name = sym->name;
> + } else {
> + new_sym->name = strdup(name);
> + if (new_sym->name == NULL) {
> + free(new_sym);
> + _mesa_error_no_memory(__func__);
> + return -1;
> + }
> + }
>
> - sym->next_with_same_name = hdr->symbols;
> - sym->next_with_same_scope = table->current_scope->symbols;
> - sym->hdr = hdr;
> - sym->name_space = name_space;
> - sym->data = declaration;
> - sym->depth = table->depth;
> + new_sym->next_with_same_scope = table->current_scope->symbols;
> + new_sym->data = declaration;
> + new_sym->depth = table->depth;
>
> - assert(sym->hdr == hdr);
> + table->current_scope->symbols = new_sym;
>
> - hdr->symbols = sym;
> - table->current_scope->symbols = sym;
> + _mesa_hash_table_insert(table->ht, new_sym->name, new_sym);
>
> - check_symbol_table(table);
> - return 0;
> + return 0;
> }
>
>
> int
> _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table,
> - int name_space, const char *name,
> - void *declaration)
> + const char *name, void *declaration)
> {
> - struct symbol_header *hdr;
> - struct symbol *sym;
> - struct symbol *curr;
> - struct scope_level *top_scope;
> -
> - check_symbol_table(table);
> -
> - hdr = find_symbol(table, name);
> + struct scope_level *top_scope;
> + struct symbol *inner_sym = NULL;
> + struct symbol *sym = find_symbol(table, name);
>
> - check_symbol_table(table);
> + while (sym) {
> + if (sym->depth == 0)
> + return -1;
>
> - if (hdr == NULL) {
> - hdr = calloc(1, sizeof(*hdr));
> - if (hdr == NULL) {
> - _mesa_error_no_memory(__func__);
> - return -1;
> - }
> -
> - hdr->name = strdup(name);
> -
> - _mesa_hash_table_insert(table->ht, hdr->name, hdr);
> - hdr->next = table->hdr;
> - table->hdr = hdr;
> - }
> -
> - check_symbol_table(table);
> + inner_sym = sym;
>
> - /* If the symbol already exists in this namespace at this scope, it cannot
> - * be added to the table.
> - */
> - for (sym = hdr->symbols
> - ; (sym != NULL) && (sym->name_space != name_space)
> - ; sym = sym->next_with_same_name) {
> - /* empty */
> - }
> + /* Get symbol from the outer scope with the same name */
> + sym = sym->next_with_same_name;
> + }
>
> - if (sym && sym->depth == 0)
> - return -1;
> + /* Find the top-level scope */
> + for (top_scope = table->current_scope; top_scope->next != NULL;
> + top_scope = top_scope->next) {
> + /* empty */
> + }
>
> - /* Find the top-level scope */
> - for (top_scope = table->current_scope
> - ; top_scope->next != NULL
> - ; top_scope = top_scope->next) {
> - /* empty */
> - }
> + sym = calloc(1, sizeof(*sym));
> + if (sym == NULL) {
> + _mesa_error_no_memory(__func__);
> + return -1;
> + }
>
> - sym = calloc(1, sizeof(*sym));
> - if (sym == NULL) {
> - _mesa_error_no_memory(__func__);
> - return -1;
> - }
> + if (inner_sym) {
> + /* In case we add the global out of order store a link to the global
> + * symbol in global.
> + */
> + inner_sym->next_with_same_name = sym;
> +
> + sym->name = inner_sym->name;
> + } else {
> + sym->name = strdup(name);
> + if (sym->name == NULL) {
> + free(sym);
> + _mesa_error_no_memory(__func__);
> + return -1;
> + }
> + }
>
> - sym->next_with_same_scope = top_scope->symbols;
> - sym->hdr = hdr;
> - sym->name_space = name_space;
> - sym->data = declaration;
> + sym->next_with_same_scope = top_scope->symbols;
> + sym->data = declaration;
>
> - assert(sym->hdr == hdr);
> + top_scope->symbols = sym;
>
> - /* Since next_with_same_name is ordered by scope, we need to append the
> - * new symbol to the _end_ of the list.
> - */
> - if (hdr->symbols == NULL) {
> - hdr->symbols = sym;
> - } else {
> - for (curr = hdr->symbols
> - ; curr->next_with_same_name != NULL
> - ; curr = curr->next_with_same_name) {
> - /* empty */
> - }
> - curr->next_with_same_name = sym;
> - }
> - top_scope->symbols = sym;
> + _mesa_hash_table_insert(table->ht, sym->name, sym);
>
> - check_symbol_table(table);
> - return 0;
> + return 0;
> }
>
>
> @@ -418,19 +289,10 @@ _mesa_symbol_table_ctor(void)
> void
> _mesa_symbol_table_dtor(struct _mesa_symbol_table *table)
> {
> - struct symbol_header *hdr;
> - struct symbol_header *next;
> -
> while (table->current_scope != NULL) {
> _mesa_symbol_table_pop_scope(table);
> }
>
> - for (hdr = table->hdr; hdr != NULL; hdr = next) {
> - next = hdr->next;
> - free(hdr->name);
> - free(hdr);
> - }
> -
> _mesa_hash_table_destroy(table->ht, NULL);
> free(table);
> }
> diff --git a/src/mesa/program/symbol_table.h b/src/mesa/program/symbol_table.h
> index 1027f47..ff1e6f2 100644
> --- a/src/mesa/program/symbol_table.h
> +++ b/src/mesa/program/symbol_table.h
> @@ -30,17 +30,18 @@ extern void _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table);
> 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);
> + 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);
> +extern int
> +_mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *symtab,
> + const char *name,
> + void *declaration);
>
> extern int _mesa_symbol_table_symbol_scope(struct _mesa_symbol_table *table,
> - int name_space, const char *name);
> + const char *name);
>
> -extern void *_mesa_symbol_table_find_symbol(
> - struct _mesa_symbol_table *symtab, int name_space, const char *name);
> +extern void *_mesa_symbol_table_find_symbol(struct _mesa_symbol_table *symtab,
> + const char *name);
>
> extern struct _mesa_symbol_table *_mesa_symbol_table_ctor(void);
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161024/fc13744f/attachment.sig>
More information about the mesa-dev
mailing list