summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emualloc.h
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2010-01-11 18:02:38 +0000
committer Aaron Giles <aaron@aarongiles.com>2010-01-11 18:02:38 +0000
commita9c5a5a27e0511163a774525f86cd9b66e497944 (patch)
tree758e84268350230cbb894d67b017ac1b300c9990 /src/emu/emualloc.h
parent2441940e7a1bdc7d637f6b01792846ee493291b9 (diff)
Fixed memory freeing so that is it released in the opposite order
it was originally allocated. Changed machine->region() to return a pointer to the now-public region_info class. Added new member function space() to the device_config, along with shorter constants to be used (AS_PROGRAM, AS_DATA, AS_IO). With no parameters, space() returns the first address space, which is commonly the only space present. Updated a few devices that referenced the old space[] array to call the new function instead. Added #define to emualloc to ensure delete can't be freely used.
Diffstat (limited to 'src/emu/emualloc.h')
-rw-r--r--src/emu/emualloc.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/emu/emualloc.h b/src/emu/emualloc.h
index b1a1fdf26ff..ebf6d44c190 100644
--- a/src/emu/emualloc.h
+++ b/src/emu/emualloc.h
@@ -64,11 +64,15 @@ private:
public:
resource_pool_item(void *_ptr, size_t _size)
: next(NULL),
+ ordered_next(NULL),
+ ordered_prev(NULL),
ptr(_ptr),
size(_size) { }
virtual ~resource_pool_item() { }
resource_pool_item * next;
+ resource_pool_item * ordered_next;
+ resource_pool_item * ordered_prev;
void * ptr;
size_t size;
};
@@ -138,8 +142,9 @@ public:
private:
static const int hash_prime = 193;
- resource_pool_item * hash[hash_prime];
osd_lock * listlock;
+ resource_pool_item * hash[hash_prime];
+ resource_pool_item * ordered_head;
};
@@ -219,4 +224,14 @@ void operator delete(void *ptr, const char *file, int line, const zeromem_t &);
void operator delete[](void *ptr, const char *file, int line, const zeromem_t &);
+
+/***************************************************************************
+ ADDITIONAL MACROS
+***************************************************************************/
+
+// disable direct deletion
+#define delete __error_use_pool_free_mechanisms__
+
+
+
#endif /* __EMUALLOC_H__ */