[Scummvm-cvs-logs] SF.net SVN: scummvm:[44241] scummvm/trunk/engines/sci/engine/vm.cpp
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Mon Sep 21 23:39:00 CEST 2009
Revision: 44241
http://scummvm.svn.sourceforge.net/scummvm/?rev=44241&view=rev
Author: fingolfin
Date: 2009-09-21 21:39:00 +0000 (Mon, 21 Sep 2009)
Log Message:
-----------
SCI: cleanup
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/vm.cpp
Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp 2009-09-21 21:38:43 UTC (rev 44240)
+++ scummvm/trunk/engines/sci/engine/vm.cpp 2009-09-21 21:39:00 UTC (rev 44241)
@@ -52,13 +52,14 @@
int script_gc_interval = GC_INTERVAL; // Number of steps in between gcs // FIXME: Avoid non-const global vars
static bool breakpointFlag = false; // FIXME: Avoid non-const global vars
-static reg_t _dummy_register; // FIXME: Avoid non-const global vars
// validation functionality
#ifndef DISABLE_VALIDATIONS
static reg_t &validate_property(Object *obj, int index) {
+ static reg_t _dummy_register;
+
if (!obj) {
debugC(2, kDebugLevelVM, "[VM] Sending to disposed object!\n");
_dummy_register = NULL_REG;
@@ -246,12 +247,13 @@
// Executes all varselector read/write ops on the TOS
while (!s->_executionStack.empty() && s->_executionStack.back().type == EXEC_STACK_TYPE_VARSELECTOR) {
ExecStack &xs = s->_executionStack.back();
+ reg_t *var = xs.getVarPointer(s->segMan);
// varselector access?
if (xs.argc) { // write?
- *(xs.getVarPointer(s->segMan)) = xs.variables_argp[1];
+ *var = xs.variables_argp[1];
} else // No, read
- s->r_acc = *(xs.getVarPointer(s->segMan));
+ s->r_acc = *var;
s->_executionStack.pop_back();
}
@@ -699,8 +701,6 @@
error("opcode %02x: Invalid", opcode);
}
- // TODO: Replace the following by an opcode table, and several methods for
- // each opcode.
switch (opnumber) {
case 0x00: // bnot
@@ -1009,10 +1009,11 @@
if (old_xs->type == EXEC_STACK_TYPE_VARSELECTOR) {
// varselector access?
+ reg_t *var = old_xs->getVarPointer(s->segMan);
if (old_xs->argc) // write?
- *(old_xs->getVarPointer(s->segMan)) = old_xs->variables_argp[1];
+ *var = old_xs->variables_argp[1];
else // No, read
- s->r_acc = *(old_xs->getVarPointer(s->segMan));
+ s->r_acc = *var;
}
// Not reached the base, so let's do a soft return
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list