X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=progsvm.h;h=0a46d2aaaaad42d1c5951bd98cba02727851a160;hb=c4fcd15162dfb3e4f467a35d6a827611b8ac9d42;hp=acaf6df0e35f1ad9f5dfbe98f7676e2f9ada84c7;hpb=221a6cb74c3a3b30b9e60247d6e42d7a6fcdebf0;p=xonotic%2Fdarkplaces.git diff --git a/progsvm.h b/progsvm.h index acaf6df0..0a46d2aa 100644 --- a/progsvm.h +++ b/progsvm.h @@ -70,7 +70,7 @@ typedef struct prvm_required_field_s typedef struct prvm_edict_private_s { qboolean free; - float freetime; + float freetime; // realtime of last change to "free" (i.e. also set on allocation) int mark; // used during leaktest (0 = unref, >0 = referenced); special values during server physics: #define PRVM_EDICT_MARK_WAIT_FOR_SETORIGIN -1 #define PRVM_EDICT_MARK_SETORIGIN_CAUGHT -2 @@ -531,9 +531,10 @@ prvm_stringbuffer_t; typedef struct prvm_prog_s { double starttime; // system time when PRVM_Prog_Load was called + double inittime; // system time when QC initialization code finished (any entity created before is not a leak) double profiletime; // system time when last PRVM_CallProfile was called (or PRVM_Prog_Load initially) - unsigned int id; // increasing unique id of progs instance mfunction_t *functions; + int functions_covered; char *strings; int stringssize; ddef_t *fielddefs; @@ -562,8 +563,13 @@ typedef struct prvm_prog_s int numglobals; int *statement_linenums; // NULL if not available + int *statement_columnnums; // NULL if not available double *statement_profile; // only incremented if prvm_statementprofiling is on + int statements_covered; + double *explicit_profile; // only incremented if prvm_statementprofiling is on + int explicit_covered; + int numexplicitcoveragestatements; union { prvm_vec_t *fp; @@ -677,6 +683,8 @@ typedef struct prvm_prog_s // printed together with backtraces const char *statestring; + struct animatemodel_cache *animatemodel_cache; + // prvm_builtin_mem_t *mem_list; // now passed as parameter of PRVM_LoadProgs @@ -891,4 +899,6 @@ void VM_FrameBlendFromFrameGroupBlend(frameblend_t *frameblend, const framegroup void VM_UpdateEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed, const dp_model_t *edmodel, const frameblend_t *frameblend); void VM_RemoveEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed); +void PRVM_ExplicitCoverageEvent(prvm_prog_t *prog, mfunction_t *func, int statement); + #endif