[Scummvm-cvs-logs] scummvm master -> 0642b30933b464ddffff591ca672345d0ec55103

bluegr md5 at scummvm.org
Tue Mar 8 13:47:03 CET 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
0642b30933 SCI: Cleanup


Commit: 0642b30933b464ddffff591ca672345d0ec55103
    https://github.com/scummvm/scummvm/commit/0642b30933b464ddffff591ca672345d0ec55103
Author: md5 (md5 at scummvm.org)
Date: 2011-03-08T04:46:03-08:00

Commit Message:
SCI: Cleanup

Changed paths:
    engines/sci/engine/gc.cpp
    engines/sci/engine/segment.cpp
    engines/sci/engine/segment.h



diff --git a/engines/sci/engine/gc.cpp b/engines/sci/engine/gc.cpp
index 6d00c20..1f24e68 100644
--- a/engines/sci/engine/gc.cpp
+++ b/engines/sci/engine/gc.cpp
@@ -31,6 +31,24 @@ namespace Sci {
 
 //#define GC_DEBUG_CODE
 
+#ifdef GC_DEBUG_CODE
+const char *segmentTypeNames[] = {
+	"invalid",   // 0
+	"script",    // 1
+	"clones",    // 2
+	"locals",    // 3
+	"stack",     // 4
+	"obsolete",  // 5: obsolete system strings
+	"lists",     // 6
+	"nodes",     // 7
+	"hunk",      // 8
+	"dynmem",    // 9
+	"obsolete",  // 10: obsolete system strings
+	"array",     // 11: SCI32 arrays
+	"string"     // 12: SCI32 strings
+};
+#endif
+
 struct WorklistManager {
 	Common::Array<reg_t> _worklist;
 	AddrSet _map;	// used for 2 contains() calls, inside push() and run_gc()
@@ -186,7 +204,7 @@ void run_gc(EngineState *s) {
 		if (mobj != NULL) {
 #ifdef GC_DEBUG_CODE
 			const SegmentType type = mobj->getType();
-			segnames[type] = SegmentObj::getSegmentTypeName(type);
+			segnames[type] = segmentTypeNames[type];
 #endif
 
 			// Get a list of all deallocatable objects in this segment,
diff --git a/engines/sci/engine/segment.cpp b/engines/sci/engine/segment.cpp
index d1f56f0..2af4771 100644
--- a/engines/sci/engine/segment.cpp
+++ b/engines/sci/engine/segment.cpp
@@ -39,7 +39,6 @@ namespace Sci {
 //#define GC_DEBUG // Debug garbage collection
 //#define GC_DEBUG_VERBOSE // Debug garbage verbosely
 
-
 SegmentObj *SegmentObj::createSegmentObj(SegmentType type) {
 	SegmentObj *mem = 0;
 	switch (type) {
@@ -85,47 +84,6 @@ SegmentObj *SegmentObj::createSegmentObj(SegmentType type) {
 	return mem;
 }
 
-const char *SegmentObj::getSegmentTypeName(SegmentType type) {
-	switch (type) {
-	case SEG_TYPE_SCRIPT:
-		return "script";
-		break;
-	case SEG_TYPE_CLONES:
-		return "clones";
-		break;
-	case SEG_TYPE_LOCALS:
-		return "locals";
-		break;
-	case SEG_TYPE_STACK:
-		return "stack";
-		break;
-	case SEG_TYPE_HUNK:
-		return "hunk";
-		break;
-	case SEG_TYPE_LISTS:
-		return "lists";
-		break;
-	case SEG_TYPE_NODES:
-		return "nodes";
-		break;
-	case SEG_TYPE_DYNMEM:
-		return "dynmem";
-		break;
-#ifdef ENABLE_SCI32
-	case SEG_TYPE_ARRAY:
-		return "array";
-		break;
-	case SEG_TYPE_STRING:
-		return "string";
-		break;
-#endif
-	default:
-		error("Unknown SegmentObj type %d", type);
-		break;
-	}
-	return NULL;
-}
-
 SegmentRef SegmentObj::dereference(reg_t pointer) {
 	error("Error: Trying to dereference pointer %04x:%04x to inappropriate segment",
 		          PRINT_REG(pointer));
@@ -220,8 +178,6 @@ Common::Array<reg_t> CloneTable::listAllOutgoingReferences(reg_t addr) const {
 
 void CloneTable::freeAtAddress(SegManager *segMan, reg_t addr) {
 #ifdef GC_DEBUG
-	//	assert(addr.segment == _segId);
-
 	Object *victim_obj = &(_table[addr.offset]);
 
 	if (!(victim_obj->_flags & OBJECT_FLAG_FREED))
@@ -229,12 +185,11 @@ void CloneTable::freeAtAddress(SegManager *segMan, reg_t addr) {
 #ifdef GC_DEBUG_VERBOSE
 	else
 		warning("[GC-DEBUG] Clone %04x:%04x: Freeing", PRINT_REG(addr));
+
+	warning("[GC] Clone had pos %04x:%04x", PRINT_REG(victim_obj->pos));
 #endif
 #endif
-	/*
-		warning("[GC] Clone %04x:%04x: Freeing", PRINT_REG(addr));
-		warning("[GC] Clone had pos %04x:%04x", PRINT_REG(victim_obj->pos));
-	*/
+
 	freeEntry(addr.offset);
 }
 
@@ -251,7 +206,6 @@ reg_t LocalVariables::findCanonicAddress(SegManager *segMan, reg_t addr) const {
 
 Common::Array<reg_t> LocalVariables::listAllOutgoingReferences(reg_t addr) const {
 	Common::Array<reg_t> tmp;
-//	assert(addr.segment == _segId);
 
 	for (uint i = 0; i < _locals.size(); i++)
 		tmp.push_back(_locals[i]);
@@ -262,8 +216,7 @@ Common::Array<reg_t> LocalVariables::listAllOutgoingReferences(reg_t addr) const
 
 //-------------------- stack --------------------
 reg_t DataStack::findCanonicAddress(SegManager *segMan, reg_t addr) const {
-	addr.offset = 0;
-	return addr;
+	return make_reg(addr.segment, 0);
 }
 
 Common::Array<reg_t> DataStack::listAllOutgoingReferences(reg_t object) const {
@@ -327,8 +280,7 @@ Common::Array<reg_t> NodeTable::listAllOutgoingReferences(reg_t addr) const {
 //-------------------- dynamic memory --------------------
 
 reg_t DynMem::findCanonicAddress(SegManager *segMan, reg_t addr) const {
-	addr.offset = 0;
-	return addr;
+	return make_reg(addr.segment, 0);
 }
 
 Common::Array<reg_t> DynMem::listAllDeallocatable(SegmentId segId) const {
diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h
index 56a6c71..c3ce671 100644
--- a/engines/sci/engine/segment.h
+++ b/engines/sci/engine/segment.h
@@ -84,7 +84,6 @@ struct SegmentObj : public Common::Serializable {
 
 public:
 	static SegmentObj *createSegmentObj(SegmentType type);
-	static const char *getSegmentTypeName(SegmentType type);
 
 public:
 	SegmentObj(SegmentType type) : _type(type) {}






More information about the Scummvm-git-logs mailing list