![]() |
DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
|
|
#include "quakedef.h"
#include "progsvm.h"
#include "csprogs.h"
#include "prvm_cmds.h"
#include "prvm_offsets.h"
Go to the source code of this file.
Data Structures | |
struct | debug_data_t |
struct | po_string_t |
struct | po_t |
Variables | |
static debug_data_t | debug_data [PRVM_PROG_MAX] |
cvar_t | prvm_backtraceforwarnings = {CF_CLIENT | CF_SERVER, "prvm_backtraceforwarnings", "0", "print a backtrace for warnings too"} |
prvm_eval_t | prvm_badvalue |
cvar_t | prvm_breakpointdump = {CF_CLIENT | CF_SERVER, "prvm_breakpointdump", "0", "write a savegame on breakpoint to breakpoint-server.dmp"} |
cvar_t | prvm_coverage = {CF_CLIENT | CF_SERVER, "prvm_coverage", "0", "report and count coverage events (1: per-function, 2: coverage() builtin, 4: per-statement)"} |
cvar_t | prvm_errordump = {CF_CLIENT | CF_SERVER, "prvm_errordump", "0", "write a savegame on crash to crash-server.dmp"} |
cvar_t | prvm_gameplayfix_div0is0 = {CF_SERVER, "prvm_gameplayfix_div0is0", "0", "When set to 1, floating point division by 0 will return zero instead of returning the IEEE standardized result (likely nan or inf). Other ways of getting non-finite values are not affected, and the warning will still print."} |
cvar_t | prvm_garbagecollection_enable = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_enable", "1", "automatically scan for and free resources that are not referenced by the code being executed in the VM"} |
cvar_t | prvm_garbagecollection_notify = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_notify", "0", "print out a notification for each resource freed by garbage collection (set developer >= 1 to see these)"} |
cvar_t | prvm_garbagecollection_scan_limit = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_scan_limit", "50000", "scan this many fields or resources per second to free up unreferenced resources"} |
At 50k in Xonotic with 8 bots scans take about: 24s server, 25s menu, 9s client. | |
cvar_t | prvm_garbagecollection_strings = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_strings", "1", "automatically call strunzone() on strings that are not referenced"} |
cvar_t | prvm_language = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "prvm_language", "", "when set, loads PROGSFILE.LANGUAGENAME.po and common.LANGUAGENAME.po for string translations; when set to dump, PROGSFILE.pot is written from the strings in the progs"} |
cvar_t | prvm_leaktest = {CF_CLIENT | CF_SERVER, "prvm_leaktest", "0", "try to detect memory leaks in strings or entities"} |
cvar_t | prvm_leaktest_follow_targetname = {CF_CLIENT | CF_SERVER, "prvm_leaktest_follow_targetname", "0", "if set, target/targetname links are considered when leak testing; this should normally not be required, as entities created during startup - e.g. info_notnull - are never considered leaky"} |
cvar_t | prvm_leaktest_ignore_classnames = {CF_CLIENT | CF_SERVER, "prvm_leaktest_ignore_classnames", "", "classnames of entities to NOT leak check because they are found by find(world, classname, ...) but are actually spawned by QC code (NOT map entities)"} |
prvm_prog_t | prvm_prog_list [PRVM_PROG_MAX] |
static double | prvm_reuseedicts_always_allow = 0 |
cvar_t | prvm_reuseedicts_neverinsameframe = {CF_CLIENT | CF_SERVER, "prvm_reuseedicts_neverinsameframe", "1", "never allows re-use of freed entity slots during same frame"} |
cvar_t | prvm_reuseedicts_startuptime = {CF_CLIENT | CF_SERVER, "prvm_reuseedicts_startuptime", "2", "allows immediate re-use of freed entity slots during start of new level (value in seconds)"} |
qbool | prvm_runawaycheck = true |
cvar_t | prvm_statementprofiling = {CF_CLIENT | CF_SERVER, "prvm_statementprofiling", "0", "counts how many times each QuakeC statement has been executed, these counts are displayed in prvm_printfunction output (if enabled)"} |
cvar_t | prvm_stringdebug = {CF_CLIENT | CF_SERVER, "prvm_stringdebug", "0", "Print debug and warning messages related to strings"} |
cvar_t | prvm_timeprofiling = {CF_CLIENT | CF_SERVER, "prvm_timeprofiling", "0", "counts how long each function has been executed, these counts are displayed in prvm_profile output (if enabled)"} |
cvar_t | prvm_traceqc = {CF_CLIENT | CF_SERVER, "prvm_traceqc", "0", "prints every QuakeC statement as it is executed (only for really thorough debugging!)"} |
int | prvm_type_size [8] = {1,sizeof(string_t)/4,1,3,1,1,sizeof(func_t)/4,sizeof(void *)/4} |
for consistency : I think a goal of this sub-project is to make the new vm mostly independent from the old one, thus if it's necessary, I copy everything | |
cvar_t | sv_entfields_noescapes = {CF_SERVER, "sv_entfields_noescapes", "wad", "Space-separated list of fields in which backslashes won't be parsed as escapes when loading entities from .bsp or .ent files. This is a workaround for buggy maps with unescaped backslashes used as path separators (only forward slashes are allowed in Quake VFS paths)."} |
#define PO_HASHSIZE 16384 |
Definition at line 1688 of file prvm_edict.c.
Referenced by PRVM_PO_Destroy(), PRVM_PO_Load(), and PRVM_PO_Lookup().
#define PRVM_DECLARE_clientfieldedict | ( | x | ) |
#define PRVM_DECLARE_clientfieldfloat | ( | x | ) |
#define PRVM_DECLARE_clientfieldfunction | ( | x | ) |
#define PRVM_DECLARE_clientfieldstring | ( | x | ) |
#define PRVM_DECLARE_clientfieldvector | ( | x | ) |
#define PRVM_DECLARE_clientfunction | ( | x | ) |
#define PRVM_DECLARE_clientglobaledict | ( | x | ) |
#define PRVM_DECLARE_clientglobalfloat | ( | x | ) |
#define PRVM_DECLARE_clientglobalfunction | ( | x | ) |
#define PRVM_DECLARE_clientglobalstring | ( | x | ) |
#define PRVM_DECLARE_clientglobalvector | ( | x | ) |
#define PRVM_DECLARE_field | ( | x | ) |
#define PRVM_DECLARE_function | ( | x | ) |
#define PRVM_DECLARE_global | ( | x | ) |
#define PRVM_DECLARE_menufieldedict | ( | x | ) |
#define PRVM_DECLARE_menufieldfloat | ( | x | ) |
#define PRVM_DECLARE_menufieldfunction | ( | x | ) |
#define PRVM_DECLARE_menufieldstring | ( | x | ) |
#define PRVM_DECLARE_menufieldvector | ( | x | ) |
#define PRVM_DECLARE_menufunction | ( | x | ) |
#define PRVM_DECLARE_menuglobaledict | ( | x | ) |
#define PRVM_DECLARE_menuglobalfloat | ( | x | ) |
#define PRVM_DECLARE_menuglobalfunction | ( | x | ) |
#define PRVM_DECLARE_menuglobalstring | ( | x | ) |
#define PRVM_DECLARE_menuglobalvector | ( | x | ) |
#define PRVM_DECLARE_serverfieldedict | ( | x | ) |
#define PRVM_DECLARE_serverfieldfloat | ( | x | ) |
#define PRVM_DECLARE_serverfieldfunction | ( | x | ) |
#define PRVM_DECLARE_serverfieldstring | ( | x | ) |
#define PRVM_DECLARE_serverfieldvector | ( | x | ) |
#define PRVM_DECLARE_serverfunction | ( | x | ) |
#define PRVM_DECLARE_serverglobaledict | ( | x | ) |
#define PRVM_DECLARE_serverglobalfloat | ( | x | ) |
#define PRVM_DECLARE_serverglobalfunction | ( | x | ) |
#define PRVM_DECLARE_serverglobalstring | ( | x | ) |
#define PRVM_DECLARE_serverglobalvector | ( | x | ) |
#define PRVM_KNOWNSTRINGBASE 0x40000000 |
Definition at line 3281 of file prvm_edict.c.
Referenced by PRVM_AllocString(), PRVM_ChangeEngineString(), PRVM_FreeString(), PRVM_GarbageCollection(), PRVM_GetString(), PRVM_LeakTest(), and PRVM_SetEngineString().
#define remapglobal | ( | index | ) |
Referenced by PRVM_Prog_Load().
const char * PRVM_AllocationOrigin | ( | prvm_prog_t * | prog | ) |
Definition at line 223 of file prvm_edict.c.
References buf, prvm_prog_t::depth, prvm_prog_t::leaktest_active, NULL, PRVM_Alloc, and PRVM_ShortStackTrace().
Referenced by PRVM_AllocString(), PRVM_ED_ClearEdict(), VM_buf_create(), VM_fopen(), and VM_search_begin().
int PRVM_AllocString | ( | prvm_prog_t * | prog, |
size_t | bufferlength, | ||
char ** | pointer ) |
Definition at line 3459 of file prvm_edict.c.
References prvm_prog_t::firstfreeknownstring, i, KNOWNSTRINGFLAG_GCMARK, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_origin, prvm_prog_t::leaktest_active, NULL, pointer, PRVM_Alloc, PRVM_AllocationOrigin(), PRVM_KNOWNSTRINGBASE, and PRVM_NewKnownString().
Referenced by PRVM_ED_CallSpawnFunction(), PRVM_ED_ParseEpair(), and VM_strzone().
void PRVM_Breakpoint | ( | prvm_prog_t * | prog, |
int | stack_index, | ||
const char * | text ) |
Definition at line 3000 of file prvm_edict.c.
References Con_Printf(), cvar_t::integer, prvm_prog_t::name, prvm_breakpointdump, PRVM_PrintState(), SV_Savegame_to(), and va().
Referenced by PRVM_Watchpoint(), and while().
|
static |
Definition at line 3105 of file prvm_edict.c.
References debug_data_t::break_statement, cmd(), Cmd_Argc(), Cmd_Argv(), Con_Printf(), debug_data, dp_strlcpy, PRVM_FriendlyProgFromString(), prvm_prog_list, PRVM_ProgFromString(), and PRVM_UpdateBreakpoints().
Referenced by PRVM_Init().
const char * PRVM_ChangeEngineString | ( | prvm_prog_t * | prog, |
int | i, | ||
const char * | s ) |
Definition at line 3345 of file prvm_edict.c.
References prvm_prog_t::error_cmd, i, KNOWNSTRINGFLAG_ENGINE, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_t::numknownstrings, and PRVM_KNOWNSTRINGBASE.
Referenced by Cvar_UpdateAutoCvar().
prvm_edict_t * PRVM_ED_Alloc | ( | prvm_prog_t * | prog | ) |
Definition at line 269 of file prvm_edict.c.
References prvm_prog_t::error_cmd, i, prvm_prog_t::limit_edicts, prvm_prog_t::max_edicts, prvm_prog_t::name, prvm_prog_t::num_edicts, PRVM_ED_CanAlloc(), PRVM_ED_ClearEdict(), PRVM_EDICT_NUM, PRVM_MEM_IncreaseEdicts(), and prvm_prog_t::reserved_edicts.
Referenced by CSQC_ReadEntities(), PRVM_ED_LoadFromFile(), SV_Ent_Create_f(), VM_CL_spawn(), and VM_spawn().
void PRVM_ED_CallPostspawnFunction | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ent ) |
Definition at line 1484 of file prvm_edict.c.
References prvm_prog_t::ExecuteProgram, prvm_edict_t::free, PRVM_EDICT_TO_PROG, PRVM_serverfunction, PRVM_serverglobaledict, PRVM_serverglobalfloat, self, sv, server_t::time, and time.
Referenced by PRVM_ED_LoadFromFile(), and SV_Ent_Create_f().
void PRVM_ED_CallPrespawnFunction | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ent ) |
Definition at line 1389 of file prvm_edict.c.
References prvm_prog_t::ExecuteProgram, PRVM_EDICT_TO_PROG, PRVM_serverfunction, PRVM_serverglobaledict, PRVM_serverglobalfloat, self, sv, server_t::time, and time.
Referenced by PRVM_ED_LoadFromFile(), and SV_Ent_Create_f().
qbool PRVM_ED_CallSpawnFunction | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ent, | ||
const char * | data, | ||
const char * | start ) |
Definition at line 1400 of file prvm_edict.c.
References classname, Con_DPrint(), Con_Print(), data, developer, prvm_prog_t::ExecuteProgram, prvm_edict_t::free, prvm_prog_t::functions, cvar_t::integer, NULL, PRVM_alledictstring, PRVM_allglobaledict, PRVM_allglobalfloat, PRVM_AllocString(), PRVM_ED_FindFunction(), PRVM_ED_FindGlobalEval(), PRVM_ED_Free(), PRVM_ED_Print(), PRVM_EDICT_TO_PROG, PRVM_GetString(), PRVM_serverfunction, PRVM_serverglobaledict, PRVM_serverglobalfloat, self, prvm_eval_t::string, sv, server_t::time, time, and va().
Referenced by PRVM_ED_LoadFromFile(), and SV_Ent_Create_f().
qbool PRVM_ED_CanAlloc | ( | prvm_prog_t * | prog, |
prvm_edict_t * | e ) |
Definition at line 243 of file prvm_edict.c.
References prvm_edict_t::free, prvm_edict_t::freetime, host, cvar_t::integer, prvm_reuseedicts_always_allow, prvm_reuseedicts_neverinsameframe, prvm_reuseedicts_startuptime, host_static_t::realtime, prvm_prog_t::starttime, and cvar_t::value.
Referenced by PRVM_ED_Alloc(), and SV_Physics().
void PRVM_ED_ClearEdict | ( | prvm_prog_t * | prog, |
prvm_edict_t * | e ) |
Definition at line 210 of file prvm_edict.c.
References prvm_edict_private_t::allocation_origin, prvm_prog_t::entityfields, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, prvm_edict_t::freetime, host, prvm_prog_t::init_edict, Mem_Free, prvm_edict_t::priv, PRVM_AllocationOrigin(), host_static_t::realtime, and prvm_edict_t::required.
Referenced by PRVM_ED_Alloc(), SV_ConnectClient(), SV_DropClient(), SV_Ent_Remove_All_f(), SV_Ent_Remove_f(), and SV_SpawnServer().
|
static |
Definition at line 871 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), prvm_prog_t::count_edicts, and PRVM_FriendlyProgFromString().
Referenced by PRVM_Init().
|
static |
Definition at line 1157 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), cvar(), Cvar_FindVar(), Cvar_Get(), Cvar_Readonly(), prvm_edict_t::fields, prvm_edict_t::fp, MAX_INPUTLINE, NULL, mdef_t::ofs, PRVM_ED_FindField(), PRVM_EDICT_NUM, PRVM_FriendlyProgFromString(), PRVM_UglyValueString(), mdef_t::type, and v.
Referenced by PRVM_Init().
|
static |
Definition at line 1249 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), PRVM_ED_FindField(), PRVM_ED_ParseEpair(), PRVM_EDICT_NUM, and PRVM_FriendlyProgFromString().
Referenced by PRVM_Init().
mdef_t * PRVM_ED_FieldAtOfs | ( | prvm_prog_t * | prog, |
unsigned int | ofs ) |
Definition at line 357 of file prvm_edict.c.
References prvm_prog_t::fielddefs, i, NULL, prvm_prog_t::numfielddefs, mdef_t::ofs, and ofs.
Referenced by PRVM_UglyValueString(), PRVM_ValueString(), and while().
mdef_t * PRVM_ED_FindField | ( | prvm_prog_t * | prog, |
const char * | name ) |
Definition at line 376 of file prvm_edict.c.
References prvm_prog_t::fielddefs, i, name, NULL, prvm_prog_t::numfielddefs, PRVM_GetString(), and mdef_t::s_name.
Referenced by PRVM_ED_EdictGet_f(), PRVM_ED_EdictSet_f(), PRVM_ED_FindFieldOffset(), PRVM_ED_ParseEdict(), PRVM_ED_ParseEpair(), PRVM_UpdateBreakpoints(), and SV_Ent_Create_f().
int PRVM_ED_FindFieldOffset | ( | prvm_prog_t * | prog, |
const char * | field ) |
Definition at line 134 of file prvm_edict.c.
References mdef_t::ofs, and PRVM_ED_FindField().
mfunction_t * PRVM_ED_FindFunction | ( | prvm_prog_t * | prog, |
const char * | name ) |
Definition at line 425 of file prvm_edict.c.
References prvm_prog_t::functions, i, name, NULL, prvm_prog_t::numfunctions, PRVM_GetString(), and mfunction_t::s_name.
Referenced by CL_CheckRequiredFuncs(), MP_CheckRequiredFuncs(), PRVM_ED_CallSpawnFunction(), PRVM_ED_FindFunctionOffset(), PRVM_ED_ParseEpair(), PRVM_PrintFunctionStatements(), PRVM_UpdateBreakpoints(), VM_callfunction(), and VM_isfunction().
func_t PRVM_ED_FindFunctionOffset | ( | prvm_prog_t * | prog, |
const char * | function ) |
Definition at line 152 of file prvm_edict.c.
References f, prvm_prog_t::functions, and PRVM_ED_FindFunction().
mdef_t * PRVM_ED_FindGlobal | ( | prvm_prog_t * | prog, |
const char * | name ) |
Definition at line 395 of file prvm_edict.c.
References prvm_prog_t::globaldefs, i, name, NULL, prvm_prog_t::numglobaldefs, PRVM_GetString(), and mdef_t::s_name.
Referenced by PRVM_ED_FindGlobalEval(), PRVM_ED_FindGlobalOffset(), PRVM_ED_GlobalGet_f(), PRVM_ED_ParseGlobals(), PRVM_Global_f(), PRVM_GlobalSet_f(), and PRVM_UpdateBreakpoints().
prvm_eval_t * PRVM_ED_FindGlobalEval | ( | prvm_prog_t * | prog, |
const char * | name ) |
Definition at line 414 of file prvm_edict.c.
References prvm_prog_t::fp, prvm_prog_t::globals, name, NULL, mdef_t::ofs, and PRVM_ED_FindGlobal().
Referenced by PRVM_ED_CallSpawnFunction().
int PRVM_ED_FindGlobalOffset | ( | prvm_prog_t * | prog, |
const char * | global ) |
Definition at line 143 of file prvm_edict.c.
References mdef_t::ofs, and PRVM_ED_FindGlobal().
void PRVM_ED_Free | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ed ) |
Definition at line 314 of file prvm_edict.c.
References prvm_edict_private_t::allocation_origin, prvm_prog_t::edicts, prvm_edict_t::free, prvm_prog_t::free_edict, prvm_edict_t::freetime, host, Mem_Free, NULL, prvm_edict_t::priv, host_static_t::realtime, prvm_edict_t::required, and prvm_prog_t::reserved_edicts.
Referenced by PRVM_ED_CallSpawnFunction(), PRVM_ED_LoadFromFile(), SV_Ent_Create_f(), SV_Ent_Remove_All_f(), SV_Ent_Remove_f(), VM_CL_makestatic(), VM_objerror(), VM_remove(), and VM_SV_makestatic().
|
static |
Definition at line 338 of file prvm_edict.c.
References prvm_prog_t::globaldefs, i, NULL, prvm_prog_t::numglobaldefs, mdef_t::ofs, and ofs.
Referenced by PRVM_GlobalString(), and PRVM_GlobalStringNoContents().
|
static |
Definition at line 1201 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), cvar(), Cvar_FindVar(), Cvar_Get(), Cvar_Readonly(), prvm_prog_t::fp, prvm_prog_t::globals, MAX_INPUTLINE, NULL, mdef_t::ofs, PRVM_ED_FindGlobal(), PRVM_FriendlyProgFromString(), PRVM_UglyValueString(), mdef_t::type, and v.
Referenced by PRVM_Init().
void PRVM_ED_LoadFromFile | ( | prvm_prog_t * | prog, |
const char * | data ) |
Definition at line 1511 of file prvm_edict.c.
References COM_ParseToken_Simple(), com_token, Con_DPrintf(), data, prvm_prog_t::edicts, prvm_prog_t::entityfields, prvm_prog_t::error_cmd, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, host, prvm_prog_t::load_edict, prvm_prog_t::loadintoworld, prvm_prog_t::name, prvm_prog_t::num_edicts, PRVM_ED_Alloc(), PRVM_ED_CallPostspawnFunction(), PRVM_ED_CallPrespawnFunction(), PRVM_ED_CallSpawnFunction(), PRVM_ED_Free(), PRVM_ED_ParseEdict(), PRVM_EDICT_NUM, prvm_reuseedicts_always_allow, host_static_t::realtime, and SV_LinkEdict().
Referenced by SV_SpawnServer(), VM_loadfromdata(), and VM_loadfromfile().
const char * PRVM_ED_ParseEdict | ( | prvm_prog_t * | prog, |
const char * | data, | ||
prvm_edict_t * | ent, | ||
qbool | saveload ) |
Definition at line 1281 of file prvm_edict.c.
References COM_ParseToken_Console(), COM_ParseToken_Simple(), com_token, Con_DPrintf(), Con_Printf(), data, developer_entityparsing, dp_strlcpy, dpsnprintf(), prvm_prog_t::error_cmd, prvm_edict_t::free, prvm_edict_t::freetime, host, cvar_t::integer, n, prvm_prog_t::name, PRVM_ED_FindField(), PRVM_ED_ParseEpair(), host_static_t::realtime, cvar_t::string, and sv_entfields_noescapes.
Referenced by PRVM_ED_LoadFromFile(), SV_Loadgame_f(), and VM_parseentitydata().
qbool PRVM_ED_ParseEpair | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ent, | ||
mdef_t * | key, | ||
const char * | s, | ||
qbool | parsebackslash ) |
Definition at line 991 of file prvm_edict.c.
References prvm_eval_t::_float, prvm_eval_t::_int, Con_DPrintf(), Con_Printf(), DEF_SAVEGLOBAL, prvm_eval_t::edict, ev_entity, ev_field, ev_float, ev_function, ev_string, ev_vector, prvm_edict_t::fields, prvm_edict_t::fp, prvm_prog_t::fp, prvm_eval_t::function, prvm_prog_t::functions, prvm_prog_t::globals, i, int(), ISWHITESPACE, prvm_prog_t::limit_edicts, prvm_prog_t::max_edicts, prvm_prog_t::name, mdef_t::ofs, PRVM_AllocString(), PRVM_ED_FindField(), PRVM_ED_FindFunction(), PRVM_EDICT_NUM, PRVM_EDICT_TO_PROG, PRVM_GetString(), PRVM_MEM_IncreaseEdicts(), mdef_t::s_name, prvm_eval_t::string, strlen(), mdef_t::type, and prvm_eval_t::vector.
Referenced by PRVM_ED_EdictSet_f(), PRVM_ED_ParseEdict(), PRVM_ED_ParseGlobals(), PRVM_GlobalSet_f(), SV_Ent_Create_f(), and VM_putentityfieldstring().
void PRVM_ED_ParseGlobals | ( | prvm_prog_t * | prog, |
const char * | data ) |
Definition at line 940 of file prvm_edict.c.
References COM_ParseToken_Simple(), com_token, Con_DPrintf(), Con_Printf(), data, developer_entityparsing, dp_strlcpy, prvm_prog_t::error_cmd, cvar_t::integer, MAX_INPUTLINE, prvm_prog_t::name, NULL, PRVM_ED_FindGlobal(), and PRVM_ED_ParseEpair().
Referenced by SV_Loadgame_f().
void PRVM_ED_Print | ( | prvm_prog_t * | prog, |
prvm_edict_t * | ed, | ||
const char * | wildcard_fieldname ) |
Definition at line 657 of file prvm_edict.c.
References Con_Print(), Con_Printf(), dp_strlcat, dpsnprintf(), prvm_prog_t::fielddefs, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, i, prvm_eval_t::ivector, matchpattern(), MAX_INPUTLINE, name, prvm_prog_t::name, prvm_prog_t::numfielddefs, mdef_t::ofs, PRVM_GetString(), PRVM_NUM_FOR_EDICT, prvm_type_size, PRVM_ValueString(), mdef_t::s_name, strlen(), mdef_t::type, and type.
Referenced by CLVM_ExecuteProgram(), PRVM_ED_CallSpawnFunction(), PRVM_ED_PrintNum(), PRVM_LeakTest(), SVVM_ExecuteProgram(), VM_error(), and VM_objerror().
|
static |
Definition at line 832 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), i, NULL, prvm_prog_t::num_edicts, PRVM_ED_PrintNum(), and PRVM_FriendlyProgFromString().
Referenced by PRVM_Init().
void PRVM_ED_PrintEdicts_f | ( | cmd_state_t * | cmd | ) |
Definition at line 800 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), i, prvm_prog_t::name, NULL, prvm_prog_t::num_edicts, PRVM_ED_PrintNum(), and PRVM_FriendlyProgFromString().
Referenced by PRVM_Init().
void PRVM_ED_PrintNum | ( | prvm_prog_t * | prog, |
int | ent, | ||
const char * | wildcard_fieldname ) |
Definition at line 788 of file prvm_edict.c.
References PRVM_ED_Print(), and PRVM_EDICT_NUM.
Referenced by PRVM_ED_PrintEdict_f(), PRVM_ED_PrintEdicts_f(), and VM_eprint().
void PRVM_ED_Write | ( | prvm_prog_t * | prog, |
qfile_t * | f, | ||
prvm_edict_t * | ed ) |
Definition at line 739 of file prvm_edict.c.
References Con_Printf(), developer_entityparsing, f, prvm_prog_t::fielddefs, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, FS_Print(), FS_Printf(), i, cvar_t::integer, prvm_eval_t::ivector, MAX_INPUTLINE, name, NULL, prvm_prog_t::numfielddefs, mdef_t::ofs, PRVM_GetString(), PRVM_NUM_FOR_EDICT, prvm_type_size, PRVM_UglyValueString(), mdef_t::s_name, prvm_prog_t::statestring, strlen(), mdef_t::type, type, and va().
void PRVM_ED_WriteGlobals | ( | prvm_prog_t * | prog, |
qfile_t * | f ) |
Definition at line 901 of file prvm_edict.c.
References Con_Printf(), DEF_SAVEGLOBAL, developer_entityparsing, ev_entity, ev_float, ev_string, f, prvm_prog_t::fp, FS_Print(), FS_Printf(), prvm_prog_t::globaldefs, prvm_prog_t::globals, i, cvar_t::integer, MAX_INPUTLINE, name, NULL, prvm_prog_t::numglobaldefs, mdef_t::ofs, PRVM_GetString(), PRVM_UglyValueString(), mdef_t::s_name, prvm_prog_t::statestring, mdef_t::type, type, and va().
unsigned int PRVM_EDICT_NUM_ERROR | ( | prvm_prog_t * | prog, |
unsigned int | n, | ||
const char * | filename, | ||
int | fileline ) |
Definition at line 3275 of file prvm_edict.c.
References prvm_prog_t::error_cmd, n, and prvm_prog_t::name.
|
static |
Definition at line 3163 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Printf(), debug_data, dp_strlcpy, PRVM_FriendlyProgFromString(), prvm_prog_list, PRVM_ProgFromString(), PRVM_UpdateBreakpoints(), debug_data_t::watch_edict, and debug_data_t::watch_field.
Referenced by PRVM_Init().
|
static |
Definition at line 2773 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), DEF_SAVEGLOBAL, dp_strlcat, dpsnprintf(), prvm_prog_t::entityfields, ev_entity, ev_field, ev_float, ev_function, ev_pointer, ev_string, ev_vector, ev_void, prvm_prog_t::fielddefs, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, i, prvm_eval_t::ivector, prvm_prog_t::max_edicts, MAX_INPUTLINE, Mem_Alloc, Mem_Free, name, prvm_prog_t::name, prvm_prog_t::numfielddefs, mdef_t::ofs, PRVM_EDICT_NUM, PRVM_FriendlyProgFromString(), PRVM_GetString(), prvm_type_size, mdef_t::s_name, strlen(), tempmempool, and mdef_t::type.
Referenced by PRVM_Init().
|
static |
Definition at line 1584 of file prvm_edict.c.
References prvm_prog_t::fieldoffsets, prvm_prog_t::funcoffsets, and prvm_prog_t::globaloffsets.
Referenced by PRVM_Prog_Load().
void PRVM_FreeString | ( | prvm_prog_t * | prog, |
int | num ) |
Definition at line 3481 of file prvm_edict.c.
References prvm_prog_t::error_cmd, prvm_prog_t::firstfreeknownstring, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_t::knownstrings_origin, prvm_prog_t::leaktest_active, min, prvm_prog_t::name, NULL, PRVM_Free, and PRVM_KNOWNSTRINGBASE.
Referenced by VM_strunzone().
prvm_prog_t * PRVM_FriendlyProgFromString | ( | const char * | str | ) |
for console commands (prints error if name unknown and returns NULL, prints error if prog not loaded and returns NULL)
Definition at line 184 of file prvm_edict.c.
References Con_Printf(), prvm_prog_t::loaded, NULL, and PRVM_ProgFromString().
Referenced by PRVM_Breakpoint_f(), PRVM_CallProfile_f(), PRVM_ChildProfile_f(), PRVM_ED_Count_f(), PRVM_ED_EdictGet_f(), PRVM_ED_EdictSet_f(), PRVM_ED_GlobalGet_f(), PRVM_ED_PrintEdict_f(), PRVM_ED_PrintEdicts_f(), PRVM_EdictWatchpoint_f(), PRVM_Fields_f(), PRVM_GameCommand(), PRVM_Global_f(), PRVM_Globals_f(), PRVM_GlobalSet_f(), PRVM_GlobalWatchpoint_f(), PRVM_PrintFunction_f(), and PRVM_Profile_f().
|
static |
Definition at line 1108 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Args(), Con_Printf(), sizebuf_t::cursize, prvm_prog_t::ExecuteProgram, OFS_PARM0, PRVM_allfunction, PRVM_FriendlyProgFromString(), PRVM_G_INT, PRVM_SetTempString(), strlen(), and prvm_prog_t::tempstringsbuf.
Referenced by PRVM_GameCommand_Client_f(), PRVM_GameCommand_Menu_f(), and PRVM_GameCommand_Server_f().
|
static |
Definition at line 1141 of file prvm_edict.c.
References cmd(), and PRVM_GameCommand().
Referenced by PRVM_Init().
|
static |
Definition at line 1145 of file prvm_edict.c.
References cmd(), and PRVM_GameCommand().
Referenced by PRVM_Init().
|
static |
Definition at line 1137 of file prvm_edict.c.
References cmd(), and PRVM_GameCommand().
Referenced by PRVM_Init().
void PRVM_GarbageCollection | ( | prvm_prog_t * | prog | ) |
Definition at line 3757 of file prvm_edict.c.
References cl, Con_DPrintf(), prvm_prog_t::edictsfields, prvm_prog_t::entityfields, ev_string, prvm_prog_t::fielddefs, prvm_prog_garbagecollection_state_t::fields_mark_progress, prvm_prog_garbagecollection_state_t::fields_mark_progress_entity, prvm_prog_t::firstfreeknownstring, server_t::frametime, prvm_prog_t::gc, prvm_prog_t::globaldefs, prvm_prog_t::globals, prvm_prog_garbagecollection_state_t::globals_mark_progress, cvar_t::integer, prvm_prog_t::ip, KNOWNSTRINGFLAG_ENGINE, KNOWNSTRINGFLAG_GCMARK, KNOWNSTRINGFLAG_GCPRUNE, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_garbagecollection_state_t::knownstrings_sweep_progress, Mem_Free, min, prvm_prog_t::name, NULL, prvm_prog_t::num_edicts, prvm_prog_t::numfielddefs, prvm_prog_t::numglobaldefs, prvm_prog_t::numknownstrings, mdef_t::ofs, prvm_garbagecollection_enable, prvm_garbagecollection_notify, prvm_garbagecollection_scan_limit, prvm_garbagecollection_strings, PRVM_GC_FIELDS_MARK, PRVM_GC_GLOBALS_MARK, PRVM_GC_KNOWNSTRINGS_SWEEP, PRVM_GC_RESET, PRVM_GC_START, PRVM_GetString(), PRVM_KNOWNSTRINGBASE, client_state_t::realframetime, mdef_t::s_name, prvm_prog_garbagecollection_state_t::stage, sv, SVVM_prog, and mdef_t::type.
Referenced by CL_VM_DrawHud(), CL_VM_UpdateView(), MP_Draw(), and SV_Physics().
const char * PRVM_GetString | ( | prvm_prog_t * | prog, |
int | num ) |
Definition at line 3283 of file prvm_edict.c.
References sizebuf_t::cursize, sizebuf_t::data, cvar_t::integer, KNOWNSTRINGFLAG_GCMARK, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, sizebuf_t::maxsize, prvm_prog_t::numknownstrings, PRVM_KNOWNSTRINGBASE, prvm_stringdebug, prvm_prog_t::strings, prvm_prog_t::stringssize, prvm_prog_t::tempstringsbuf, and VM_Warning().
Referenced by CLVM_ExecuteProgram(), FindViewthing(), NetConn_BuildStatusResponse(), PRVM_CallProfile(), PRVM_ED_CallSpawnFunction(), PRVM_ED_FindField(), PRVM_ED_FindFunction(), PRVM_ED_FindGlobal(), PRVM_ED_ParseEpair(), PRVM_ED_Print(), PRVM_ED_Write(), PRVM_ED_WriteGlobals(), PRVM_Fields_f(), PRVM_FunctionCoverageEvent(), PRVM_GarbageCollection(), PRVM_Globals_f(), PRVM_GlobalString(), PRVM_GlobalStringNoContents(), PRVM_IsEdictReferenced(), PRVM_IsEdictRelevant(), PRVM_MarkReferencedEdicts(), PRVM_PrintStatement(), PRVM_Profile(), PRVM_Prog_Load(), PRVM_ShortStackTrace(), PRVM_StackTrace(), PRVM_UglyValueString(), PRVM_ValueString(), PRVM_WhereAmI(), SV_CheckVelocity(), SV_Ent_Remove_All_f(), SV_Ent_Remove_f(), SV_PrepareEntityForSending(), SV_Savegame_to(), SV_SendServerinfo(), SV_SpawnServer(), SV_Status_f(), SV_UnstickEntity(), SV_UpdateToReliableMessages(), SV_WriteClientdataToMessage(), SVVM_ExecuteProgram(), VM_error(), VM_objerror(), VM_SV_droptofloor(), and while().
|
static |
Definition at line 2941 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Printf(), MAX_INPUTLINE, mdef_t::ofs, PRVM_ED_FindGlobal(), PRVM_FriendlyProgFromString(), PRVM_GLOBALFIELDVALUE, PRVM_ValueString(), and mdef_t::type.
Referenced by PRVM_Init().
|
static |
Definition at line 2894 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Print(), Con_Printf(), prvm_prog_t::globaldefs, i, matchpattern(), prvm_prog_t::name, NULL, prvm_prog_t::numglobaldefs, prvm_prog_t::numglobals, PRVM_FriendlyProgFromString(), PRVM_GetString(), and mdef_t::s_name.
Referenced by PRVM_Init().
|
static |
Definition at line 2966 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Printf(), NULL, PRVM_ED_FindGlobal(), PRVM_ED_ParseEpair(), and PRVM_FriendlyProgFromString().
Referenced by PRVM_Init().
char * PRVM_GlobalString | ( | prvm_prog_t * | prog, |
int | ofs, | ||
char * | line, | ||
size_t | linelength ) |
Definition at line 602 of file prvm_edict.c.
References dpsnprintf(), prvm_prog_t::fp, prvm_prog_t::globals, MAX_INPUTLINE, ofs, PRVM_ED_GlobalAtOfs(), PRVM_GetString(), PRVM_ValueString(), mdef_t::s_name, and mdef_t::type.
Referenced by PRVM_PrintStatement().
char * PRVM_GlobalStringNoContents | ( | prvm_prog_t * | prog, |
int | ofs, | ||
char * | line, | ||
size_t | linelength ) |
Definition at line 628 of file prvm_edict.c.
References dpsnprintf(), ofs, PRVM_ED_GlobalAtOfs(), PRVM_GetString(), and mdef_t::s_name.
|
static |
Definition at line 3134 of file prvm_edict.c.
References cmd(), Cmd_Argc(), Cmd_Argv(), Con_Printf(), debug_data, dp_strlcpy, PRVM_FriendlyProgFromString(), prvm_prog_list, PRVM_ProgFromString(), PRVM_UpdateBreakpoints(), and debug_data_t::watch_global.
Referenced by PRVM_Init().
Definition at line 3198 of file prvm_edict.c.
References CF_SHARED, Cmd_AddCommand(), Con_DPrintf(), Cvar_RegisterVariable(), i, prvm_backtraceforwarnings, PRVM_Breakpoint_f(), prvm_breakpointdump, PRVM_CallProfile_f(), PRVM_ChildProfile_f(), prvm_coverage, PRVM_ED_Count_f(), PRVM_ED_EdictGet_f(), PRVM_ED_EdictSet_f(), PRVM_ED_GlobalGet_f(), PRVM_ED_PrintEdict_f(), PRVM_ED_PrintEdicts_f(), PRVM_EdictWatchpoint_f(), prvm_errordump, PRVM_Fields_f(), PRVM_GameCommand_Client_f(), PRVM_GameCommand_Menu_f(), PRVM_GameCommand_Server_f(), prvm_gameplayfix_div0is0, prvm_garbagecollection_enable, prvm_garbagecollection_notify, prvm_garbagecollection_scan_limit, prvm_garbagecollection_strings, PRVM_Global_f(), PRVM_Globals_f(), PRVM_GlobalSet_f(), PRVM_GlobalWatchpoint_f(), prvm_language, prvm_leaktest, prvm_leaktest_follow_targetname, prvm_leaktest_ignore_classnames, PRVM_PrintFunction_f(), PRVM_Profile_f(), prvm_reuseedicts_neverinsameframe, prvm_reuseedicts_startuptime, prvm_runawaycheck, prvm_statementprofiling, prvm_stringdebug, prvm_timeprofiling, prvm_traceqc, sv_entfields_noescapes, Sys_CheckParm(), vm_m_extensions, and vm_sv_extensions.
Referenced by Host_Init().
|
static |
Definition at line 3589 of file prvm_edict.c.
References DEF_SAVEGLOBAL, ev_entity, prvm_prog_t::fielddefs, i, cvar_t::integer, prvm_edict_private_t::mark, NULL, prvm_prog_t::num_edicts, prvm_prog_t::numfielddefs, mdef_t::ofs, prvm_edict_t::priv, PRVM_EDICT_NUM, PRVM_EDICTFIELDEDICT, PRVM_GetString(), prvm_leaktest_follow_targetname, PRVM_NUM_FOR_EDICT, PRVM_serveredictstring, prvm_edict_t::required, SVVM_prog, target, targetname, and mdef_t::type.
Referenced by PRVM_MarkReferencedEdicts().
|
static |
Definition at line 3537 of file prvm_edict.c.
References classname, CLVM_prog, effects, entnum, prvm_edict_t::freetime, prvm_prog_t::inittime, modelindex, nextthink, PRVM_clientedictfloat, PRVM_clientedictfunction, PRVM_clientedictstring, PRVM_GetString(), prvm_leaktest_ignore_classnames, PRVM_NUM_FOR_EDICT, PRVM_serveredictfloat, PRVM_serveredictfunction, PRVM_serveredictstring, prvm_prog_t::reserved_edicts, solid, cvar_t::string, SVVM_prog, takedamage, and va().
Referenced by PRVM_MarkReferencedEdicts().
|
static |
Definition at line 3506 of file prvm_edict.c.
References DEF_SAVEGLOBAL, ev_string, prvm_prog_t::fielddefs, prvm_edict_t::free, prvm_prog_t::globaldefs, i, prvm_prog_t::num_edicts, prvm_prog_t::numfielddefs, prvm_prog_t::numglobaldefs, mdef_t::ofs, PRVM_EDICT_NUM, PRVM_EDICTFIELDSTRING, PRVM_GLOBALFIELDSTRING, and mdef_t::type.
Referenced by PRVM_LeakTest().
void PRVM_LeakTest | ( | prvm_prog_t * | prog | ) |
Definition at line 3682 of file prvm_edict.c.
References prvm_edict_private_t::allocation_origin, Con_Print(), Con_Printf(), prvm_edict_t::free, i, int(), prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_t::knownstrings_origin, prvm_prog_t::leaktest_active, prvm_edict_private_t::mark, Mem_ExpandableArray_IndexRange(), Mem_ExpandableArray_RecordAtIndex(), NULL, prvm_prog_t::num_edicts, prvm_prog_t::numknownstrings, prvm_prog_t::openfiles, prvm_prog_t::openfiles_origin, prvm_prog_t::opensearches, prvm_prog_t::opensearches_origin, prvm_stringbuffer_t::origin, prvm_edict_t::priv, PRVM_ED_Print(), PRVM_EDICT_NUM, PRVM_IsStringReferenced(), PRVM_KNOWNSTRINGBASE, PRVM_MarkReferencedEdicts(), PRVM_MAX_OPENFILES, PRVM_MAX_OPENSEARCHES, prvm_edict_t::required, and prvm_prog_t::stringbuffersarray.
Referenced by PRVM_Prog_Reset().
|
static |
Definition at line 1968 of file prvm_edict.c.
References dp_strlcat, FS_LoadFile(), FS_StripExtension(), LittleLong, Mem_Alloc, Mem_Free, prvm_prog_t::progs_mempool, prvm_prog_t::progs_numfielddefs, prvm_prog_t::progs_numglobaldefs, prvm_prog_t::progs_numglobals, prvm_prog_t::progs_numstatements, prvm_prog_t::statement_columnnums, prvm_prog_t::statement_linenums, and tempmempool.
Referenced by PRVM_Prog_Load().
|
static |
Definition at line 3629 of file prvm_edict.c.
References Con_DPrintf(), Con_Printf(), DEF_SAVEGLOBAL, ev_entity, prvm_edict_t::free, prvm_prog_t::globaldefs, i, prvm_edict_private_t::mark, prvm_prog_t::max_edicts, prvm_prog_t::num_edicts, prvm_prog_t::numglobaldefs, mdef_t::ofs, prvm_edict_t::priv, PRVM_EDICT_NUM, PRVM_GetString(), PRVM_GLOBALFIELDEDICT, PRVM_IsEdictReferenced(), PRVM_IsEdictRelevant(), prvm_edict_t::required, mdef_t::s_name, and mdef_t::type.
Referenced by PRVM_LeakTest().
|
static |
Definition at line 70 of file prvm_edict.c.
References bound, prvm_prog_t::edictprivate, prvm_prog_t::edictprivate_size, prvm_prog_t::edicts, prvm_prog_t::edictsfields, prvm_prog_t::entityfields, prvm_prog_t::entityfieldsarea, prvm_edict_t::fields, prvm_edict_t::fp, prvm_prog_t::fp, i, prvm_prog_t::limit_edicts, max, prvm_prog_t::max_edicts, Mem_Alloc, prvm_prog_t::num_edicts, prvm_edict_t::priv, prvm_prog_t::progs_mempool, prvm_edict_t::required, and prvm_prog_t::reserved_edicts.
Referenced by PRVM_Prog_Load().
void PRVM_MEM_IncreaseEdicts | ( | prvm_prog_t * | prog | ) |
Definition at line 105 of file prvm_edict.c.
References prvm_prog_t::begin_increase_edicts, prvm_prog_t::edictprivate, prvm_prog_t::edictprivate_size, prvm_prog_t::edicts, prvm_prog_t::edictsfields, prvm_prog_t::end_increase_edicts, prvm_prog_t::entityfields, prvm_prog_t::entityfieldsarea, prvm_edict_t::fields, prvm_edict_t::fp, prvm_prog_t::fp, i, prvm_prog_t::limit_edicts, prvm_prog_t::max_edicts, Mem_Realloc, min, prvm_edict_t::priv, prvm_prog_t::progs_mempool, and prvm_edict_t::required.
Referenced by PRVM_ED_Alloc(), PRVM_ED_ParseEpair(), and SV_Loadgame_f().
|
static |
Definition at line 3358 of file prvm_edict.c.
References prvm_prog_t::firstfreeknownstring, flags, i, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_t::knownstrings_origin, prvm_prog_t::leaktest_active, prvm_prog_t::maxknownstrings, NULL, prvm_prog_t::numknownstrings, and PRVM_Alloc.
Referenced by PRVM_AllocString(), and PRVM_SetEngineString().
Definition at line 1925 of file prvm_edict.c.
References po_t::hashtable, i, po_string_t::key, Mem_Free, po_string_t::nextonhashchain, PO_HASHSIZE, and po_string_t::value.
Referenced by PRVM_Prog_Reset().
|
static |
Definition at line 1800 of file prvm_edict.c.
References buf, CRC_Block(), FS_LoadFile(), po_t::hashtable, i, po_string_t::key, MAX_INPUTLINE, Mem_Alloc, Mem_Free, mode, po_string_t::nextonhashchain, NULL, PO_HASHSIZE, PRVM_PO_ParseString(), strlen(), and po_string_t::value.
Referenced by PRVM_Prog_Load().
|
static |
Definition at line 1913 of file prvm_edict.c.
References CRC_Block(), po_t::hashtable, po_string_t::key, po_string_t::nextonhashchain, NULL, PO_HASHSIZE, strlen(), and po_string_t::value.
Referenced by PRVM_Prog_Load().
|
static |
Definition at line 1741 of file prvm_edict.c.
Referenced by PRVM_PO_Load().
|
static |
Definition at line 1700 of file prvm_edict.c.
Referenced by PRVM_Prog_Load().
void PRVM_Prog_Init | ( | prvm_prog_t * | prog, |
cmd_state_t * | cmd ) |
Definition at line 3267 of file prvm_edict.c.
References cmd(), prvm_prog_t::console_cmd, cvar_t::integer, prvm_prog_t::leaktest_active, prvm_leaktest, and PRVM_Prog_Reset().
void PRVM_Prog_Load | ( | prvm_prog_t * | prog, |
const char * | filename, | ||
unsigned char * | data, | ||
fs_offset_t | size, | ||
void | CheckRequiredFuncsprvm_prog_t *prog, const char *filename, | ||
int | numrequiredfields, | ||
prvm_required_field_t * | required_field, | ||
int | numrequiredglobals, | ||
prvm_required_field_t * | required_global ) |
Definition at line 2024 of file prvm_edict.c.
References prvm_eval_t::_float, a, b, dprograms_v7_t::blockscompressed, buf, CF_PRIVATE, CLVM_prog, Con_DPrintf(), Con_Printf(), CON_WARN, prvm_prog_t::console_cmd, dprograms_t::crc, CRC_Block(), Crypto_LoadKeys(), csqc_progname, cvar(), Cvar_FindVar(), Cvar_Get(), data, DEF_SAVEGLOBAL, dpsnprintf(), dprograms_t::entityfields, prvm_prog_t::entityfields, prvm_prog_t::error_cmd, ev_float, ev_string, ev_vector, prvm_prog_t::explicit_profile, f, prvm_prog_t::fielddefs, prvm_prog_t::filecrc, mfunction_t::first_statement, prvm_prog_t::flag, prvm_prog_t::fp, FS_Close(), FS_LoadFile(), FS_OpenRealFile(), FS_Printf(), prvm_prog_t::functions, prvm_prog_t::globaldefs, prvm_prog_t::globals, host, Host_LockSession(), i, prvm_prog_t::init_cmd, prvm_prog_t::inittime, int(), prvm_prog_t::ip, ISWHITESPACE, prvm_prog_t::knownstrings, prvm_prog_t::knownstrings_flags, prvm_prog_t::limit_edicts, LittleLong, LittleShort, prvm_prog_t::loaded, mfunction_t::locals, MAX_INPUTLINE, prvm_prog_t::maxknownstrings, Mem_Alloc, Mem_ExpandableArray_NewArray(), Mem_Free, name, prvm_prog_t::name, NULL, dprograms_v7_t::numbodylessfuncs, prvm_prog_t::numexplicitcoveragestatements, dprograms_t::numfielddefs, prvm_prog_t::numfielddefs, dprograms_t::numfunctions, prvm_prog_t::numfunctions, dprograms_t::numglobaldefs, prvm_prog_t::numglobaldefs, dprograms_t::numglobals, prvm_prog_t::numglobals, prvm_prog_t::numknownstrings, mfunction_t::numparms, dprograms_t::numstatements, prvm_prog_t::numstatements, dprograms_t::numstrings, prvm_prog_t::numstrings, dprograms_v7_t::numtypes, mdef_t::ofs, ofs, dprograms_t::ofs_fielddefs, dprograms_t::ofs_functions, dprograms_t::ofs_globaldefs, dprograms_t::ofs_globals, dprograms_t::ofs_statements, dprograms_t::ofs_strings, mstatement_t::op, OP_ADD_F, OP_ADD_FI, OP_ADD_I, OP_ADD_IF, OP_ADD_PIW, OP_ADD_V, OP_ADDRESS, OP_AND_F, OP_AND_FI, OP_AND_I, OP_AND_IF, OP_BITAND_F, OP_BITAND_FI, OP_BITAND_I, OP_BITAND_IF, OP_BITOR_F, OP_BITOR_FI, OP_BITOR_I, OP_BITOR_IF, OP_BOUNDCHECK, OP_CALL0, OP_CALL1, OP_CALL2, OP_CALL3, OP_CALL4, OP_CALL5, OP_CALL6, OP_CALL7, OP_CALL8, OP_CONV_FTOI, OP_CONV_ITOF, OP_DIV_F, OP_DIV_FI, OP_DIV_I, OP_DIV_IF, OP_DIV_U, OP_DIV_VF, OP_DONE, OP_EQ_E, OP_EQ_F, OP_EQ_FI, OP_EQ_FNC, OP_EQ_I, OP_EQ_IF, OP_EQ_S, OP_EQ_V, OP_GE_F, OP_GE_FI, OP_GE_I, OP_GE_IF, OP_GLOAD_ENT, OP_GLOAD_F, OP_GLOAD_FLD, OP_GLOAD_FNC, OP_GLOAD_I, OP_GLOAD_S, OP_GLOAD_V, OP_GLOBALADDRESS, OP_GOTO, OP_GSTOREP_ENT, OP_GSTOREP_F, OP_GSTOREP_FLD, OP_GSTOREP_FNC, OP_GSTOREP_I, OP_GSTOREP_S, OP_GSTOREP_V, OP_GT_F, OP_GT_FI, OP_GT_I, OP_GT_IF, OP_IF, OP_IFNOT, OP_LE_F, OP_LE_FI, OP_LE_I, OP_LE_IF, OP_LE_U, OP_LOAD_ENT, OP_LOAD_F, OP_LOAD_FLD, OP_LOAD_FNC, OP_LOAD_I, OP_LOAD_P, OP_LOAD_S, OP_LOAD_V, OP_LOADA_ENT, OP_LOADA_F, OP_LOADA_FLD, OP_LOADA_FNC, OP_LOADA_I, OP_LOADA_S, OP_LOADA_V, OP_LOADP_ENT, OP_LOADP_F, OP_LOADP_FLD, OP_LOADP_FNC, OP_LOADP_I, OP_LOADP_S, OP_LOADP_V, OP_LSHIFT_I, OP_LT_F, OP_LT_FI, OP_LT_I, OP_LT_IF, OP_LT_U, OP_MUL_F, OP_MUL_FI, OP_MUL_FV, OP_MUL_I, OP_MUL_IF, OP_MUL_V, OP_MUL_VF, OP_MUL_VI, OP_NE_E, OP_NE_F, OP_NE_FI, OP_NE_FNC, OP_NE_I, OP_NE_IF, OP_NE_S, OP_NE_V, OP_NOT_ENT, OP_NOT_F, OP_NOT_FNC, OP_NOT_I, OP_NOT_S, OP_NOT_V, OP_OR_F, OP_OR_FI, OP_OR_I, OP_OR_IF, OP_RETURN, OP_RSHIFT_I, OP_RSHIFT_U, OP_STATE, OP_STORE_ENT, OP_STORE_F, OP_STORE_FLD, OP_STORE_FNC, OP_STORE_I, OP_STORE_P, OP_STORE_S, OP_STORE_V, OP_STOREP_ENT, OP_STOREP_F, OP_STOREP_FLD, OP_STOREP_FNC, OP_STOREP_I, OP_STOREP_S, OP_STOREP_V, OP_SUB_F, OP_SUB_FI, OP_SUB_I, OP_SUB_IF, OP_SUB_V, mstatement_t::operand, dfunction_t::parm_size, mfunction_t::parm_size, mfunction_t::parm_start, prvm_prog_t::profiletime, PROG_SECONDARYVERSION16, PROG_SECONDARYVERSION32, PROG_VERSION, prvm_prog_t::progs_crc, prvm_prog_t::progs_entityfields, prvm_prog_t::progs_mempool, prvm_prog_t::progs_numfielddefs, prvm_prog_t::progs_numfunctions, prvm_prog_t::progs_numglobaldefs, prvm_prog_t::progs_numglobals, prvm_prog_t::progs_numstatements, prvm_prog_t::progs_numstrings, prvm_prog_t::progs_version, PRVM_CSQC_SIMPLE, PRVM_FindOffsets(), PRVM_GetString(), PRVM_GLOBALFIELDVALUE, PRVM_Init_Exec(), prvm_language, PRVM_LoadLNO(), PRVM_MEM_Alloc(), PRVM_PO_Load(), PRVM_PO_Lookup(), PRVM_PO_UnparseString(), prvm_prog_list, PRVM_SetEngineString(), PRVM_UpdateBreakpoints(), host_static_t::realtime, remapglobal, mfunction_t::s_file, mdef_t::s_name, mfunction_t::s_name, dprograms_v7_t::secondaryversion, size, prvm_prog_t::starttime, prvm_prog_t::statement_profile, prvm_prog_t::statements, cvar_t::string, prvm_eval_t::string, prvm_prog_t::stringbuffersarray, prvm_prog_t::strings, prvm_prog_t::stringssize, strlen(), Sys_DirtyTime(), mdef_t::type, prvm_required_field_t::type, type, va(), value, prvm_eval_t::vector, VectorClear, and dprograms_t::version.
Referenced by CL_VM_Init(), MP_Init(), and SV_VM_Setup().
void PRVM_Prog_Reset | ( | prvm_prog_t * | prog | ) |
Definition at line 1944 of file prvm_edict.c.
References prvm_prog_t::break_statement, sizebuf_t::cursize, sizebuf_t::data, ev_void, prvm_prog_t::loaded, Mem_Free, Mem_FreePool, prvm_prog_t::po, prvm_prog_t::progs_mempool, PRVM_LeakTest(), PRVM_PO_Destroy(), prvm_prog_t::reset_cmd, prvm_prog_t::tempstringsbuf, prvm_prog_t::watch_field_type, and prvm_prog_t::watch_global_type.
Referenced by CL_VM_ShutDown(), MP_Shutdown(), PRVM_Crash(), PRVM_Prog_Init(), and SV_VM_Shutdown().
prvm_prog_t * PRVM_ProgFromString | ( | const char * | str | ) |
Definition at line 166 of file prvm_edict.c.
References CLVM_prog, NULL, and SVVM_prog.
Referenced by PRVM_Breakpoint_f(), PRVM_EdictWatchpoint_f(), PRVM_FriendlyProgFromString(), and PRVM_GlobalWatchpoint_f().
int PRVM_SetEngineString | ( | prvm_prog_t * | prog, |
const char * | s ) |
Definition at line 3390 of file prvm_edict.c.
References Con_DPrintf(), sizebuf_t::data, developer_insane, prvm_prog_t::error_cmd, prvm_prog_t::firstfreeknownstring, i, cvar_t::integer, KNOWNSTRINGFLAG_ENGINE, KNOWNSTRINGFLAG_GCMARK, prvm_prog_t::knownstrings, sizebuf_t::maxsize, prvm_prog_t::numknownstrings, PRVM_KNOWNSTRINGBASE, PRVM_NewKnownString(), prvm_prog_t::strings, prvm_prog_t::stringssize, and prvm_prog_t::tempstringsbuf.
Referenced by CL_VM_Init(), PRVM_Prog_Load(), PRVM_SetTempString(), SV_Name(), SV_Playermodel_f(), SV_Playerskin_f(), SV_SpawnServer(), SV_UpdateToReliableMessages(), SVVM_init_edict(), VM_CL_modelnameforindex(), VM_CL_setmodel(), VM_CL_setmodelindex(), VM_SV_modelnameforindex(), VM_SV_setmodel(), and VM_SV_setmodelindex().
int PRVM_SetTempString | ( | prvm_prog_t * | prog, |
const char * | s, | ||
size_t | slen ) |
Takes an strlen (not a buffer size).
Definition at line 3423 of file prvm_edict.c.
References Con_DPrintf(), sizebuf_t::cursize, sizebuf_t::data, developer_insane, prvm_prog_t::error_cmd, cvar_t::integer, max, sizebuf_t::maxsize, Mem_Alloc, Mem_Free, prvm_prog_t::name, NULL, prvm_prog_t::progs_mempool, PRVM_SetEngineString(), size, prvm_prog_t::tempstringsbuf, and VM_TEMPSTRING_MAXSIZE.
Referenced by CL_VM_Event_Sound(), CL_VM_Parse_CenterPrint(), CL_VM_Parse_Print(), CL_VM_Parse_StuffCmd(), PRVM_ConsoleCommand(), PRVM_GameCommand(), SV_ReadClientMessage(), uri_to_string_callback(), VM_altstr_get(), VM_altstr_ins(), VM_altstr_prepare(), VM_altstr_set(), VM_buf_implode(), VM_bufstr_get(), VM_chr(), VM_chr2str(), VM_CL_getextresponse(), VM_CL_getplayerkey(), VM_CL_getstats(), VM_CL_gettaginfo(), VM_CL_ReadPicture(), VM_CL_ReadString(), VM_CL_serverkey(), VM_CL_skel_get_bonename(), VM_cvar_defstring(), VM_cvar_description(), VM_cvar_string(), VM_digest_hex(), VM_entityfieldname(), VM_etos(), VM_fgets(), VM_findkeysforcommand(), VM_ftos(), VM_getentityfieldstring(), VM_getkeybind(), VM_getsurfacetexture(), VM_infoadd(), VM_infoget(), VM_keynumtostring(), VM_M_crypto_getencryptlevel(), VM_M_crypto_getidfp(), VM_M_crypto_getkeyfp(), VM_M_crypto_getmyidfp(), VM_M_crypto_getmykeyfp(), VM_M_getgamedirinfo(), VM_M_getserverliststring(), VM_netaddress_resolve(), VM_search_getfilename(), VM_SetTraceGlobals(), VM_sprintf(), VM_strcat(), VM_strconv(), VM_strdecolorize(), VM_strftime(), VM_strireplace(), VM_strpad(), VM_strreplace(), VM_strtolower(), VM_strtoupper(), VM_substring(), VM_SV_getextresponse(), VM_SV_gettaginfo(), VM_SV_serverkey(), VM_SV_skel_get_bonename(), VM_tokenize(), VM_tokenize_console(), VM_tokenizebyseparator(), VM_uncolorstring(), VM_uri_escape(), VM_uri_unescape(), VM_vtos(), and VM_whichpack().
char * PRVM_UglyValueString | ( | prvm_prog_t * | prog, |
etype_t | type, | ||
prvm_eval_t * | val, | ||
char * | line, | ||
size_t | linelength ) |
Definition at line 513 of file prvm_edict.c.
References prvm_eval_t::_float, prvm_eval_t::_int, DEF_SAVEGLOBAL, dp_strlcpy, dpsnprintf(), prvm_eval_t::edict, ev_entity, ev_field, ev_float, ev_function, ev_string, ev_vector, ev_void, f, prvm_eval_t::function, prvm_prog_t::functions, i, int(), NULL, prvm_prog_t::progs_numfunctions, PRVM_ED_FieldAtOfs(), PRVM_FLOAT_LOSSLESS_FORMAT, PRVM_GetString(), PRVM_PRIi, PRVM_VECTOR_LOSSLESS_FORMAT, mdef_t::s_name, prvm_eval_t::string, type, and prvm_eval_t::vector.
Referenced by PRVM_ED_EdictGet_f(), PRVM_ED_GlobalGet_f(), PRVM_ED_Write(), PRVM_ED_WriteGlobals(), PRVM_Watchpoint(), and VM_getentityfieldstring().
|
static |
Definition at line 3025 of file prvm_edict.c.
References prvm_prog_t::break_stack_index, debug_data_t::break_statement, prvm_prog_t::break_statement, Con_Printf(), debug_data, DEF_SAVEGLOBAL, ev_vector, ev_void, mfunction_t::first_statement, prvm_prog_t::loaded, prvm_prog_t::name, prvm_prog_t::num_edicts, mdef_t::ofs, PRVM_ED_FindField(), PRVM_ED_FindFunction(), PRVM_ED_FindGlobal(), PRVM_EDICT_NUM, PRVM_EDICTFIELDVALUE, PRVM_GLOBALFIELDVALUE, prvm_prog_list, mdef_t::type, debug_data_t::watch_edict, prvm_prog_t::watch_edict, prvm_prog_t::watch_edictfield_value, debug_data_t::watch_field, prvm_prog_t::watch_field, prvm_prog_t::watch_field_type, debug_data_t::watch_global, prvm_prog_t::watch_global, prvm_prog_t::watch_global_type, and prvm_prog_t::watch_global_value.
Referenced by PRVM_Breakpoint_f(), PRVM_EdictWatchpoint_f(), PRVM_GlobalWatchpoint_f(), and PRVM_Prog_Load().
|
static |
Definition at line 447 of file prvm_edict.c.
References prvm_eval_t::_float, prvm_eval_t::_int, DEF_SAVEGLOBAL, dp_strlcpy, dpsnprintf(), prvm_eval_t::edict, ev_entity, ev_field, ev_float, ev_function, ev_pointer, ev_string, ev_vector, ev_void, f, prvm_eval_t::function, prvm_prog_t::functions, prvm_prog_t::max_edicts, n, NULL, prvm_prog_t::progs_numfunctions, PRVM_ED_FieldAtOfs(), PRVM_FLOAT_LOSSLESS_FORMAT, PRVM_GetString(), PRVM_PRIi, PRVM_VECTOR_LOSSLESS_FORMAT, mdef_t::s_name, prvm_eval_t::string, type, and prvm_eval_t::vector.
Referenced by PRVM_ED_Print(), PRVM_Global_f(), and PRVM_GlobalString().
void PRVM_Watchpoint | ( | prvm_prog_t * | prog, |
int | stack_index, | ||
const char * | text, | ||
etype_t | type, | ||
prvm_eval_t * | o, | ||
prvm_eval_t * | n ) |
Definition at line 3009 of file prvm_edict.c.
References buf, DEF_SAVEGLOBAL, dpsnprintf(), ev_vector, n, PRVM_Breakpoint(), PRVM_UglyValueString(), and type.
Referenced by while().
|
static |
Definition at line 2998 of file prvm_edict.c.
Referenced by PRVM_Breakpoint_f(), PRVM_EdictWatchpoint_f(), PRVM_GlobalWatchpoint_f(), and PRVM_UpdateBreakpoints().
cvar_t prvm_backtraceforwarnings = {CF_CLIENT | CF_SERVER, "prvm_backtraceforwarnings", "0", "print a backtrace for warnings too"} |
prvm_eval_t prvm_badvalue |
Definition at line 31 of file prvm_edict.c.
cvar_t prvm_breakpointdump = {CF_CLIENT | CF_SERVER, "prvm_breakpointdump", "0", "write a savegame on breakpoint to breakpoint-server.dmp"} |
cvar_t prvm_coverage = {CF_CLIENT | CF_SERVER, "prvm_coverage", "0", "report and count coverage events (1: per-function, 2: coverage() builtin, 4: per-statement)"} |
Definition at line 39 of file prvm_edict.c.
Referenced by CLVM_ExecuteProgram(), PRVM_ChildProfile_f(), PRVM_Init(), PRVM_PrintFunctionStatements(), PRVM_Profile_f(), SVVM_ExecuteProgram(), VM_coverage(), and while().
cvar_t prvm_errordump = {CF_CLIENT | CF_SERVER, "prvm_errordump", "0", "write a savegame on crash to crash-server.dmp"} |
Definition at line 44 of file prvm_edict.c.
Referenced by PRVM_Crash(), and PRVM_Init().
cvar_t prvm_gameplayfix_div0is0 = {CF_SERVER, "prvm_gameplayfix_div0is0", "0", "When set to 1, floating point division by 0 will return zero instead of returning the IEEE standardized result (likely nan or inf). Other ways of getting non-finite values are not affected, and the warning will still print."} |
Definition at line 57 of file prvm_edict.c.
Referenced by PRVM_Init(), and while().
cvar_t prvm_garbagecollection_enable = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_enable", "1", "automatically scan for and free resources that are not referenced by the code being executed in the VM"} |
Definition at line 48 of file prvm_edict.c.
Referenced by PRVM_GarbageCollection(), PRVM_Init(), and while().
cvar_t prvm_garbagecollection_notify = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_notify", "0", "print out a notification for each resource freed by garbage collection (set developer >= 1 to see these)"} |
Definition at line 49 of file prvm_edict.c.
Referenced by PRVM_GarbageCollection(), and PRVM_Init().
cvar_t prvm_garbagecollection_scan_limit = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_scan_limit", "50000", "scan this many fields or resources per second to free up unreferenced resources"} |
At 50k in Xonotic with 8 bots scans take about: 24s server, 25s menu, 9s client.
At 50k in Quake 1.5: 2.2s server, 0.14s client. At 50k impact on high FPS benchmarks is negligible, at 100k impact is low but measurable.
Definition at line 53 of file prvm_edict.c.
Referenced by PRVM_GarbageCollection(), and PRVM_Init().
cvar_t prvm_garbagecollection_strings = {CF_CLIENT | CF_SERVER, "prvm_garbagecollection_strings", "1", "automatically call strunzone() on strings that are not referenced"} |
Definition at line 54 of file prvm_edict.c.
Referenced by PRVM_GarbageCollection(), and PRVM_Init().
cvar_t prvm_language = {CF_CLIENT | CF_SERVER | CF_ARCHIVE, "prvm_language", "", "when set, loads PROGSFILE.LANGUAGENAME.po and common.LANGUAGENAME.po for string translations; when set to dump, PROGSFILE.pot is written from the strings in the progs"} |
Definition at line 33 of file prvm_edict.c.
Referenced by PRVM_Init(), and PRVM_Prog_Load().
cvar_t prvm_leaktest = {CF_CLIENT | CF_SERVER, "prvm_leaktest", "0", "try to detect memory leaks in strings or entities"} |
cvar_t prvm_leaktest_follow_targetname = {CF_CLIENT | CF_SERVER, "prvm_leaktest_follow_targetname", "0", "if set, target/targetname links are considered when leak testing; this should normally not be required, as entities created during startup - e.g. info_notnull - are never considered leaky"} |
Definition at line 42 of file prvm_edict.c.
Referenced by PRVM_Init(), and PRVM_IsEdictReferenced().
cvar_t prvm_leaktest_ignore_classnames = {CF_CLIENT | CF_SERVER, "prvm_leaktest_ignore_classnames", "", "classnames of entities to NOT leak check because they are found by find(world, classname, ...) but are actually spawned by QC code (NOT map entities)"} |
prvm_prog_t prvm_prog_list[PRVM_PROG_MAX] |
Definition at line 27 of file prvm_edict.c.
Referenced by Cvar_IsAutoCvar(), Cvar_UpdateAutoCvar(), PRVM_Breakpoint_f(), PRVM_EdictWatchpoint_f(), PRVM_GlobalWatchpoint_f(), PRVM_Prog_Load(), and PRVM_UpdateBreakpoints().
|
static |
Definition at line 59 of file prvm_edict.c.
Referenced by PRVM_ED_CanAlloc(), and PRVM_ED_LoadFromFile().
cvar_t prvm_reuseedicts_neverinsameframe = {CF_CLIENT | CF_SERVER, "prvm_reuseedicts_neverinsameframe", "1", "never allows re-use of freed entity slots during same frame"} |
cvar_t prvm_reuseedicts_startuptime = {CF_CLIENT | CF_SERVER, "prvm_reuseedicts_startuptime", "2", "allows immediate re-use of freed entity slots during start of new level (value in seconds)"} |
Definition at line 60 of file prvm_edict.c.
Referenced by Cbuf_Execute(), PRVM_Init(), and while().
cvar_t prvm_statementprofiling = {CF_CLIENT | CF_SERVER, "prvm_statementprofiling", "0", "counts how many times each QuakeC statement has been executed, these counts are displayed in prvm_printfunction output (if enabled)"} |
cvar_t prvm_stringdebug = {CF_CLIENT | CF_SERVER, "prvm_stringdebug", "0", "Print debug and warning messages related to strings"} |
cvar_t prvm_timeprofiling = {CF_CLIENT | CF_SERVER, "prvm_timeprofiling", "0", "counts how long each function has been executed, these counts are displayed in prvm_profile output (if enabled)"} |
Definition at line 38 of file prvm_edict.c.
Referenced by CLVM_ExecuteProgram(), PRVM_Init(), PRVM_Profile(), and SVVM_ExecuteProgram().
cvar_t prvm_traceqc = {CF_CLIENT | CF_SERVER, "prvm_traceqc", "0", "prints every QuakeC statement as it is executed (only for really thorough debugging!)"} |
Definition at line 35 of file prvm_edict.c.
Referenced by CLVM_ExecuteProgram(), PRVM_Init(), and SVVM_ExecuteProgram().
for consistency : I think a goal of this sub-project is to make the new vm mostly independent from the old one, thus if it's necessary, I copy everything
Definition at line 29 of file prvm_edict.c.
Referenced by PRVM_ED_Print(), PRVM_ED_Write(), PRVM_Fields_f(), and VM_getentityfieldstring().
cvar_t sv_entfields_noescapes = {CF_SERVER, "sv_entfields_noescapes", "wad", "Space-separated list of fields in which backslashes won't be parsed as escapes when loading entities from .bsp or .ent files. This is a workaround for buggy maps with unescaped backslashes used as path separators (only forward slashes are allowed in Quake VFS paths)."} |
Definition at line 56 of file prvm_edict.c.
Referenced by PRVM_ED_ParseEdict(), and PRVM_Init().