Move the talloc_parent lookup down in a few hot paths.
authorEric Anholt <eric@anholt.net>
Thu, 24 Jun 2010 22:18:39 +0000 (15:18 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 24 Jun 2010 22:18:39 +0000 (15:18 -0700)
talloc_parent is still 80% of our runtime, but likely talloc_parent
lookups will be reduced as we improve the handling of memory
ownership.

ir_constant_expression.cpp
ir_dead_code.cpp
ir_vec_index_to_swizzle.cpp

index 4010e4626745665a05040c93272072ed3201a7f6..3408f5256a772ae707a8159daad773039cf6bfb3 100644 (file)
@@ -127,7 +127,6 @@ ir_constant_visitor::visit(ir_function *ir)
 void
 ir_constant_visitor::visit(ir_expression *ir)
 {
-   void *ctx = talloc_parent(ir);
    value = NULL;
    ir_constant *op[2];
    unsigned int operand, c;
@@ -498,6 +497,7 @@ ir_constant_visitor::visit(ir_expression *ir)
       return;
    }
 
+   void *ctx = talloc_parent(ir);
    this->value = new(ctx) ir_constant(ir->type, &data);
 }
 
@@ -514,7 +514,6 @@ ir_constant_visitor::visit(ir_texture *ir)
 void
 ir_constant_visitor::visit(ir_swizzle *ir)
 {
-   void *ctx = talloc_parent(ir);
    ir_constant *v = ir->val->constant_expression_value();
 
    this->value = NULL;
@@ -536,6 +535,7 @@ ir_constant_visitor::visit(ir_swizzle *ir)
         }
       }
 
+      void *ctx = talloc_parent(ir);
       this->value = new(ctx) ir_constant(ir->type, &data);
    }
 }
index 01b7d2d832a5b17a7cb0e206334e6f71f0e374a8..882130468254e92d80d66a75cc41a7844571be32 100644 (file)
@@ -77,7 +77,6 @@ public:
 variable_entry *
 ir_dead_code_visitor::get_variable_entry(ir_variable *var)
 {
-   void *ctx = talloc_parent(var);
    assert(var);
    foreach_iter(exec_list_iterator, iter, this->variable_list) {
       variable_entry *entry = (variable_entry *)iter.get();
@@ -85,6 +84,8 @@ ir_dead_code_visitor::get_variable_entry(ir_variable *var)
         return entry;
    }
 
+   void *ctx = talloc_parent(var);
+
    variable_entry *entry = new(ctx) variable_entry(var);
    this->variable_list.push_tail(entry);
    return entry;
index bbd873791a17bed898d56c42e68e5f688fc8e9a3..abeb43cd68edb95669ae4bb04692285e043320e5 100644 (file)
@@ -60,7 +60,6 @@ public:
 ir_rvalue *
 ir_vec_index_to_swizzle_visitor::convert_vec_index_to_swizzle(ir_rvalue *ir)
 {
-   void *ctx = talloc_parent(ir);
    ir_dereference_array *deref = ir->as_dereference_array();
    ir_constant *ir_constant;
 
@@ -75,6 +74,7 @@ ir_vec_index_to_swizzle_visitor::convert_vec_index_to_swizzle(ir_rvalue *ir)
    if (!ir_constant)
       return ir;
 
+   void *ctx = talloc_parent(ir);
    this->progress = true;
    return new(ctx) ir_swizzle(deref->array,
                              ir_constant->value.i[0], 0, 0, 0, 1);