Merge branch 'master' into r300g-glsl
[mesa.git] / src / mesa / shader / slang / slang_print.c
index 68a4d01521064dbef925ac85acfa2edda8859e25..98c7877534feb5be6ffee78c29c7f2953ee65b4a 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 
-#include "imports.h"
+#include "main/imports.h"
 #include "slang_compile.h"
 #include "slang_print.h"
 
@@ -243,7 +243,7 @@ find_var(const slang_variable_scope *s, slang_atom name)
 void
 slang_print_tree(const slang_operation *op, int indent)
 {
-   int i;
+   GLuint i;
 
    switch (op->type) {
 
@@ -261,17 +261,15 @@ slang_print_tree(const slang_operation *op, int indent)
       break;
 
    case SLANG_OPER_BLOCK_NEW_SCOPE:
+   case SLANG_OPER_NON_INLINED_CALL:
       spaces(indent);
       printf("{{ // new scope  locals=%p outer=%p: ",
              (void *) op->locals,
              (void *) op->locals->outer_scope);
-      {
-         int i;
-         for (i = 0; i < op->locals->num_variables; i++) {
-            printf("%s ", (char *) op->locals->variables[i]->a_name);
-         }
-         printf("\n");
+      for (i = 0; i < op->locals->num_variables; i++) {
+         printf("%s ", (char *) op->locals->variables[i]->a_name);
       }
+      printf("\n");
       print_generic(op, NULL, indent+3);
       spaces(indent);
       printf("}}\n");
@@ -281,7 +279,7 @@ slang_print_tree(const slang_operation *op, int indent)
       assert(op->num_children == 0 || op->num_children == 1);
       {
          slang_variable *v;
-         v = _slang_locate_variable(op->locals, op->a_id, GL_TRUE);
+         v = _slang_variable_locate(op->locals, op->a_id, GL_TRUE);
          if (v) {
             const slang_variable_scope *scope;
             spaces(indent);
@@ -351,6 +349,13 @@ slang_print_tree(const slang_operation *op, int indent)
          slang_print_tree(&op->children[0], indent + 3);
       break;
 
+   case SLANG_OPER_RETURN_INLINED:
+      spaces(indent);
+      printf("RETURN_INLINED\n");
+      if (op->num_children > 0)
+         slang_print_tree(&op->children[0], indent + 3);
+      break;
+
    case SLANG_OPER_LABEL:
       spaces(indent);
       printf("LABEL %s\n", (char *) op->a_id);
@@ -382,28 +387,43 @@ slang_print_tree(const slang_operation *op, int indent)
    case SLANG_OPER_WHILE:
       assert(op->num_children == 2);
       spaces(indent);
+      printf("WHILE LOOP: locals = %p\n", (void *) op->locals);
+      indent += 3;
+      spaces(indent);
       printf("WHILE cond:\n");
       slang_print_tree(&op->children[0], indent + 3);
       spaces(indent);
       printf("WHILE body:\n");
       slang_print_tree(&op->children[1], indent + 3);
+      indent -= 3;
+      spaces(indent);
+      printf("END WHILE LOOP\n");
       break;
 
    case SLANG_OPER_DO:
+      spaces(indent);
+      printf("DO LOOP: locals = %p\n", (void *) op->locals);
+      indent += 3;
       spaces(indent);
       printf("DO body:\n");
       slang_print_tree(&op->children[0], indent + 3);
       spaces(indent);
       printf("DO cond:\n");
       slang_print_tree(&op->children[1], indent + 3);
+      indent -= 3;
+      spaces(indent);
+      printf("END DO LOOP\n");
       break;
 
    case SLANG_OPER_FOR:
+      spaces(indent);
+      printf("FOR LOOP: locals = %p\n", (void *) op->locals);
+      indent += 3;
       spaces(indent);
       printf("FOR init:\n");
       slang_print_tree(&op->children[0], indent + 3);
       spaces(indent);
-      printf("FOR while:\n");
+      printf("FOR condition:\n");
       slang_print_tree(&op->children[1], indent + 3);
       spaces(indent);
       printf("FOR step:\n");
@@ -411,6 +431,7 @@ slang_print_tree(const slang_operation *op, int indent)
       spaces(indent);
       printf("FOR body:\n");
       slang_print_tree(&op->children[3], indent + 3);
+      indent -= 3;
       spaces(indent);
       printf("ENDFOR\n");
       /*
@@ -465,7 +486,7 @@ slang_print_tree(const slang_operation *op, int indent)
                    (void *) scope,
                    (void *) op->locals,
                    (void *) op->locals->outer_scope);
-            assert(scope);
+            /*assert(scope);*/
          }
       }
       break;
@@ -623,7 +644,7 @@ slang_print_tree(const slang_operation *op, int indent)
    case SLANG_OPER_CALL:
 #if 0
          slang_function *fun
-            = _slang_locate_function(A->space.funcs, oper->a_id,
+            = _slang_function_locate(A->space.funcs, oper->a_id,
                                      oper->children,
                                      oper->num_children, &A->space, A->atoms);
 #endif
@@ -640,6 +661,11 @@ slang_print_tree(const slang_operation *op, int indent)
       printf(")\n");
       break;
 
+   case SLANG_OPER_METHOD:
+      spaces(indent);
+      printf("METHOD CALL %s.%s\n", (char *) op->a_obj, (char *) op->a_id);
+      break;
+
    case SLANG_OPER_FIELD:
       spaces(indent);
       printf("FIELD %s of\n", (char*) op->a_id);
@@ -669,7 +695,7 @@ slang_print_tree(const slang_operation *op, int indent)
 void
 slang_print_function(const slang_function *f, GLboolean body)
 {
-   int i;
+   GLuint i;
 
 #if 0
    if (_mesa_strcmp((char *) f->header.a_name, "main") != 0)