[Scummvm-cvs-logs] SF.net SVN: scummvm:[39484] scummvm/trunk/engines/sci/engine

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Mar 17 17:07:58 CET 2009


Revision: 39484
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39484&view=rev
Author:   fingolfin
Date:     2009-03-17 16:07:58 +0000 (Tue, 17 Mar 2009)

Log Message:
-----------
SCI: Got rid of various SegManager::free_* methods

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/seg_manager.cpp
    scummvm/trunk/engines/sci/engine/seg_manager.h

Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-03-17 16:07:18 UTC (rev 39483)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp	2009-03-17 16:07:58 UTC (rev 39484)
@@ -1259,7 +1259,14 @@
 }
 
 void SegManager::free_hunk_entry(reg_t addr) {
-	free_Hunk(addr);
+	MemObject *mobj = GET_SEGMENT(*this, addr.segment, MEM_OBJ_HUNK);
+
+	if (!mobj) {
+		sciprintf("Attempt to free Hunk from address "PREG": Invalid segment type\n", PRINT_REG(addr));
+		return;
+	}
+
+	Sci::free_Hunk_entry(&(mobj->data.hunks), addr.offset);
 }
 
 Hunk *SegManager::alloc_hunk_entry(const char *hunk_type, int size, reg_t *reg) {
@@ -1290,7 +1297,7 @@
 DEFINE_HEAPENTRY_WITH_CLEANUP(Clone, 16, 4, _clone_cleanup)
 DEFINE_HEAPENTRY_WITH_CLEANUP(Hunk, 4, 4, _hunk_cleanup)
 
-#define DEFINE_ALLOC_DEALLOC(TYPE, SEGTYPE, PLURAL) \
+#define DEFINE_ALLOC(TYPE, SEGTYPE, PLURAL) \
 TYPE *SegManager::alloc_##TYPE(reg_t *addr) {											 \
 	MemObject *mobj;									  \
 	TYPE##Table *table;									  \
@@ -1307,24 +1314,14 @@
 												  \
 	*addr = make_reg(TYPE##s_seg_id, offset);						  \
 	return &(mobj->data.PLURAL.table[offset].entry);					  \
-}												  \
-												  \
-void	SegManager::free_##TYPE(reg_t addr) {					  \
-	MemObject *mobj = GET_SEGMENT(*this, addr.segment, SEGTYPE);				  \
-												  \
-	if (!mobj) {										  \
-		sciprintf("Attempt to free " #TYPE " from address "PREG": Invalid segment type\n", PRINT_REG(addr));							  \
-		return;										  \
-	}											  \
-												  \
-	Sci::free_##TYPE##_entry(&(mobj->data.PLURAL), addr.offset);					  \
 }
 
-DEFINE_ALLOC_DEALLOC(Clone, MEM_OBJ_CLONES, clones)
-DEFINE_ALLOC_DEALLOC(List, MEM_OBJ_LISTS, lists)
-DEFINE_ALLOC_DEALLOC(Node, MEM_OBJ_NODES, nodes)
-DEFINE_ALLOC_DEALLOC(Hunk, MEM_OBJ_HUNK, hunks)
+DEFINE_ALLOC(Clone, MEM_OBJ_CLONES, clones)
+DEFINE_ALLOC(List, MEM_OBJ_LISTS, lists)
+DEFINE_ALLOC(Node, MEM_OBJ_NODES, nodes)
+DEFINE_ALLOC(Hunk, MEM_OBJ_HUNK, hunks)
 
+
 byte *SegManager::dereference(reg_t pointer, int *size) {
 	MemObject *mobj;
 	byte *base = NULL;
@@ -1600,7 +1597,7 @@
 	*/
 	free(victim_obj->variables);
 	victim_obj->variables = NULL;
-	_segmgr->free_Clone(addr);
+	Sci::free_Clone_entry(&(_mobj->data.clones), addr.offset);
 }
 
 
@@ -1689,7 +1686,7 @@
 };
 
 void SegInterfaceLists::freeAtAddress(reg_t sub_addr) {
-	_segmgr->free_List(sub_addr);
+	Sci::free_List_entry(&(_mobj->data.lists), sub_addr.offset);
 }
 
 void SegInterfaceLists::listAllDeallocatable(void *param, void (*note)(void*param, reg_t addr)) {
@@ -1723,7 +1720,7 @@
 };
 
 void SegInterfaceNodes::freeAtAddress(reg_t sub_addr) {
-	_segmgr->free_Node(sub_addr);
+	Sci::free_Node_entry(&(_mobj->data.nodes), sub_addr.offset);
 }
 
 void SegInterfaceNodes::listAllDeallocatable(void *param, void (*note)(void*param, reg_t addr)) {

Modified: scummvm/trunk/engines/sci/engine/seg_manager.h
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.h	2009-03-17 16:07:18 UTC (rev 39483)
+++ scummvm/trunk/engines/sci/engine/seg_manager.h	2009-03-17 16:07:58 UTC (rev 39484)
@@ -255,11 +255,7 @@
 	//           (reg_t) *addr: The offset of the freshly allocated clone
 	Clone *alloc_Clone(reg_t *addr);
 
-	// Deallocates a Clone
-	// Parameters: (reg_t) addr: Offset of the Clone scheduled for termination
-	void free_Clone(reg_t addr);
 
-
 	// 3. Objects (static, from Scripts, and dynmic, from Clones)
 
 	// Not all of these functions are fully operational for clones ATM
@@ -319,20 +315,12 @@
 	//           (reg_t) *addr: The offset of the freshly allocated list
 	List *alloc_List(reg_t *addr);
 
-	// Deallocates a list
-	// Parameters: (reg_t) addr: Offset of the list scheduled for termination
-	void free_List(reg_t addr);
-
 	// Allocate a fresh node
 	// Returns : (node_t*): Reference to the memory allocated for the node
 	//           (reg_t) *addr: The offset of the freshly allocated node
 	Node *alloc_Node(reg_t *addr);
 
-	// Deallocates a list node
-	// Parameters: (reg_t) addr: Offset of the node scheduled for termination
-	void free_Node(reg_t addr);
 
-
 	// 8. Hunk Memory
 
 	// Allocate a fresh chunk of the hunk
@@ -429,7 +417,6 @@
 	int deallocate(int seg, bool recursive);
 
 	Hunk *alloc_Hunk(reg_t *);
-	void free_Hunk(reg_t addr);
 
 	int relocateLocal(Script *scr, SegmentId segment, int location);
 	int relocateBlock(reg_t *block, int block_location, int block_items, SegmentId segment, int location);


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