*
* Authors: Philipp Tomsich EMAIL: cacao@complang.tuwien.ac.at
*
- * $Id: bitmap2.c 34 1998-11-03 11:29:37Z phil $
+ * $Id: bitmap2.c 37 1998-11-04 12:39:19Z phil $
*/
/*
#include "bitmap2.h"
-
#warning "bitmap2.c untested in 32-bit mode -- phil."
/* FIXME: I haven't decided, whether to keep these macro definitions here or
/* Please note: All values are log2 */
#if U8_AVAILABLE
-# define POINTER_ALIGNMENT 3 /* alignment of pointers onto the
- heap == heapblocksize */
-# define BITBLOCK_SIZE 3 /* bytes/BITBLOCK */
+#define POINTER_ALIGNMENT 3 /* alignment of pointers onto the
+ heap == heapblocksize */
+#define BITBLOCK_SIZE 3 /* bytes/BITBLOCK */
#else
-# define POINTER_ALIGNMENT 2
-# define BITBLOCK_SIZE 2
+#define POINTER_ALIGNMENT 2
+#define BITBLOCK_SIZE 2
#endif
#define HEAPBLOCK_SIZE POINTER_ALIGNMENT
-#define BITS_PER_BYTE 3 /* actually quite self-explainatory */
+#define BITS_PER_BYTE 3 /* actually quite self-explanatory */
#define HEAPBLOCKS_PER_BITBLOCK (BITBLOCK_SIZE + BITS_PER_BYTE)
#define ADDR_TO_BLOCK(addr) ((OFFSET_T)(addr) >> (HEAPBLOCKS_PER_BITBLOCK + POINTER_ALIGNMENT))
*/
-inline
+__inline__
void bitmap_setbit(BITBLOCK* bitmap,
void* addr)
{
SETBIT(bitmap, addr);
}
-inline
+__inline__
void bitmap_clearbit(BITBLOCK* bitmap,
void* addr)
{
CLEARBIT(bitmap, addr);
}
-inline
+__inline__
bool bitmap_testbit(BITBLOCK* bitmap,
void* addr)
{
return TESTBIT(bitmap, addr);
}
-inline
+__inline__
static
void bitmap_boundscheck(bitmap_t* bitmap,
void* addr)
assert(addr < bitmap->bitmap_beyond_addr); /* a stricter way to check the upper bound */
}
-inline
+__inline__
void bitmap_checking_setbit(bitmap_t* bitmap,
void* addr)
{
bitmap_setbit(bitmap->bitmap, addr);
}
-inline
+__inline__
void bitmap_checking_clearbit(bitmap_t* bitmap,
void* addr)
{
bitmap_clearbit(bitmap->bitmap, addr);
}
-inline
+__inline__
bool bitmap_checking_testbit(bitmap_t* bitmap,
void* addr)
{
return bitmap_testbit(bitmap->bitmap, addr);
}
-inline
+__inline__
void bitmap_clear(bitmap_t* bitmap)
{
memset(bitmap->bitmap_memory, 0, bitmap->bytesize);
}
-inline
+__inline__
bitmap_t* bitmap_allocate(void* zero_addr,
OFFSET_T size)
{
return bitmap;
}
-inline
+__inline__
void bitmap_release(bitmap_t* bitmap)
{
if (bitmap) {
}
}
+
+__inline__
static
-inline
int offset_for_lowest(BITBLOCK i)
{
/* Maintainer, don't despair!
#endif
}
-inline
+__inline__
void*
bitmap_find_next_setbit(bitmap_t* bitmap,
void* addr)
return bitmap->bitmap_beyond_addr;
}
-inline
+__inline__
void*
bitmap_find_next_combination_set_unset(bitmap_t* bitmap,
bitmap_t* invertedmap,
/*
* cacao/mm/bitmap.h
- * $Id: bitmap2.h 34 1998-11-03 11:29:37Z phil $
+ * $Id: bitmap2.h 37 1998-11-04 12:39:19Z phil $
*/
#ifndef __mm_bitmap_h_
#include "mm.h"
+#ifdef __GNUC__
+#define __inline__ inline
+#else
+#define __inline__
+#endif
+
#if U8_AVAILABLE
# define BITBLOCK u8
# define OFFSET_T u8
void* bitmap_memory; /* internal: the real address */
} bitmap_t;
-inline void bitmap_setbit(BITBLOCK* bitmap, void* addr);
-inline void bitmap_clearbit(BITBLOCK* bitmap, void* addr);
-inline bool bitmap_testbit(BITBLOCK* bitmap, void* addr);
+__inline__ void bitmap_setbit(BITBLOCK* bitmap, void* addr);
+__inline__ void bitmap_clearbit(BITBLOCK* bitmap, void* addr);
+__inline__ bool bitmap_testbit(BITBLOCK* bitmap, void* addr);
-inline void bitmap_checking_setbit(bitmap_t* bitmap, void* addr);
-inline void bitmap_checking_clearbit(bitmap_t* bitmap, void* addr);
-inline bool bitmap_checking_testbit(bitmap_t* bitmap, void* addr);
+__inline__ void bitmap_checking_setbit(bitmap_t* bitmap, void* addr);
+__inline__ void bitmap_checking_clearbit(bitmap_t* bitmap, void* addr);
+__inline__ bool bitmap_checking_testbit(bitmap_t* bitmap, void* addr);
-inline void bitmap_clear(bitmap_t* bitmap);
-inline bitmap_t* bitmap_allocate(void* zero_offset, OFFSET_T size);
-inline void bitmap_release(bitmap_t* bitmap);
+__inline__ void bitmap_clear(bitmap_t* bitmap);
+__inline__ bitmap_t* bitmap_allocate(void* zero_offset, OFFSET_T size);
+__inline__ void bitmap_release(bitmap_t* bitmap);
-inline void* bitmap_find_next_setbit(bitmap_t* bitmap, void* addr);
-inline void* bitmap_find_next_combination_set_unset(bitmap_t* bitmap, bitmap_t* invertedmap, void* addr);
+__inline__ void* bitmap_find_next_setbit(bitmap_t* bitmap, void* addr);
+__inline__ void* bitmap_find_next_combination_set_unset(bitmap_t* bitmap, bitmap_t* invertedmap, void* addr);
#endif
* tab-width: 4
* End:
*/
+
+
+
+