r300/compiler: Use memory_pool_array_reserve in r500-fragprog_emit
authorNicolai Hähnle <nhaehnle@gmail.com>
Sun, 11 Oct 2009 12:22:16 +0000 (14:22 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sun, 18 Apr 2010 22:34:02 +0000 (00:34 +0200)
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c

index b6dfe28..10c5e23 100644 (file)
@@ -348,21 +348,6 @@ static int emit_tex(struct r300_fragment_program_compiler *c, struct rc_sub_inst
        return 1;
 }
 
-static void grow_branches(struct emit_state * s)
-{
-       unsigned int newreserved = s->BranchesReserved * 2;
-       struct branch_info * newbranches;
-
-       if (!newreserved)
-               newreserved = 4;
-
-       newbranches = memory_pool_malloc(&s->C->Pool, newreserved*sizeof(struct branch_info));
-       memcpy(newbranches, s->Branches, s->CurrentBranchDepth*sizeof(struct branch_info));
-
-       s->Branches = newbranches;
-       s->BranchesReserved = newreserved;
-}
-
 static void emit_flowcontrol(struct emit_state * s, struct rc_instruction * inst)
 {
        if (s->Code->inst_end >= 511) {
@@ -380,8 +365,8 @@ static void emit_flowcontrol(struct emit_state * s, struct rc_instruction * inst
                        return;
                }
 
-               if (s->CurrentBranchDepth >= s->BranchesReserved)
-                       grow_branches(s);
+               memory_pool_array_reserve(&s->C->Pool, struct branch_info,
+                               s->Branches, s->CurrentBranchDepth, s->BranchesReserved, 1);
 
                struct branch_info * branch = &s->Branches[s->CurrentBranchDepth++];
                branch->If = newip;