summaryrefslogtreecommitdiffstats
path: root/src/mesa/shader/slang/slang_vartable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/shader/slang/slang_vartable.c')
-rw-r--r--src/mesa/shader/slang/slang_vartable.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/slang_vartable.c b/src/mesa/shader/slang/slang_vartable.c
index e3efa179085..27f8aeb4bde 100644
--- a/src/mesa/shader/slang/slang_vartable.c
+++ b/src/mesa/shader/slang/slang_vartable.c
@@ -2,6 +2,7 @@
#include "imports.h"
#include "slang_compile.h"
#include "slang_compile_variable.h"
+#include "slang_mem.h"
#include "slang_vartable.h"
#include "slang_ir.h"
#include "prog_instruction.h"
@@ -49,7 +50,11 @@ slang_var_table *
_slang_new_var_table(GLuint maxRegisters)
{
slang_var_table *vt
+#if USE_MEMPOOL
+ = (slang_var_table *) _slang_alloc(sizeof(slang_var_table));
+#else
= (slang_var_table *) _mesa_calloc(sizeof(slang_var_table));
+#endif
if (vt) {
vt->MaxRegisters = maxRegisters;
}
@@ -64,7 +69,9 @@ _slang_delete_var_table(slang_var_table *vt)
_mesa_problem(NULL, "non-empty var table in _slang_delete_var_table()");
return;
}
+#if !USE_MEMPOOL
_mesa_free(vt);
+#endif
}
@@ -77,7 +84,11 @@ _slang_delete_var_table(slang_var_table *vt)
void
_slang_push_var_table(slang_var_table *vt)
{
+#if USE_MEMPOOL
+ struct table *t = (struct table *) _slang_alloc(sizeof(struct table));
+#else
struct table *t = (struct table *) _mesa_calloc(sizeof(struct table));
+#endif
if (t) {
t->Level = vt->CurLevel++;
t->Parent = vt->Top;
@@ -137,10 +148,16 @@ _slang_pop_var_table(slang_var_table *vt)
}
if (t->Vars)
+#if USE_MEMPOOL
+ t->Vars = NULL;
+#else
free(t->Vars);
+#endif
vt->Top = t->Parent;
+#if !USE_MEMPOOL
free(t);
+#endif
vt->CurLevel--;
}
@@ -156,7 +173,14 @@ _slang_add_variable(slang_var_table *vt, slang_variable *v)
t = vt->Top;
assert(t);
if (dbg) printf("Adding var %s\n", (char *) v->a_name);
+#if USE_MEMPOOL
+ t->Vars =
+ (slang_variable **) _slang_realloc(t->Vars,
+ t->NumVars * sizeof(slang_variable *),
+ (t->NumVars + 1) * sizeof(slang_variable *));
+#else
t->Vars = realloc(t->Vars, (t->NumVars + 1) * sizeof(slang_variable *));
+#endif
t->Vars[t->NumVars] = v;
t->NumVars++;
}