#include "quakedef.h"
#include "progsvm.h"
-char *prvm_opnames[] =
+const char *prvm_opnames[] =
{
"^5DONE",
*/
extern cvar_t prvm_statementprofiling;
extern cvar_t prvm_timeprofiling;
-void PRVM_PrintStatement (dstatement_t *s)
+void PRVM_PrintStatement(mstatement_t *s)
{
size_t i;
int opnum = (int)(s - prog->statements);
for ( ; i<10 ; i++)
Con_Print(" ");
}
- if (s->op == OP_IF || s->op == OP_IFNOT)
- Con_Printf("%s, s%i",PRVM_GlobalString((unsigned short) s->a),(signed short)s->b + opnum);
- else if (s->op == OP_GOTO)
- Con_Printf("s%i",(signed short)s->a + opnum);
- else if ( (unsigned)(s->op - OP_STORE_F) < 6)
- {
- Con_Print(PRVM_GlobalString((unsigned short) s->a));
- Con_Print(", ");
- Con_Print(PRVM_GlobalStringNoContents((unsigned short) s->b));
- }
- else if (s->op == OP_ADDRESS || (unsigned)(s->op - OP_LOAD_F) < 6)
- {
- if (s->a)
- Con_Print(PRVM_GlobalString((unsigned short) s->a));
- if (s->b)
- {
- Con_Print(", ");
- Con_Print(PRVM_GlobalStringNoContents((unsigned short) s->b));
- }
- if (s->c)
- {
- Con_Print(", ");
- Con_Print(PRVM_GlobalStringNoContents((unsigned short) s->c));
- }
- }
- else
- {
- if (s->a)
- Con_Print(PRVM_GlobalString((unsigned short) s->a));
- if (s->b)
- {
- Con_Print(", ");
- Con_Print(PRVM_GlobalString((unsigned short) s->b));
- }
- if (s->c)
- {
- Con_Print(", ");
- Con_Print(PRVM_GlobalStringNoContents((unsigned short) s->c));
- }
- }
+ if (s->operand[0] >= 0) Con_Printf( "%s", PRVM_GlobalString(s->operand[0]));
+ if (s->operand[1] >= 0) Con_Printf(", %s", PRVM_GlobalString(s->operand[1]));
+ if (s->operand[2] >= 0) Con_Printf(", %s", PRVM_GlobalString(s->operand[2]));
+ if (s->jumpabsolute >= 0) Con_Printf(", statement %i", s->jumpabsolute);
Con_Print("\n");
}
}
// find the end statement
- endstatement = prog->progs->numstatements;
- for (i = 0;i < prog->progs->numfunctions;i++)
+ endstatement = prog->numstatements;
+ for (i = 0;i < prog->numfunctions;i++)
if (endstatement > prog->functions[i].first_statement && firststatement < prog->functions[i].first_statement)
endstatement = prog->functions[i].first_statement;
{
max = 0;
best = NULL;
- for (i=0 ; i<prog->progs->numfunctions ; i++)
+ for (i=0 ; i<prog->numfunctions ; i++)
{
f = &prog->functions[i];
if (max < f->totaltime)
{
max = 0;
best = NULL;
- for (i=0 ; i<prog->progs->numfunctions ; i++)
+ for (i=0 ; i<prog->numfunctions ; i++)
{
f = &prog->functions[i];
if(prvm_timeprofiling.integer)
if (prog == NULL)
return;
- prog->funcoffsets.SV_Shutdown = 0; // don't call SV_Shutdown on crash
+ PRVM_serverfunction(SV_Shutdown) = 0; // don't call SV_Shutdown on crash
if( prog->depth > 0 )
{
// nothing here yet
}
-#define OPA ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->a])
-#define OPB ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->b])
-#define OPC ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->c])
+#define OPA ((prvm_eval_t *)&prog->globals.generic[st->operand[0]])
+#define OPB ((prvm_eval_t *)&prog->globals.generic[st->operand[1]])
+#define OPC ((prvm_eval_t *)&prog->globals.generic[st->operand[2]])
extern cvar_t prvm_traceqc;
extern cvar_t prvm_statementprofiling;
extern sizebuf_t vm_tempstringsbuf;
*/
void MVM_ExecuteProgram (func_t fnum, const char *errormessage)
{
- dstatement_t *st, *startst;
+ mstatement_t *st, *startst;
mfunction_t *f, *newf;
prvm_edict_t *ed;
prvm_eval_t *ptr;
calltime = Sys_DoubleTime();
- if (!fnum || fnum >= (unsigned int)prog->progs->numfunctions)
+ if (!fnum || fnum >= (unsigned int)prog->numfunctions)
{
- if (prog->globaloffsets.self >= 0 && PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict)
- PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict), NULL);
+ if (PRVM_allglobaledict(self))
+ PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_allglobaledict(self)), NULL);
PRVM_ERROR ("MVM_ExecuteProgram: %s", errormessage);
}
*/
void CLVM_ExecuteProgram (func_t fnum, const char *errormessage)
{
- dstatement_t *st, *startst;
+ mstatement_t *st, *startst;
mfunction_t *f, *newf;
prvm_edict_t *ed;
prvm_eval_t *ptr;
calltime = Sys_DoubleTime();
- if (!fnum || fnum >= (unsigned int)prog->progs->numfunctions)
+ if (!fnum || fnum >= (unsigned int)prog->numfunctions)
{
- if (prog->globaloffsets.self >= 0 && PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict)
- PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict), NULL);
+ if (PRVM_allglobaledict(self))
+ PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_allglobaledict(self)), NULL);
PRVM_ERROR ("CLVM_ExecuteProgram: %s", errormessage);
}
*/
void SVVM_ExecuteProgram (func_t fnum, const char *errormessage)
{
- dstatement_t *st, *startst;
+ mstatement_t *st, *startst;
mfunction_t *f, *newf;
prvm_edict_t *ed;
prvm_eval_t *ptr;
calltime = Sys_DoubleTime();
- if (!fnum || fnum >= (unsigned int)prog->progs->numfunctions)
+ if (!fnum || fnum >= (unsigned int)prog->numfunctions)
{
- if (prog->globaloffsets.self >= 0 && PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict)
- PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_GLOBALFIELDVALUE(prog->globaloffsets.self)->edict), NULL);
+ if (PRVM_allglobaledict(self))
+ PRVM_ED_Print(PRVM_PROG_TO_EDICT(PRVM_allglobaledict(self)), NULL);
PRVM_ERROR ("SVVM_ExecuteProgram: %s", errormessage);
}