X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=pr_exec.c;h=a63f04df2147c6cd3200c6526beb2c7a2b7d3ea3;hb=31a485f531cd44cef63a4cdde6a939d7a75c6f97;hp=5a5243e90dbb74039fe7578c9669ddeb3f90428a;hpb=ff46d6ff516fda192c5adc55a5c9b82007545bd2;p=xonotic%2Fdarkplaces.git diff --git a/pr_exec.c b/pr_exec.c index 5a5243e9..a63f04df 100644 --- a/pr_exec.c +++ b/pr_exec.c @@ -199,7 +199,7 @@ void PR_StackTrace (void) if (!f) Con_Print("\n"); else - Con_Printf("%12s : %s : statement %i\n", PR_GetString(f->s_file), PR_GetString(f->s_name), pr_stack[i].s - f->first_statement); + Con_Printf("%12s : %s : statement %i\n", PRVM_GetString(f->s_file), PRVM_GetString(f->s_name), pr_stack[i].s - f->first_statement); } } @@ -215,6 +215,14 @@ void PR_Profile_f (void) mfunction_t *f, *best; int i, num, max/*, howmany*/; + if (!sv.active) + { + Con_Printf("no server running, can't profile\n"); + return; + } + + Con_Print( "Server Profile:\n[Profile] [BuiltinProfile] [CallCount]\n" ); + //howmany = 10; //if (Cmd_Argc() == 2) // howmany = atoi(Cmd_Argv(1)); @@ -225,7 +233,7 @@ void PR_Profile_f (void) best = NULL; for (i=0 ; inumfunctions ; i++) { - f = &pr_functions[i]; + f = &prog->functions[i]; if (f->profile > max) { max = f->profile; @@ -235,7 +243,7 @@ void PR_Profile_f (void) if (best) { //if (num < howmany) - Con_Printf("%7i %7i %s\n", best->profile, best->builtinsprofile, PR_GetString(best->s_name)); + Con_Printf("%7i %7i %7i %s\n", best->profile, best->builtinsprofile, best->callcount, PRVM_GetString(best->s_name)); num++; best->profile = 0; best->builtinsprofile = 0; @@ -248,7 +256,7 @@ void PR_PrintState(void) int i; if (pr_xfunction) { - for (i = -4;i <= 0;i++) + for (i = -7;i <= 0;i++) if (pr_xstatement + i >= pr_xfunction->first_statement) PR_PrintStatement (pr_statements + pr_xstatement + i); } @@ -272,7 +280,7 @@ void PR_Crash(void) /* ============================================================================ -PR_ExecuteProgram +PRVM_ExecuteProgram The interpretation main loop ============================================================================ @@ -301,7 +309,7 @@ int PR_EnterFunction (mfunction_t *f) // save off any locals that the new function steps on c = f->locals; if (localstack_used + c > LOCALSTACK_SIZE) - Host_Error ("PR_ExecuteProgram: locals stack overflow\n"); + Host_Error ("PRVM_ExecuteProgram: locals stack overflow\n"); for (i=0 ; i < c ; i++) localstack[localstack_used+i] = ((int *)pr_globals)[f->parm_start + i]; @@ -340,7 +348,7 @@ int PR_LeaveFunction (void) c = pr_xfunction->locals; localstack_used -= c; if (localstack_used < 0) - Host_Error ("PR_ExecuteProgram: locals stack underflow\n"); + Host_Error ("PRVM_ExecuteProgram: locals stack underflow\n"); for (i=0 ; i < c ; i++) ((int *)pr_globals)[pr_xfunction->parm_start + i] = localstack[localstack_used+i]; @@ -363,31 +371,31 @@ void PR_Execute_ProgsLoaded(void) /* ==================== -PR_ExecuteProgram +PRVM_ExecuteProgram ==================== */ // LordHavoc: optimized -#define OPA ((eval_t *)&pr_globals[(unsigned short) st->a]) -#define OPB ((eval_t *)&pr_globals[(unsigned short) st->b]) -#define OPC ((eval_t *)&pr_globals[(unsigned short) st->c]) +#define OPA ((prvm_eval_t *)&pr_globals[(unsigned short) st->a]) +#define OPB ((prvm_eval_t *)&pr_globals[(unsigned short) st->b]) +#define OPC ((prvm_eval_t *)&pr_globals[(unsigned short) st->c]) extern cvar_t pr_boundscheck; extern cvar_t pr_traceqc; -void PR_ExecuteProgram (func_t fnum, const char *errormessage) +void PRVM_ExecuteProgram (func_t fnum, const char *errormessage) { dstatement_t *st; mfunction_t *f, *newf; - edict_t *ed; - eval_t *ptr; + prvm_edict_t *ed; + prvm_eval_t *ptr; int profile, startprofile, cachedpr_trace, exitdepth; - if (!fnum || fnum >= progs->numfunctions) + if (!fnum || fnum >= (unsigned) progs->numfunctions) { - if (pr_global_struct->self) - ED_Print(PROG_TO_EDICT(pr_global_struct->self)); - Host_Error ("PR_ExecuteProgram: %s", errormessage); + if (prog->globals.server->self) + ED_Print(PRVM_PROG_TO_EDICT(prog->globals.server->self)); + Host_Error ("PRVM_ExecuteProgram: %s", errormessage); } - f = &pr_functions[fnum]; + f = &prog->functions[fnum]; pr_trace = pr_traceqc.integer;