ir_reader: Remove s_list::length() method.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 31 Dec 2010 09:48:02 +0000 (01:48 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 13 Jan 2011 07:55:33 +0000 (23:55 -0800)
Most code now relies on the pattern matcher rather than this function,
and for the only remaining case, not using this saves an iteration.

src/glsl/ir_reader.cpp
src/glsl/s_expression.cpp
src/glsl/s_expression.h

index 00146d8c15e569c3f8e917d4b0ae6bfd1bcb43ff..98906c4ad7319323058345872ab0d5dffe39cf8e 100644 (file)
@@ -754,13 +754,7 @@ read_constant(_mesa_glsl_parse_state *st, s_list *list)
    }
 
    if (type->is_array()) {
-      const unsigned elements_supplied = values->length();
-      if (elements_supplied != type->length) {
-        ir_read_error(st, values, "expected exactly %u array elements, "
-                      "given %u", type->length, elements_supplied);
-        return NULL;
-      }
-
+      unsigned elements_supplied = 0;
       exec_list elements;
       foreach_iter(exec_list_iterator, it, values->subexpressions) {
         s_expression *expr = (s_expression *) it.get();
@@ -774,6 +768,13 @@ read_constant(_mesa_glsl_parse_state *st, s_list *list)
         if (ir_elt == NULL)
            return NULL;
         elements.push_tail(ir_elt);
+        elements_supplied++;
+      }
+
+      if (elements_supplied != type->length) {
+        ir_read_error(st, values, "expected exactly %u array elements, "
+                      "given %u", type->length, elements_supplied);
+        return NULL;
       }
       return new(ctx) ir_constant(type, &elements);
    }
index a00bfa73ed164162971670b5da72d52417a06a73..852a049d43fd31bafa16720b2802c0f6579145fc 100644 (file)
@@ -38,16 +38,6 @@ s_list::s_list()
 {
 }
 
-unsigned
-s_list::length() const
-{
-   unsigned i = 0;
-   foreach_iter(exec_list_iterator, it, this->subexpressions) {
-      i++;
-   }
-   return i;
-}
-
 static s_expression *
 read_atom(void *ctx, const char *& src)
 {
index c444ba4338dc355b74a8baa78c2b8cf2b29f1b65..795f3fccea78a4f0b7b416add8061a5fc0dbc3d6 100644 (file)
@@ -139,7 +139,6 @@ public:
    s_list();
 
    virtual bool is_list() const { return true; }
-   unsigned length() const;
 
    void print();