[Scummvm-cvs-logs] SF.net SVN: scummvm:[49159] scummvm/trunk/engines/sci/engine
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Sun May 23 18:44:37 CEST 2010
Revision: 49159
http://scummvm.svn.sourceforge.net/scummvm/?rev=49159&view=rev
Author: thebluegr
Date: 2010-05-23 16:44:36 +0000 (Sun, 23 May 2010)
Log Message:
-----------
Made shrink_execution_stack() a member of EngineState
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kmisc.cpp
scummvm/trunk/engines/sci/engine/savegame.cpp
scummvm/trunk/engines/sci/engine/state.cpp
scummvm/trunk/engines/sci/engine/state.h
scummvm/trunk/engines/sci/engine/vm.cpp
scummvm/trunk/engines/sci/engine/vm.h
Modified: scummvm/trunk/engines/sci/engine/kmisc.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmisc.cpp 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/kmisc.cpp 2010-05-23 16:44:36 UTC (rev 49159)
@@ -39,7 +39,7 @@
s->restarting_flags |= SCI_GAME_IS_RESTARTING_NOW;
s->restarting_flags &= ~SCI_GAME_WAS_RESTARTED_AT_LEAST_ONCE; // This appears to help
- shrink_execution_stack(s, s->execution_stack_base + 1);
+ s->shrinkStackToBase();
script_abort_flag = 1; // Force vm to abort ASAP
return NULL_REG;
Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp 2010-05-23 16:44:36 UTC (rev 49159)
@@ -1025,7 +1025,7 @@
s->successor = retval; // Set successor
script_abort_flag = 2; // Abort current game with replay
- shrink_execution_stack(s, s->execution_stack_base + 1);
+ s->shrinkStackToBase();
}
bool get_savegame_metadata(Common::SeekableReadStream *stream, SavegameMetadata *meta) {
Modified: scummvm/trunk/engines/sci/engine/state.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/state.cpp 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/state.cpp 2010-05-23 16:44:36 UTC (rev 49159)
@@ -135,6 +135,15 @@
script_000->_localsBlock->_locals[13] = make_reg(0, roomNumber);
}
+void EngineState::shrinkStackToBase() {
+ uint size = execution_stack_base + 1;
+ assert(_executionStack.size() >= size);
+ Common::List<ExecStack>::iterator iter = _executionStack.begin();
+ for (uint i = 0; i < size; ++i)
+ ++iter;
+ _executionStack.erase(iter, _executionStack.end());
+}
+
static kLanguage charToLanguage(const char c) {
switch (c) {
case 'F':
Modified: scummvm/trunk/engines/sci/engine/state.h
===================================================================
--- scummvm/trunk/engines/sci/engine/state.h 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/state.h 2010-05-23 16:44:36 UTC (rev 49159)
@@ -155,6 +155,12 @@
uint16 currentRoomNumber() const;
void setRoomNumber(uint16 roomNumber);
+ /**
+ * Shrink execution stack to size.
+ * Contains an assert it is not already smaller.
+ */
+ void shrinkStackToBase();
+
/* System strings */
SegmentId sys_strings_segment;
SystemStrings *sys_strings;
Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/vm.cpp 2010-05-23 16:44:36 UTC (rev 49159)
@@ -724,7 +724,7 @@
}
if (!restoring)
- s->execution_stack_base = s->_executionStack.size()-1;
+ s->execution_stack_base = s->_executionStack.size() - 1;
#ifndef DISABLE_VALIDATIONS
// Initialize maximum variable count
@@ -1183,7 +1183,7 @@
StackPtr old_fp = scriptState.xs->fp;
ExecStack *old_xs = &(s->_executionStack.back());
- if ((int)s->_executionStack.size()-1 == s->execution_stack_base) { // Have we reached the base?
+ if ((int)s->_executionStack.size() - 1 == s->execution_stack_base) { // Have we reached the base?
s->execution_stack_base = old_execution_stack_base; // Restore stack base
s->_executionStack.pop_back();
@@ -1756,15 +1756,6 @@
g_debugState.runningStep = 0;
}
-void shrink_execution_stack(EngineState *s, uint size) {
- assert(s->_executionStack.size() >= size);
- Common::List<ExecStack>::iterator iter;
- iter = s->_executionStack.begin();
- for (uint i = 0; i < size; ++i)
- ++iter;
- s->_executionStack.erase(iter, s->_executionStack.end());
-}
-
reg_t* ObjVarRef::getPointer(SegManager *segMan) const {
Object *o = segMan->getObject(obj);
if (!o) return 0;
Modified: scummvm/trunk/engines/sci/engine/vm.h
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.h 2010-05-23 16:42:49 UTC (rev 49158)
+++ scummvm/trunk/engines/sci/engine/vm.h 2010-05-23 16:44:36 UTC (rev 49159)
@@ -469,12 +469,6 @@
void quit_vm();
/**
- * Shrink execution stack to size.
- * Contains an assert it is not already smaller.
- */
-void shrink_execution_stack(EngineState *s, uint size);
-
-/**
* Read a PMachine instruction from a memory buffer and return its length.
*
* @param[in] src address from which to start parsing
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