INTEGRATION: CWS ooo64bit01 (1.14.36); FILE MERGED

2004/04/13 03:34:56 fa 1.14.36.2: #i8578#  Integrate 64-bit clean RTL alloc from port64bit
2004/03/16 23:54:13 fa 1.14.36.1: Merge cws_srx644_port64bit, other misc fixes
This commit is contained in:
Rüdiger Timm 2004-06-17 12:27:43 +00:00
parent ce4e7859ae
commit 3de089b001

View file

@ -2,9 +2,9 @@
*
* $RCSfile: alloc.c,v $
*
* $Revision: 1.14 $
* $Revision: 1.15 $
*
* last change: $Author: vg $ $Date: 2003-12-17 17:10:01 $
* last change: $Author: rt $ $Date: 2004-06-17 13:27:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@ -110,22 +110,22 @@ typedef pthread_mutex_t mutex_type;
#define RTL_MUTEX_RELEASE(a) pthread_mutex_unlock((a))
#if defined(FREEBSD) || defined(NETBSD) || defined(MACOSX)
static sal_uInt32 __rtl_memory_vmpagesize (void)
static sal_Size __rtl_memory_vmpagesize (void)
{
/* xBSD */
return (sal_uInt32)(getpagesize());
return (sal_Size)(getpagesize());
}
#elif defined(IRIX) || defined(LINUX) || defined(SOLARIS)
static sal_uInt32 __rtl_memory_vmpagesize (void)
static sal_Size __rtl_memory_vmpagesize (void)
{
/* POSIX */
return (sal_uInt32)(sysconf(_SC_PAGESIZE));
return (sal_Size)(sysconf(_SC_PAGESIZE));
}
#else
static sal_uInt32 __rtl_memory_vmpagesize (void)
static sal_Size __rtl_memory_vmpagesize (void)
{
/* other */
return (sal_uInt32)(0x2000);
return (sal_Size)(0x2000);
}
#endif /* FREEBSD || NETBSD || MACOSX || IRIX || LINUX || SOLARIS */
@ -142,7 +142,7 @@ static sal_uInt32 __rtl_memory_vmpagesize (void)
#endif
#ifndef MAP_ANON
static void* __rtl_memory_vmalloc (size_t n)
static void* __rtl_memory_vmalloc (sal_Size n)
{
/* SYSV */
int fd = open("/dev/zero", O_RDWR);
@ -155,7 +155,7 @@ static void* __rtl_memory_vmalloc (size_t n)
return (NULL);
}
#else /* MAP_ANON */
static void* __rtl_memory_vmalloc (size_t n)
static void* __rtl_memory_vmalloc (sal_Size n)
{
/* xBSD */
void * p = mmap(NULL, n, PROT_HEAP, MAP_PRIVATE | MAP_ANON, -1, 0);
@ -163,8 +163,8 @@ static void* __rtl_memory_vmalloc (size_t n)
}
#endif /* MAP_ANON */
#define RTL_MEMORY_ALLOC(n) __rtl_memory_vmalloc((size_t)(n))
#define RTL_MEMORY_FREE(p, n) munmap((void*)(p), (size_t)(n))
#define RTL_MEMORY_ALLOC(n) __rtl_memory_vmalloc((sal_Size)(n))
#define RTL_MEMORY_FREE(p, n) munmap((void*)(p), (sal_Size)(n))
#endif /* SAL_UNX */
@ -210,11 +210,11 @@ static void __rtl_mutex_init (LPCRITICAL_SECTION lpCriticalSection)
#define RTL_MUTEX_ACQUIRE(a) EnterCriticalSection((a))
#define RTL_MUTEX_RELEASE(a) LeaveCriticalSection((a))
static sal_uInt32 __rtl_memory_vmpagesize (void)
static sal_Size __rtl_memory_vmpagesize (void)
{
SYSTEM_INFO info;
GetSystemInfo (&info);
return ((sal_uInt32)(info.dwPageSize));
return ((sal_Size)(info.dwPageSize));
}
#define RTL_MEMORY_ALLOC(n) \
@ -235,18 +235,18 @@ static sal_uInt32 __rtl_memory_vmpagesize (void)
#define __N__ ((__L__) + (__P__))
#define __M__ 0x10000
static const size_t __T__ = (__M__) * 2 / 3;
static const sal_Size __T__ = (__M__) * 2 / 3;
typedef struct __rtl_memory_desc_st memory_type;
struct __rtl_memory_desc_st
{
size_t m_length;
size_t m_offset;
sal_Size m_length;
sal_Size m_offset;
memory_type *m_flink;
memory_type *m_blink;
};
static const int __C__ = 2 * sizeof(size_t);
static const int __C__ = 2 * sizeof(sal_Size);
static const int __Q__ = 2 * sizeof(memory_type*);
typedef struct __rtl_memory_stat_st memory_stat;
@ -266,19 +266,20 @@ struct __rtl_memory_stat_st
struct __rtl_memory_global_st
{
sal_uInt32 m_magic;
sal_uInt32 m_align;
sal_Size m_magic;
sal_Size m_align;
union {
mutex_type m_lock;
char m_data[RTL_MEMORY_SIZEOF(mutex_type)];
} m_mutex;
memory_type m_alloc_head;
memory_type m_queue_head[__N__];
memory_type m_alloc_head;
memory_type m_spare_head;
memory_type m_queue_head[__N__];
#if OSL_DEBUG_LEVEL > 0
memory_stat m_queue_stat[__N__];
memory_stat m_queue_stat[__N__];
#endif /* OSL_DEBUG_LEVEL */
};
@ -307,16 +308,16 @@ void SAL_CALL ___rtl_memory_fini (void);
*
*=========================================================================*/
#if defined(PROFILE) || (OSL_DEBUG_LEVEL > 0)
static size_t queue (size_t n)
static sal_Size queue (sal_Size n)
{
/* k = n div 8 = n div __C__ */
register size_t k = (n >> 3), m = __L__;
/* k = n div __C__ */
register sal_Size k = n / __C__, m = __L__;
OSL_PRECOND((__C__ == 8) && (__L__ == 32),
OSL_PRECOND((__L__ == 32),
"__rtl_memory_queue(): internal logic error");
if (k > m)
{
/* k = k div 32 = k div __L__ */
/* k = k div __L__ = k div 32 */
k >>= 5;
while ((k >>= 1) > 0) m++;
k = m;
@ -330,10 +331,10 @@ static size_t queue (size_t n)
#else /* PRODUCT */
#define queue(k, n) \
{ \
(k) = ((n) >> 3); \
(k) = ((n) / __C__); \
if ((k) > __L__) \
{ \
register size_t m = __L__; \
register sal_Size m = __L__; \
(k) >>= 5; \
while (((k) >>= 1) > 0) m++; \
(k) = m; \
@ -378,19 +379,19 @@ static size_t queue (size_t n)
#if OSL_DEBUG_LEVEL > 0
#define __dbg_memory_succ(entry, length) \
(memory_type*)((char*)((entry)) + ((length) & 0x7fffffff))
(memory_type*)((char*)((entry)) + ((length) & ~0x1))
#define __dbg_memory_pred(entry, offset) \
(memory_type*)((char*)((entry)) - ((offset) & 0x7fffffff))
(memory_type*)((char*)((entry)) - ((offset) & ~0x1))
#define __dbg_memory_ensure(entry) (!((size_t)(entry) & 0x7))
#define __dbg_memory_ensure(entry) (!((sal_Size)(entry) & 0x7))
/*
* __dbg_memory_dequeue.
*/
static void __dbg_memory_dequeue (size_t n)
static void __dbg_memory_dequeue (sal_Size n)
{
register size_t k = queue(n);
register sal_Size k = queue(n);
g_memory.m_queue_stat[k].m_dequeue += 1;
g_memory.m_queue_stat[k].m_delta_q += 1;
@ -402,9 +403,9 @@ static void __dbg_memory_dequeue (size_t n)
/*
* __dbg_memory_enqueue.
*/
static void __dbg_memory_enqueue (size_t n)
static void __dbg_memory_enqueue (sal_Size n)
{
register size_t k = queue(n);
register sal_Size k = queue(n);
g_memory.m_queue_stat[k].m_enqueue += 1;
g_memory.m_queue_stat[k].m_delta_q -= 1;
@ -447,17 +448,17 @@ static int __dbg_memory_verify_chain (memory_type * x)
OSL_ENSURE(0, "__rtl_memory_verify(): invalid pointer alignment.");
return (0);
}
if (!__dbg_memory_ensure(x->m_length))
if (!__dbg_memory_ensure(x->m_length & ~0x1))
{
OSL_ENSURE(0, "__rtl_memory_verify(): dynamic memory corruption");
return (0);
}
if (!__dbg_memory_ensure(x->m_offset))
if (!__dbg_memory_ensure(x->m_offset & ~0x1))
{
OSL_ENSURE(0, "__rtl_memory_verify(): dynamic memory corruption");
return (0);
}
if (!(x->m_length & 0x7fffffff))
if (!(x->m_length & ~0x1))
{
OSL_ENSURE(0, "__rtl_memory_verify(): dynamic memory corruption");
return (0);
@ -511,7 +512,7 @@ static int __dbg_memory_verify_alloc (memory_type * x)
if ((entry < x) && (x < __dbg_memory_succ(entry, entry->m_length)))
{
head = entry = __dbg_memory_succ(entry, sizeof(memory_type));
while (!((x == entry) || (entry->m_offset & 0x80000000)))
while (!((x == entry) || (entry->m_offset & 0x1)))
{
/* no match, not last */
if (!__dbg_memory_verify_chain (entry))
@ -553,7 +554,7 @@ static int __dbg_memory_verify (memory_type * x, int debug)
}
/* verify 'used' bit */
if (!(x->m_length & 0x80000000))
if (!(x->m_length & 0x1))
{
OSL_ENSURE(0, "__rtl_memory_verify(): memory not used.");
return (0);
@ -564,14 +565,14 @@ static int __dbg_memory_verify (memory_type * x, int debug)
/*
* __dbg_memory_usage_update.
*/
static size_t __dbg_memory_usage_update (memory_stat * stat, size_t length)
static sal_Size __dbg_memory_usage_update (memory_stat * stat, sal_Size length)
{
register size_t n = (length & 0x7fffffff), k = queue(n);
register sal_Size n = (length & ~0x1), k = queue(n);
stat[k].m_dequeue += 1;
stat[k].m_deqsize += n;
if (!(length & 0x80000000))
if (!(length & 0x1))
{
/* not used */
stat[k].m_enqueue += 1;
@ -600,10 +601,10 @@ static void __dbg_memory_usage (memory_stat * total)
head = entry = &(g_memory.m_alloc_head);
while (!((entry = entry->m_flink) == head))
{
register size_t k = 0, n = entry->m_length - sizeof(memory_type);
register sal_Size k = 0, n = entry->m_length - sizeof(memory_type);
memory = __dbg_memory_succ(entry, sizeof(memory_type));
while (!(memory->m_offset & 0x80000000))
while (!(memory->m_offset & 0x1))
{
/* not last */
k += __dbg_memory_usage_update (stat, memory->m_length);
@ -611,12 +612,12 @@ static void __dbg_memory_usage (memory_stat * total)
}
k += __dbg_memory_usage_update (stat, memory->m_length);
OSL_TRACE("%08x %10d %10d", (size_t)(entry), n, k);
OSL_TRACE("%x %10d %10d", (sal_Size)(entry), n, k);
}
if (total)
{
size_t i;
sal_Size i;
memset (total, 0, sizeof(memory_stat));
for (i = 0; i < __N__; i++)
@ -635,8 +636,8 @@ static void __dbg_memory_usage (memory_stat * total)
#endif /* OSL_DEBUG_LEVEL */
#if OSL_DEBUG_LEVEL > 0
#define DBG_MEMORY_DEQUEUE(n) __dbg_memory_dequeue((size_t)(n) & 0x7fffffff)
#define DBG_MEMORY_ENQUEUE(n) __dbg_memory_enqueue((size_t)(n) & 0x7fffffff)
#define DBG_MEMORY_DEQUEUE(n) __dbg_memory_dequeue((sal_Size)(n) & ~0x1)
#define DBG_MEMORY_ENQUEUE(n) __dbg_memory_enqueue((sal_Size)(n) & ~0x1)
#define DBG_MEMORY_DEQFILL(entry, offset, length) \
memset(((char*)(entry) + (offset)), 0x77777777, (length))
@ -680,10 +681,10 @@ static void __dbg_memory_usage (memory_stat * total)
#define queue_cast(entry, offset) \
((memory_type*)((char*)(entry) + (ptrdiff_t)(offset)))
#define __rtl_memory_used(entry) ((entry)->m_length & 0x80000000)
#define __rtl_memory_last(entry) ((entry)->m_offset & 0x80000000)
#define __rtl_memory_used(entry) ((entry)->m_length & 0x1)
#define __rtl_memory_last(entry) ((entry)->m_offset & 0x1)
#define __rtl_memory_offset(entry) \
((ptrdiff_t)((entry)->m_offset & 0x7fffffff))
((ptrdiff_t)((entry)->m_offset & ~0x1))
/*
* ___rtl_memory_init.
@ -697,17 +698,22 @@ void SAL_CALL ___rtl_memory_init (void)
RTL_MUTEX_ACQUIRE(&(g_memory.m_mutex.m_lock));
if (!(g_memory.m_align))
{
int i;
sal_Size pagesize;
int i;
queue_start (&(g_memory.m_alloc_head));
queue_start (&(g_memory.m_spare_head));
for (i = 0; i < __N__; i++)
queue_start (&(g_memory.m_queue_head[i]));
for (i = 1; i <= __L__; i++)
g_memory.m_queue_head[i].m_length = (i << 3);
for (i = 1; i < __P__; i++)
g_memory.m_queue_head[__L__ + i].m_length = ((1 << (i+5)) << 3);
g_memory.m_queue_head[i].m_length = i * __C__;
for (i = __L__ + 1; i < __N__; i++)
g_memory.m_queue_head[i].m_length =
2 * g_memory.m_queue_head[i - 1].m_length;
g_memory.m_align = __rtl_memory_vmpagesize();
pagesize = __rtl_memory_vmpagesize();
g_memory.m_align = RTL_MEMORY_ALIGN(__M__, pagesize);
}
RTL_MUTEX_RELEASE(&(g_memory.m_mutex.m_lock));
}
@ -784,7 +790,7 @@ static void __rtl_memory_split (memory_type * prev, memory_type * next)
/* propagate 'last' bit */
next->m_offset |= __rtl_memory_last(prev);
prev->m_offset &= ~0x80000000;
prev->m_offset &= ~0x1;
}
#else /* PRODUCT */
#define __rtl_memory_split(prev, next) \
@ -797,7 +803,7 @@ static void __rtl_memory_split (memory_type * prev, memory_type * next)
} \
\
(next)->m_offset |= __rtl_memory_last((prev)); \
(prev)->m_offset &= ~0x80000000; \
(prev)->m_offset &= ~0x1; \
}
#endif /* OSL_DEBUG_LEVEL || PRODUCT */
@ -805,7 +811,7 @@ static void __rtl_memory_split (memory_type * prev, memory_type * next)
* __rtl_memory_insert.
*/
#if defined(PROFILE) || (OSL_DEBUG_LEVEL > 0)
static void __rtl_memory_insert (memory_type * memory, size_t n)
static void __rtl_memory_insert (memory_type * memory, sal_Size n)
{
/* obtain queue head */
register memory_type *head;
@ -819,7 +825,7 @@ static void __rtl_memory_insert (memory_type * memory, size_t n)
#else /* PRODUCT */
#define __rtl_memory_insert(memory, n) \
{ \
register size_t h; \
register sal_Size h; \
\
queue(h, (n)); \
queue_insert_tail (&(g_memory.m_queue_head[h]), (memory)); \
@ -830,11 +836,11 @@ static void __rtl_memory_insert (memory_type * memory, size_t n)
* __rtl_memory_resize.
*/
#if defined(PROFILE) || (OSL_DEBUG_LEVEL > 0)
static void __rtl_memory_resize (memory_type * memory, size_t n)
static void __rtl_memory_resize (memory_type * memory, sal_Size n)
{
register size_t k = (memory->m_length - n);
register sal_Size k = (memory->m_length - n);
OSL_ENSURE(!(memory->m_length & 0x80000000),
OSL_ENSURE(!(memory->m_length & 0x1),
"__rtl_memory_resize(): "
"internal logic error.");
@ -870,7 +876,7 @@ static void __rtl_memory_resize (memory_type * memory, size_t n)
#else /* PRODUCT */
#define __rtl_memory_resize(memory, n) \
{ \
register size_t kn = ((memory)->m_length - (n)); \
register sal_Size kn = ((memory)->m_length - (n)); \
if ((kn >= sizeof(memory_type)) && (n <= __T__)) \
{ \
register memory_type * remain = queue_cast((memory), (n)); \
@ -887,10 +893,10 @@ static void __rtl_memory_resize (memory_type * memory, size_t n)
* __rtl_memory_dequeue.
*/
#if defined(PROFILE) || (OSL_DEBUG_LEVEL > 0)
static void __rtl_memory_dequeue (memory_type **ppMemory, size_t n)
static void __rtl_memory_dequeue (memory_type **ppMemory, sal_Size n)
{
register memory_type *head, *entry;
register size_t k, m = n;
register sal_Size k, m = n;
OSL_PRECOND(!*ppMemory, "__rtl_memory_dequeue(): internal logic error.");
for (k = queue(m); k < __N__; k++)
@ -914,6 +920,23 @@ static void __rtl_memory_dequeue (memory_type **ppMemory, size_t n)
}
}
head = &(g_memory.m_spare_head);
for (entry = head->m_flink; entry != head; entry = entry->m_flink)
{
/* queue not empty */
DBG_MEMORY_VERIFY_CHAIN (entry);
if (entry->m_length >= m)
{
/* remove entry */
DBG_MEMORY_VERIFY_QUEUE (entry);
queue_remove (entry);
/* assign result */
*ppMemory = entry;
goto dequeue_leave;
}
}
#if OSL_DEBUG_LEVEL > 0
/* adjust for DBG_MEMORY_INSERT() overhead */
m += sizeof(memory_type);
@ -923,7 +946,7 @@ static void __rtl_memory_dequeue (memory_type **ppMemory, size_t n)
if (!((entry = RTL_MEMORY_ALLOC(k)) == 0))
{
entry->m_length = k;
entry->m_offset = 0x80000000; /* set 'last' bit */
entry->m_offset = 0x1; /* set 'last' bit */
*ppMemory = entry;
DBG_MEMORY_INSERT(ppMemory);
@ -951,7 +974,7 @@ dequeue_leave:
#define __rtl_memory_dequeue(ppMemory, n, label) \
{ \
register memory_type *head, *entry; \
register size_t h, m = (n); \
register sal_Size h, m = (n); \
\
queue (h, m); \
for (; h < __N__; h++) \
@ -966,12 +989,22 @@ dequeue_leave:
} \
} \
} \
\
head = &(g_memory.m_spare_head); \
for (entry = head->m_flink; entry != head; entry = entry->m_flink) \
{ \
if (entry->m_length >= m) \
{ \
queue_remove (entry); \
goto label; \
} \
} \
\
h = RTL_MEMORY_ALIGN((m > __M__) ? m : __M__, g_memory.m_align); \
if (!((entry = RTL_MEMORY_ALLOC(h)) == 0)) \
{ \
entry->m_length = h; \
entry->m_offset = 0x80000000; \
entry->m_offset = 0x1; \
} \
\
label: \
@ -1048,16 +1081,28 @@ static void __rtl_memory_enqueue (memory_type **ppMemory)
}
}
if (!(head->m_offset == 0x80000000))
if (!(head->m_offset == 0x1))
{
/* page still used, enqueue */
__rtl_memory_insert (head, head->m_length);
(*ppMemory) = 0;
head = 0;
}
else
else if (head->m_length <= g_memory.m_align)
{
/* small page unused, check spare page */
register memory_type * spare;
spare = &(g_memory.m_spare_head);
if (spare->m_flink == spare)
{
/* keep as spare page */
queue_insert_tail (spare, head);
head = 0;
}
}
if ((*ppMemory = head) != 0)
{
/* page unused, remove */
(*ppMemory) = head;
DBG_MEMORY_REMOVE(ppMemory);
}
}
@ -1089,12 +1134,22 @@ static void __rtl_memory_enqueue (memory_type **ppMemory)
} \
} \
\
if (!(head->m_offset == 0x80000000)) \
if (!(head->m_offset == 0x1)) \
{ \
register memory_type * used = head; \
__rtl_memory_insert (used, used->m_length); \
head = 0; \
} \
else if (head->m_length <= g_memory.m_align) \
{ \
register memory_type * spare; \
spare = &(g_memory.m_spare_head); \
if (spare->m_flink == spare) \
{ \
queue_insert_tail (spare, head); \
head = 0; \
} \
} \
\
*(ppMemory) = head; \
}
@ -1111,13 +1166,13 @@ static void __rtl_memory_enqueue (memory_type **ppMemory)
* rtl_reallocateMemory.
*/
#ifndef FORCE_SYSALLOC
void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_reallocateMemory (void * p, sal_Size n) SAL_THROW_EXTERN_C()
{
memory_type * memory;
if (!(!p || !n))
{
/* reallocate */
register size_t datlen;
register sal_Size datlen;
memory = queue_cast(p, -(__C__)); p = 0;
n = RTL_MEMORY_ALIGN(n, __Q__) + __C__;
@ -1127,7 +1182,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
/* clear 'used' bit */
DBG_MEMORY_ENQUEUE (memory->m_length);
memory->m_length &= 0x7fffffff;
memory->m_length &= ~0x1;
/* amount of data to be moved or copied */
datlen = ((memory->m_length < n) ? memory->m_length : n);
@ -1187,7 +1242,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
{
/* adjust, set 'used' bit */
__rtl_memory_resize (memory, n);
memory->m_length |= 0x80000000;
memory->m_length |= 0x1;
/* assign result */
p = queue_cast(memory, __C__);
@ -1205,7 +1260,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
if (result)
{
/* set 'used' bit */
result->m_length |= 0x80000000;
result->m_length |= 0x1;
/* copy */
memcpy (
@ -1239,7 +1294,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
if (memory)
{
/* set 'used' bit */
memory->m_length |= 0x80000000;
memory->m_length |= 0x1;
/* assign result */
p = queue_cast(memory, __C__);
@ -1255,7 +1310,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
DBG_MEMORY_VERIFY(memory);
/* clear 'used' bit, enqueue */
memory->m_length &= 0x7fffffff;
memory->m_length &= ~0x1;
RTL_MEMORY_ENQUEUE (&memory);
if (memory)
@ -1268,9 +1323,9 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
return (p);
}
#else /* FORCE_SYSALLOC */
void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_reallocateMemory (void * p, sal_Size n) SAL_THROW_EXTERN_C()
{
return realloc(p, (size_t)(n));
return realloc(p, (sal_Size)(n));
}
#endif /* FORCE_SYSALLOC */
@ -1278,7 +1333,7 @@ void* SAL_CALL rtl_reallocateMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C(
* rtl_allocateMemory.
*/
#ifndef FORCE_SYSALLOC
void* SAL_CALL rtl_allocateMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_allocateMemory (sal_Size n) SAL_THROW_EXTERN_C()
{
void * p = 0;
if (n > 0)
@ -1291,7 +1346,7 @@ void* SAL_CALL rtl_allocateMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
if (memory)
{
/* set 'used' bit */
memory->m_length |= 0x80000000;
memory->m_length |= 0x1;
/* assign result */
p = queue_cast(memory, __C__);
@ -1301,9 +1356,9 @@ void* SAL_CALL rtl_allocateMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
return (p);
}
#else /* FORCE_SYSALLOC */
void* SAL_CALL rtl_allocateMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_allocateMemory (sal_Size n) SAL_THROW_EXTERN_C()
{
return malloc((size_t)(n));
return malloc((sal_Size)(n));
}
#endif /* FORCE_SYSALLOC */
@ -1321,7 +1376,7 @@ void SAL_CALL rtl_freeMemory (void * p) SAL_THROW_EXTERN_C()
DBG_MEMORY_VERIFY(memory);
/* clear 'used' bit, enqueue */
memory->m_length &= 0x7fffffff;
memory->m_length &= ~0x1;
RTL_MEMORY_ENQUEUE (&memory);
if (memory)
@ -1343,7 +1398,7 @@ void SAL_CALL rtl_freeMemory (void * p) SAL_THROW_EXTERN_C()
* rtl_allocateZeroMemory.
*/
#ifndef FORCE_SYSALLOC
void* SAL_CALL rtl_allocateZeroMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_allocateZeroMemory (sal_Size n) SAL_THROW_EXTERN_C()
{
void * p = 0;
if (n > 0)
@ -1357,7 +1412,7 @@ void* SAL_CALL rtl_allocateZeroMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
{
/* zero, set 'used' bit */
memset ((char*)memory + __C__, 0, memory->m_length - __C__);
memory->m_length |= 0x80000000;
memory->m_length |= 0x1;
/* assign result */
p = queue_cast(memory, __C__);
@ -1367,9 +1422,9 @@ void* SAL_CALL rtl_allocateZeroMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
return (p);
}
#else /* FORCE_SYSALLOC */
void* SAL_CALL rtl_allocateZeroMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
void* SAL_CALL rtl_allocateZeroMemory (sal_Size n) SAL_THROW_EXTERN_C()
{
return calloc((size_t)(n), 1);
return calloc((sal_Size)(n), 1);
}
#endif /* FORCE_SYSALLOC */
@ -1377,7 +1432,7 @@ void* SAL_CALL rtl_allocateZeroMemory (sal_uInt32 n) SAL_THROW_EXTERN_C()
* rtl_freeZeroMemory.
*/
#ifndef FORCE_SYSALLOC
void SAL_CALL rtl_freeZeroMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
void SAL_CALL rtl_freeZeroMemory (void * p, sal_Size n) SAL_THROW_EXTERN_C()
{
if (p)
{
@ -1387,7 +1442,7 @@ void SAL_CALL rtl_freeZeroMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
DBG_MEMORY_VERIFY(memory);
/* clear 'used' bit, zero, enqueue */
memory->m_length &= 0x7fffffff;
memory->m_length &= ~0x1;
memset ((char*)memory + __C__, 0, memory->m_length - __C__);
RTL_MEMORY_ENQUEUE (&memory); /* NYI: demand zero */
@ -1400,7 +1455,7 @@ void SAL_CALL rtl_freeZeroMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
}
}
#else /* FORCE_SYSALLOC */
void SAL_CALL rtl_freeZeroMemory (void * p, sal_uInt32 n) SAL_THROW_EXTERN_C()
void SAL_CALL rtl_freeZeroMemory (void * p, sal_Size n) SAL_THROW_EXTERN_C()
{
if (p)
{