glsl: Make the symbol table's add_variable just use the variable's name.
authorEric Anholt <eric@anholt.net>
Fri, 5 Nov 2010 13:11:24 +0000 (06:11 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 30 Nov 2010 01:08:27 +0000 (17:08 -0800)
src/glsl/ast_to_hir.cpp
src/glsl/glsl_symbol_table.cpp
src/glsl/glsl_symbol_table.h
src/glsl/ir_reader.cpp
src/glsl/ir_variable.cpp
src/glsl/link_functions.cpp
src/glsl/linker.cpp

index 1f001273195cd5b80a938f79e6c76030c8e6aabc..fd9ed556806ec153ef54806f5e744d407c1c7bc5 100644 (file)
@@ -2253,7 +2253,7 @@ ast_declarator_list::hir(exec_list *instructions,
        *     after the initializer if present or immediately after the name
        *     being declared if not."
        */
-      if (!state->symbols->add_variable(var->name, var)) {
+      if (!state->symbols->add_variable(var)) {
         YYLTYPE loc = this->get_location();
         _mesa_glsl_error(&loc, state, "name `%s' already taken in the "
                          "current scope", decl->identifier);
@@ -2587,7 +2587,7 @@ ast_function_definition::hir(exec_list *instructions,
 
         _mesa_glsl_error(& loc, state, "parameter `%s' redeclared", var->name);
       } else {
-        state->symbols->add_variable(var->name, var);
+        state->symbols->add_variable(var);
       }
    }
 
index 3b384d875aefd3d139a62ab74245492511f728f3..fb22a17ce5855e1ffefd7154753ee16bd1329187 100644 (file)
@@ -81,12 +81,12 @@ bool glsl_symbol_table::name_declared_this_scope(const char *name)
    return _mesa_symbol_table_symbol_scope(table, -1, name) == 0;
 }
 
-bool glsl_symbol_table::add_variable(const char *name, ir_variable *v)
+bool glsl_symbol_table::add_variable(ir_variable *v)
 {
    if (this->language_version == 110) {
       /* In 1.10, functions and variables have separate namespaces. */
-      symbol_table_entry *existing = get_entry(name);
-      if (name_declared_this_scope(name)) {
+      symbol_table_entry *existing = get_entry(v->name);
+      if (name_declared_this_scope(v->name)) {
         /* If there's already an existing function (not a constructor!) in
          * the current scope, just update the existing entry to include 'v'.
          */
@@ -102,7 +102,7 @@ bool glsl_symbol_table::add_variable(const char *name, 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, name, entry);
+        int added = _mesa_symbol_table_add_symbol(table, -1, v->name, entry);
         assert(added == 0);
         (void)added;
         return true;
@@ -112,7 +112,7 @@ bool glsl_symbol_table::add_variable(const char *name, 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, name, entry) == 0;
+   return _mesa_symbol_table_add_symbol(table, -1, v->name, entry) == 0;
 }
 
 bool glsl_symbol_table::add_type(const char *name, const glsl_type *t)
index 883c301e32d92fda285d1a649833397f77133f28..329cd106b14fb25ea95977d2fcf419314a2f4b29 100644 (file)
@@ -97,7 +97,7 @@ public:
     * reduces the clarity of the intention of code that uses these methods.
     */
    /*@{*/
-   bool add_variable(const char *name, ir_variable *v);
+   bool add_variable(ir_variable *v);
    bool add_type(const char *name, const glsl_type *t);
    bool add_function(ir_function *f);
    /*@}*/
index 446776c691d8493291ea5c85eba360ee36d4b74d..5a718d3b7569199839519445ace4ff824a451169 100644 (file)
@@ -474,7 +474,7 @@ read_declaration(_mesa_glsl_parse_state *st, s_list *list)
    }
 
    // Add the variable to the symbol table
-   st->symbols->add_variable(var->name, var);
+   st->symbols->add_variable(var);
 
    return var;
 }
index 6b9b29458d082044f837743d8c36b6570cb09374..5b8281e16e35580425c1b5e4a6bf38013d33ee66 100644 (file)
@@ -59,7 +59,7 @@ add_variable(const char *name, enum ir_variable_mode mode, int slot,
     */
    instructions->push_tail(var);
 
-   symtab->add_variable(var->name, var);
+   symtab->add_variable(var);
    return var;
 }
 
index 78c8b48cf179c4060caa13c2a3cc91644eeaccb5..05930edb80e93241dda5509e4e4e7b41292a8e4c 100644 (file)
@@ -183,7 +183,7 @@ public:
             * it to the linked shader.
             */
            var = ir->var->clone(linked, NULL);
-           linked->symbols->add_variable(var->name, var);
+           linked->symbols->add_variable(var);
            linked->ir->push_head(var);
         }
 
index 7aa94064d6875b4f915d1f69f499ba501e08d25d..8d14c5afdff514c79f8bdff5a63a0cf508ca6bae 100644 (file)
@@ -412,7 +412,7 @@ cross_validate_globals(struct gl_shader_program *prog,
                     var->constant_value->clone(talloc_parent(existing), NULL);
            }
         } else
-           variables.add_variable(var->name, var);
+           variables.add_variable(var);
       }
    }
 
@@ -454,7 +454,7 @@ cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
       if ((var == NULL) || (var->mode != ir_var_out))
         continue;
 
-      parameters.add_variable(var->name, var);
+      parameters.add_variable(var);
    }
 
 
@@ -548,7 +548,7 @@ populate_symbol_table(gl_shader *sh)
       if ((func = inst->as_function()) != NULL) {
         sh->symbols->add_function(func);
       } else if ((var = inst->as_variable()) != NULL) {
-        sh->symbols->add_variable(var->name, var);
+        sh->symbols->add_variable(var);
       }
    }
 }
@@ -605,7 +605,7 @@ remap_variables(ir_instruction *inst, struct gl_shader *target,
         else {
            ir_variable *copy = ir->var->clone(this->target, NULL);
 
-           this->symbols->add_variable(copy->name, copy);
+           this->symbols->add_variable(copy);
            this->instructions->push_head(copy);
            ir->var = copy;
         }