]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_execprogram.h
implemented r_shadow_bouncegrid_blur, this tremendously improves
[xonotic/darkplaces.git] / prvm_execprogram.h
index b87cfcf91b3fb0e74cb822addd1122754391194b..1607bcfe558a65d1e7d79a61c08d65b3ce7b27b1 100644 (file)
@@ -1,6 +1,14 @@
-// NEED to reset startst after calling this!
+// NEED to reset startst after calling this! startst may or may not be clobbered!
 #define ADVANCE_PROFILE_BEFORE_JUMP() \
-       prog->xfunction->profile += (st - startst)
+       prog->xfunction->profile += (st - startst); \
+       if (prvm_statementprofiling.integer || (prvm_coverage.integer & 4)) { \
+               /* All statements from startst+1 to st have been hit. */ \
+               while (++startst <= st) { \
+                       if (prog->statement_profile[startst - cached_statements]++ == 0 && (prvm_coverage.integer & 4)) \
+                               PRVM_StatementCoverageEvent(prog, prog->xfunction, startst - cached_statements); \
+               } \
+               /* Observe: startst now is clobbered (now at st+1)! */ \
+       }
 
 #ifdef PRVMTIMEPROFILING
 #define PRE_ERROR() \
 #if PRVMSLOWINTERPRETER
                        if (prog->trace)
                                PRVM_PrintStatement(prog, st);
-                       if (prog->statement_profile[st - cached_statements]++ == 0 && (prvm_coverage.integer & 4))
-                               PRVM_StatementCoverageEvent(prog, prog->xfunction, st - cached_statements);
                        if (prog->break_statement >= 0)
                                if ((st - cached_statements) == prog->break_statement)
                                {