- prog->xfunction->profile += (st - startst);
- prog->xstatement = st - prog->statements;
- PRVM_ERROR ("Bad opcode %i in %s", st->op, PRVM_NAME);
+ PreError();
+ prog->error_cmd("Bad opcode %i in %s", st->op, prog->name);
+ goto cleanup;
+ }
+#if PRVMSLOWINTERPRETER
+ {
+ char vabuf[1024];
+ if (prog->watch_global >= 0)
+ {
+ prvm_vec_t f = PRVM_GLOBALFIELDFLOAT(prog->watch_global);
+ if (memcmp(&f, &prog->watch_global_value, sizeof(f)))
+ {
+ prog->xstatement = st - prog->statements;
+ PRVM_Breakpoint(prog, 0, va(vabuf, sizeof(vabuf), "Global watchpoint hit: " FLOAT_LOSSLESS_FORMAT " -> " FLOAT_LOSSLESS_FORMAT, prog->watch_global_value, f));
+ prog->watch_global_value = f;
+ }
+ }
+ if (prog->watch_edict >= 0 && prog->watch_edict < prog->max_edicts)
+ {
+ prvm_vec_t f = PRVM_EDICTFIELDFLOAT(prog->edicts + prog->watch_edict, prog->watch_field);
+ if (memcmp(&f, &prog->watch_edictfield_value, sizeof(f)))
+ {
+ prog->xstatement = st - prog->statements;
+ PRVM_Breakpoint(prog, 0, va(vabuf, sizeof(vabuf), "Entityfield watchpoint hit: " FLOAT_LOSSLESS_FORMAT " -> " FLOAT_LOSSLESS_FORMAT, prog->watch_edictfield_value, f));
+ prog->watch_edictfield_value = f;
+ }
+ }