[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